Adding JMCR-Stable version
[Benchmarks_CSolver.git] / JMCR-Stable / real-world application / MyDerby-10.3 / java / engine / org / apache / derby / iapi / services / monitor / ModuleControl.java
diff --git a/JMCR-Stable/real-world application/MyDerby-10.3/java/engine/org/apache/derby/iapi/services/monitor/ModuleControl.java b/JMCR-Stable/real-world application/MyDerby-10.3/java/engine/org/apache/derby/iapi/services/monitor/ModuleControl.java
new file mode 100644 (file)
index 0000000..3ea08f8
--- /dev/null
@@ -0,0 +1,100 @@
+/*\r
+\r
+   Derby - Class org.apache.derby.iapi.services.monitor.ModuleControl\r
+\r
+   Licensed to the Apache Software Foundation (ASF) under one or more\r
+   contributor license agreements.  See the NOTICE file distributed with\r
+   this work for additional information regarding copyright ownership.\r
+   The ASF licenses this file to you under the Apache License, Version 2.0\r
+   (the "License"); you may not use this file except in compliance with\r
+   the License.  You may obtain a copy of the License at\r
+\r
+      http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+   Unless required by applicable law or agreed to in writing, software\r
+   distributed under the License is distributed on an "AS IS" BASIS,\r
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+   See the License for the specific language governing permissions and\r
+   limitations under the License.\r
+\r
+ */\r
+\r
+package org.apache.derby.iapi.services.monitor;\r
+\r
+import java.util.Properties;\r
+import org.apache.derby.iapi.error.StandardException;\r
+\r
+/**\r
+       ModuleControl is <B>optionally</B> implemented by a module's factory class.\r
+*/\r
+\r
+public interface ModuleControl {\r
+\r
+       /**\r
+               Boot this module with the given properties. Creates a module instance\r
+               that can be found using the findModule() methods of Monitor.\r
+               The module can only be found using one of these findModule() methods\r
+               once this method has returned.\r
+               <P>\r
+               An implementation's boot method can throw StandardException. If it\r
+               is thrown the module is not registered by the monitor and therefore cannot\r
+               be found through a findModule(). In this case the module's stop() method\r
+               is not called, thus throwing this exception must free up any\r
+               resources.\r
+               <P>\r
+               When create is true the contents of the properties object\r
+               will be written to the service.properties of the persistent\r
+               service. Thus any code that requires an entry in service.properties\r
+               must <B>explicitly</B> place the value in this properties set\r
+               using the put method.\r
+               <BR>\r
+               Typically the properties object contains one or more default\r
+               properties sets, which are not written out to service.properties.\r
+               These default sets are how callers modify the create process. In a\r
+               JDBC connection database create the first set of defaults is a properties\r
+               object that contains the attributes that were set on the jdbc:derby: URL.\r
+               This attributes properties set has the second default properties set as\r
+               its default. This set (which could be null) contains the properties\r
+               that the user set on their DriverManager.getConnection() call, and are thus\r
+               not owned by Derby code, and thus must not be modified by Derby \r
+               code.\r
+               <P>\r
+               When create is false the properties object contains all the properties\r
+               set in the service.properties file plus a <B>limited</B> number of\r
+               attributes from the JDBC URL attributes or connection properties set.\r
+               This avoids properties set by the user compromising the boot process.\r
+               An example of a property passed in from the JDBC world is the bootPassword\r
+               for encrypted databases.\r
+\r
+               <P>\r
+               Code should not hold onto the passed in properties reference after boot time\r
+               as its contents may change underneath it. At least after the complete boot\r
+               is completed, the links to all the default sets will be removed.\r
+\r
+               @exception StandardException Module cannot be started.\r
+\r
+               @see Monitor\r
+               @see ModuleFactory\r
+               \r
+       */\r
+\r
+       public void boot(boolean create, Properties properties)\r
+               throws StandardException;\r
+\r
+       /**\r
+               Stop the module.\r
+\r
+               The module may be found via a findModule() method until some time after\r
+               this method returns. Therefore the factory must be prepared to reject requests\r
+               to it once it has been stopped. In addition other modules may cache a reference\r
+               to the module and make requests of it after it has been stopped, these requests\r
+               should be rejected as well.\r
+\r
+               @see Monitor\r
+               @see ModuleFactory\r
+       */\r
+\r
+       public void stop();\r
+\r
+\r
+}\r