org.apache.derby.impl.services.monitor
Class BaseMonitor

java.lang.Object
  extended byorg.apache.derby.impl.services.monitor.BaseMonitor
All Implemented Interfaces:
BundleFinder, ModuleFactory
Direct Known Subclasses:
FileMonitor

public abstract class BaseMonitor
extends java.lang.Object
implements ModuleFactory, BundleFinder

Implementation of the monitor that uses the class loader that the its was loaded in for all class loading.


Nested Class Summary
(package private)  class BaseMonitor.ProviderEnumeration
           
 
Field Summary
protected  java.util.Properties applicationProperties
           
protected  java.util.Properties bootProperties
           
private  ContextService contextService
           
protected  java.lang.ThreadGroup daemonGroup
           
(package private)  AntiGC dontGC
           
private  boolean dumpedTempWriter
           
private  java.lang.Boolean exceptionTrace
           
protected  java.util.Vector[] implementationSets
           
(package private)  boolean inShutdown
           
private  java.io.PrintStream logging
           
private  InstanceGetter[] rc2
           
protected  boolean reportOn
           
private static java.lang.String SERVICE
          Look for any services in the a properties set and the application property set and then start them.
protected  java.util.Hashtable serviceProviders
          Hashtable of objects that implement PersistentService keyed by their getType() method.
private  java.util.Vector services
           
private static java.util.HashMap storageFactories
           
private  InfoStreams systemStreams
           
private  AccessibleByteArrayOutputStream tmpArray
           
private  java.io.PrintWriter tmpWriter
           
private  UUIDFactory uuidFactory
           
 
Constructor Summary
BaseMonitor()
           
 
Method Summary
private  void addDebugFlags(java.lang.String flags, boolean set)
           
protected abstract  java.io.InputStream applicationPropertiesStream()
          Get InputStream for application properties file Returns nul if it does not exist.
(package private) static void boot(java.lang.Object module, boolean create, java.util.Properties properties)
          Boot a module.
protected  void bootPersistentServices()
          Boot all persistent services that can be located at run time.
protected  void bootProviderServices(PersistentService provider)
          Boot all persistent services that can be located by a single service provider
This method enumerates through all the service providers that are active and calls bootPersistentServices(PersistentService) to boot all the services that that provider knows about.
protected  java.lang.Object bootService(PersistentService provider, java.lang.String factoryInterface, java.lang.String serviceName, java.util.Properties properties, boolean create)
          Boot (start or create) a service (persistent or non-persistent).
protected  void bootServiceProviders()
          Boot all the service providers, ie. any module that implemented PersistentService.
(package private) static boolean canSupport(java.lang.Object instance, java.util.Properties properties)
          If the module implements ModuleSupportable then call its canSupport() method to see if it can or should run in this setup.
 InstanceGetter classFromIdentifier(int fmtId)
          Obtain a class that supports the given identifier.
 java.lang.Object createPersistentService(java.lang.String factoryInterface, java.lang.String name, java.util.Properties properties)
          Create a persistent service.
(package private)  void dumpProperties(java.lang.String title, java.util.Properties props)
           
private  void dumpTempWriter(boolean bothPlaces)
           
private static int findImplementation(java.util.Vector implementations, int startIndex, java.lang.Class factoryInterface)
          Find a class that implements the required index, return the index into the implementations vecotr of that class.
 java.lang.Object findModule(java.lang.Object serviceModule, java.lang.String factoryInterface, java.lang.String identifier)
          Find the module in the system with the given module protocol, protocolVersion and identifier.
protected  PersistentService findProvider()
           
protected  boolean findProviderAndStartService(java.lang.String name, java.util.Properties properties, boolean bootTime)
          Find a provider and start a service.
protected  PersistentService findProviderForCreate(java.util.Properties startParams, java.lang.String name)
           
private  PersistentService findProviderFromName(java.util.Properties startParams, java.lang.String name, int colon)
          Find the service provider from a name that includes a service type, ie. is of the form 'type:name'.
 java.lang.Object findService(java.lang.String factoryInterface, java.lang.String serviceName)
          Find a service.
private  TopService findTopService(java.lang.Object serviceModule)
           
 java.util.Properties getApplicationProperties()
           
 java.util.ResourceBundle getBundle(java.lang.String messageId)
          Get the locale from the ContextManager and then find the bundle based upon that locale.
 java.lang.Thread getDaemonThread(java.lang.Runnable task, java.lang.String name, boolean setMinPriority)
          Get a newly created background thread.
protected  java.util.Vector getDefaultImplementations()
           
protected  java.util.Vector getImplementations(java.util.Properties moduleList, boolean actualModuleList)
          Create an implementation set.
 java.util.Locale getLocale(java.lang.Object serviceModule)
          Return the locale of the service that the passed in module lives in.
 java.util.Locale getLocaleFromString(java.lang.String localeDescription)
          Translate a string of the form ll[_CC[_variant]] to a Locale.
private  PersistentService getPersistentService(java.util.Properties properties, java.lang.String subSubProtocol)
           
private  PersistentService getPersistentService(java.lang.String className, java.lang.String subSubProtocol)
           
private  boolean getPersistentServiceImplementation(java.lang.Class possibleModule)
           
 java.lang.String[] getServiceList(java.lang.String protocol)
          Return an array of the service identifiers that are running and implement the passed in protocol (java interface class name).
 java.lang.String getServiceName(java.lang.Object serviceModule)
          Return the name of the service that the passed in module lives in.
 PersistentService getServiceProvider(java.util.Properties startParams, java.lang.String subSubProtocol)
          Return the PersistentService for a subsubprotocol.
 PersistentService getServiceType(java.lang.Object serviceModule)
          Return the PersistentService object for a service.
private  java.lang.String getStorageFactoryClassName(java.util.Properties properties, java.lang.String subSubProtocol)
           
 InfoStreams getSystemStreams()
          Get the defined default system streams object.
private  java.io.PrintWriter getTempWriter()
           
 UUIDFactory getUUIDFactory()
          Return the UUID factory for this system.
abstract  boolean initialize(boolean lite)
          Initialize the monitor wrt the current environemnt.
protected  java.lang.Object loadInstance(java.lang.Class factoryInterface, java.util.Properties properties)
          load a module instance.
private  java.lang.Object loadInstance(java.util.Vector implementations, java.lang.Class factoryInterface, java.util.Properties properties)
           
protected  java.io.InputStream loadModuleDefinitions(java.net.URL propertyFileURL)
           
private  java.lang.Object newInstance(java.lang.Class classObject)
           
private  java.lang.Object newInstance(java.lang.String className)
           
 java.lang.Object newInstanceFromIdentifier(int identifier)
          Obtain an new instance of a class that supports the given identifier.
protected  java.util.Properties readApplicationProperties()
           
 void removePersistentService(java.lang.String name)
           
protected static java.util.Properties removeRuntimeProperties(java.util.Properties properties)
          Return a property set that has the runtime properties removed.
protected  void report(java.lang.String message)
          Should only be called if reportOn is true apart from report/Exception().
protected  void reportException(java.lang.Throwable t)
           
protected  void runWithState(java.util.Properties properties, java.io.PrintStream log)
           
 java.util.Locale setLocale(java.lang.Object serviceModule, java.lang.String userDefinedLocale)
          Set the locale for the service *outside* of boot time.
private static java.util.Locale setLocale(java.util.Properties properties)
           
 java.util.Locale setLocale(java.util.Properties serviceProperties, java.lang.String userDefinedLocale)
          Set the locale for the service at boot time.
 void setThreadPriority(int priority)
          Set the priority of the current thread.
 void shutdown()
          Shut down the complete system that was started by this Monitor.
 void shutdown(java.lang.Object serviceModule)
          Shut down a service that was started by this Monitor.
 java.lang.Object startModule(boolean create, java.lang.Object serviceModule, java.lang.String factoryInterface, java.lang.String identifier, java.util.Properties properties)
          Start a module.
 java.lang.Object startNonPersistentService(java.lang.String factoryInterface, java.lang.String serviceName, java.util.Properties properties)
          Start a non-persistent service.
 boolean startPersistentService(java.lang.String name, java.util.Properties properties)
          Start a peristent service.
protected  boolean startPersistentService(java.lang.String name, java.util.Properties properties, boolean bootTime)
           
protected  void startProviderService(PersistentService provider, java.lang.String serviceName, java.util.Properties serviceProperties)
          Boot a service under the control of the provider
 void startServices(java.util.Properties properties, boolean bootAll)
          Start all services identified by derby.service.* in the property set.
private static java.util.Locale staticGetLocaleFromString(java.lang.String localeDescription)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.derby.iapi.services.monitor.ModuleFactory
getEngineVersion, getEnvironment, getJVMProperty
 

Field Detail

serviceProviders

protected java.util.Hashtable serviceProviders
Hashtable of objects that implement PersistentService keyed by their getType() method.


implementationSets

protected java.util.Vector[] implementationSets

services

private java.util.Vector services

bootProperties

protected java.util.Properties bootProperties

applicationProperties

protected java.util.Properties applicationProperties

inShutdown

boolean inShutdown

systemStreams

private InfoStreams systemStreams

contextService

private ContextService contextService

uuidFactory

private UUIDFactory uuidFactory

reportOn

protected boolean reportOn

logging

private java.io.PrintStream logging

daemonGroup

protected java.lang.ThreadGroup daemonGroup

dontGC

AntiGC dontGC

rc2

private InstanceGetter[] rc2

exceptionTrace

private java.lang.Boolean exceptionTrace

SERVICE

private static final java.lang.String SERVICE
Look for any services in the a properties set and the application property set and then start them. A service is defined by derby.service.name=protocol

See Also:
Constant Field Values

storageFactories

private static final java.util.HashMap storageFactories

tmpWriter

private java.io.PrintWriter tmpWriter

tmpArray

private AccessibleByteArrayOutputStream tmpArray

dumpedTempWriter

private boolean dumpedTempWriter
Constructor Detail

BaseMonitor

public BaseMonitor()
Method Detail

getSystemStreams

public InfoStreams getSystemStreams()
Description copied from interface: ModuleFactory
Get the defined default system streams object.

Specified by:
getSystemStreams in interface ModuleFactory

shutdown

public void shutdown()
Description copied from interface: ModuleFactory
Shut down the complete system that was started by this Monitor. Will cause the stop() method to be called on each loaded module.

Specified by:
shutdown in interface ModuleFactory

shutdown

public void shutdown(java.lang.Object serviceModule)
Shut down a service that was started by this Monitor. Will cause the stop() method to be called on each loaded module.

Specified by:
shutdown in interface ModuleFactory

runWithState

protected final void runWithState(java.util.Properties properties,
                                  java.io.PrintStream log)

findService

public java.lang.Object findService(java.lang.String factoryInterface,
                                    java.lang.String serviceName)
Description copied from interface: ModuleFactory
Find a service.
Do not call directly - use Monitor.findService()

Specified by:
findService in interface ModuleFactory
Returns:
a refrence to a module represeting the service or null if the service does not exist.
See Also:
Monitor.findService(java.lang.String, java.lang.String)

getLocale

public java.util.Locale getLocale(java.lang.Object serviceModule)
Description copied from interface: ModuleFactory
Return the locale of the service that the passed in module lives in. Will return null if no-locale has been defined.

Specified by:
getLocale in interface ModuleFactory

getLocaleFromString

public java.util.Locale getLocaleFromString(java.lang.String localeDescription)
                                     throws StandardException
Description copied from interface: ModuleFactory
Translate a string of the form ll[_CC[_variant]] to a Locale. This is in the Monitor because we want this translation to be in only one place in the code.

Specified by:
getLocaleFromString in interface ModuleFactory
Throws:
StandardException

getServiceName

public java.lang.String getServiceName(java.lang.Object serviceModule)
Return the name of the service that the passed in module lives in.

Specified by:
getServiceName in interface ModuleFactory

setLocale

public java.util.Locale setLocale(java.lang.Object serviceModule,
                                  java.lang.String userDefinedLocale)
                           throws StandardException
Set the locale for the service *outside* of boot time.

Specified by:
setLocale in interface ModuleFactory
Parameters:
userDefinedLocale - A String in the form xx_YY, where xx is the language code and YY is the country code.
Returns:
The new Locale for the service
Throws:
StandardException - Standard Cloudscape error.

setLocale

public java.util.Locale setLocale(java.util.Properties serviceProperties,
                                  java.lang.String userDefinedLocale)
                           throws StandardException
Set the locale for the service at boot time. The passed in properties must be the one passed to the boot method.

Specified by:
setLocale in interface ModuleFactory
Throws:
StandardException - Standard Cloudscape error.

getServiceType

public PersistentService getServiceType(java.lang.Object serviceModule)
Return the PersistentService object for a service. Will return null if the service does not exist.

Specified by:
getServiceType in interface ModuleFactory

startModule

public java.lang.Object startModule(boolean create,
                                    java.lang.Object serviceModule,
                                    java.lang.String factoryInterface,
                                    java.lang.String identifier,
                                    java.util.Properties properties)
                             throws StandardException
Start a module.

Specified by:
startModule in interface ModuleFactory
Throws:
StandardException - se An attempt to start the module failed.
See Also:
ModuleFactory.startModule(boolean, java.lang.Object, java.lang.String, java.lang.String, java.util.Properties)

findTopService

private TopService findTopService(java.lang.Object serviceModule)

findModule

public java.lang.Object findModule(java.lang.Object serviceModule,
                                   java.lang.String factoryInterface,
                                   java.lang.String identifier)
Description copied from interface: ModuleFactory
Find the module in the system with the given module protocol, protocolVersion and identifier.

Specified by:
findModule in interface ModuleFactory
Returns:
The module instance if found, or null.

classFromIdentifier

public InstanceGetter classFromIdentifier(int fmtId)
                                   throws StandardException
Obtain a class that supports the given identifier.

Specified by:
classFromIdentifier in interface ModuleFactory
Parameters:
fmtId - identifer to associate with class
Returns:
a reference InstanceGetter
Throws:
StandardException - See Monitor.classFromIdentifier
See Also:
ModuleFactory.classFromIdentifier(int)

newInstanceFromIdentifier

public java.lang.Object newInstanceFromIdentifier(int identifier)
                                           throws StandardException
Obtain an new instance of a class that supports the given identifier.

Specified by:
newInstanceFromIdentifier in interface ModuleFactory
Parameters:
identifier - identifer to associate with class
Returns:
a reference to a newly created object or null if a matching class cannot be found.
Throws:
StandardException - See Monitor.newInstanceFromIdentifier

loadInstance

protected java.lang.Object loadInstance(java.lang.Class factoryInterface,
                                        java.util.Properties properties)
load a module instance. Look through the implementations for a module that implements the required factory interface and can handle the properties given. The module's start or create method is not called.


loadInstance

private java.lang.Object loadInstance(java.util.Vector implementations,
                                      java.lang.Class factoryInterface,
                                      java.util.Properties properties)

findImplementation

private static int findImplementation(java.util.Vector implementations,
                                      int startIndex,
                                      java.lang.Class factoryInterface)
Find a class that implements the required index, return the index into the implementations vecotr of that class. Returns -1 if no class could be found.


newInstance

private java.lang.Object newInstance(java.lang.String className)

newInstance

private java.lang.Object newInstance(java.lang.Class classObject)

getApplicationProperties

public java.util.Properties getApplicationProperties()
Specified by:
getApplicationProperties in interface ModuleFactory

getServiceList

public java.lang.String[] getServiceList(java.lang.String protocol)
Return an array of the service identifiers that are running and implement the passed in protocol (java interface class name).

Specified by:
getServiceList in interface ModuleFactory
Returns:
The list of service names, if no services exist that implement the protocol an array with zero elements is returned.
See Also:
ModuleFactory.getServiceList(java.lang.String)

dumpProperties

void dumpProperties(java.lang.String title,
                    java.util.Properties props)

report

protected void report(java.lang.String message)
Should only be called if reportOn is true apart from report/Exception().


reportException

protected void reportException(java.lang.Throwable t)

addDebugFlags

private void addDebugFlags(java.lang.String flags,
                           boolean set)

startServices

public void startServices(java.util.Properties properties,
                          boolean bootAll)
Description copied from interface: ModuleFactory
Start all services identified by derby.service.* in the property set. If bootAll is true the services that are persistent will be booted.

Specified by:
startServices in interface ModuleFactory

startPersistentService

public boolean startPersistentService(java.lang.String name,
                                      java.util.Properties properties)
                               throws StandardException
Start a peristent service.

Specified by:
startPersistentService in interface ModuleFactory
Returns:
true if the service type is handled by the monitor, false if it isn't
Throws:
StandardException - An attempt to start the service failed.
See Also:
ModuleFactory.startPersistentService(java.lang.String, java.util.Properties), Monitor.startPersistentService(java.lang.String, java.util.Properties)

startPersistentService

protected boolean startPersistentService(java.lang.String name,
                                         java.util.Properties properties,
                                         boolean bootTime)
                                  throws StandardException
Throws:
StandardException

createPersistentService

public java.lang.Object createPersistentService(java.lang.String factoryInterface,
                                                java.lang.String name,
                                                java.util.Properties properties)
                                         throws StandardException
Create a persistent service.

Specified by:
createPersistentService in interface ModuleFactory
Returns:
The module from the service if it was created successfully, null if a service already existed.
Throws:
StandardException - An exception was thrown trying to create the service.
See Also:
Monitor.createPersistentService(java.lang.String, java.lang.String, java.util.Properties)

removePersistentService

public void removePersistentService(java.lang.String name)
                             throws StandardException
Specified by:
removePersistentService in interface ModuleFactory
Throws:
StandardException

startNonPersistentService

public java.lang.Object startNonPersistentService(java.lang.String factoryInterface,
                                                  java.lang.String serviceName,
                                                  java.util.Properties properties)
                                           throws StandardException
Start a non-persistent service.

Specified by:
startNonPersistentService in interface ModuleFactory
Throws:
StandardException - An attempt to start the service failed.
See Also:
Monitor.startNonPersistentService(java.lang.String, java.lang.String, java.util.Properties), ModuleFactory.startNonPersistentService(java.lang.String, java.lang.String, java.util.Properties)

getImplementations

protected java.util.Vector getImplementations(java.util.Properties moduleList,
                                              boolean actualModuleList)
Create an implementation set. Look through the properties object for all properties that start with derby.module and add the value into the vector. If no implementations are listed in the properties object then null is returned.


getPersistentServiceImplementation

private boolean getPersistentServiceImplementation(java.lang.Class possibleModule)

getDefaultImplementations

protected java.util.Vector getDefaultImplementations()

loadModuleDefinitions

protected java.io.InputStream loadModuleDefinitions(java.net.URL propertyFileURL)
                                             throws java.io.IOException
Throws:
java.io.IOException

removeRuntimeProperties

protected static java.util.Properties removeRuntimeProperties(java.util.Properties properties)
Return a property set that has the runtime properties removed.


applicationPropertiesStream

protected abstract java.io.InputStream applicationPropertiesStream()
                                                            throws java.io.IOException
Get InputStream for application properties file Returns nul if it does not exist.

Throws:
java.io.IOException

readApplicationProperties

protected java.util.Properties readApplicationProperties()

bootServiceProviders

protected void bootServiceProviders()
Boot all the service providers, ie. any module that implemented PersistentService. Upon entry to this call is the hashtable has PersistentService objects that have been created but not booted.


bootPersistentServices

protected void bootPersistentServices()
Boot all persistent services that can be located at run time.
This method enumerates through all the service providers that are active and calls bootPersistentServices(PersistentService) to boot all the services that that provider knows about.


bootProviderServices

protected void bootProviderServices(PersistentService provider)
Boot all persistent services that can be located by a single service provider
This method enumerates through all the service providers that are active and calls bootPersistentServices(PersistentService) to boot all the services that that provider knows about.


findProviderAndStartService

protected boolean findProviderAndStartService(java.lang.String name,
                                              java.util.Properties properties,
                                              boolean bootTime)
                                       throws StandardException
Find a provider and start a service.

Throws:
StandardException

findProvider

protected PersistentService findProvider()
                                  throws StandardException
Throws:
StandardException

findProviderForCreate

protected PersistentService findProviderForCreate(java.util.Properties startParams,
                                                  java.lang.String name)
                                           throws StandardException
Throws:
StandardException

findProviderFromName

private PersistentService findProviderFromName(java.util.Properties startParams,
                                               java.lang.String name,
                                               int colon)
                                        throws StandardException
Find the service provider from a name that includes a service type, ie. is of the form 'type:name'. If type is less than 3 chanacters then it is assumed to be of type directory, i.e. a windows driver letter.

Throws:
StandardException

getServiceProvider

public PersistentService getServiceProvider(java.util.Properties startParams,
                                            java.lang.String subSubProtocol)
                                     throws StandardException
Description copied from interface: ModuleFactory
Return the PersistentService for a subsubprotocol.

Specified by:
getServiceProvider in interface ModuleFactory
Returns:
the PersistentService or null if it does not exist
Throws:
StandardException

getPersistentService

private PersistentService getPersistentService(java.util.Properties properties,
                                               java.lang.String subSubProtocol)
                                        throws StandardException
Throws:
StandardException

getPersistentService

private PersistentService getPersistentService(java.lang.String className,
                                               java.lang.String subSubProtocol)
                                        throws StandardException
Throws:
StandardException

getStorageFactoryClassName

private java.lang.String getStorageFactoryClassName(java.util.Properties properties,
                                                    java.lang.String subSubProtocol)

startProviderService

protected void startProviderService(PersistentService provider,
                                    java.lang.String serviceName,
                                    java.util.Properties serviceProperties)
                             throws StandardException
Boot a service under the control of the provider

Throws:
StandardException

bootService

protected java.lang.Object bootService(PersistentService provider,
                                       java.lang.String factoryInterface,
                                       java.lang.String serviceName,
                                       java.util.Properties properties,
                                       boolean create)
                                throws StandardException
Boot (start or create) a service (persistent or non-persistent).

Throws:
StandardException

getUUIDFactory

public UUIDFactory getUUIDFactory()
Return the UUID factory for this system. Returns null if there isn't one.

Specified by:
getUUIDFactory in interface ModuleFactory
See Also:
com.ibm.db2j.system.System

getTempWriter

private java.io.PrintWriter getTempWriter()

dumpTempWriter

private void dumpTempWriter(boolean bothPlaces)

canSupport

static boolean canSupport(java.lang.Object instance,
                          java.util.Properties properties)
If the module implements ModuleSupportable then call its canSupport() method to see if it can or should run in this setup. If it doesn't then it can always run.


boot

static void boot(java.lang.Object module,
                 boolean create,
                 java.util.Properties properties)
          throws StandardException
Boot a module. If the module implements ModuleControl then its boot() method is called. Otherwise all the boot code is assumed to take place in its constructor.

Throws:
StandardException

staticGetLocaleFromString

private static java.util.Locale staticGetLocaleFromString(java.lang.String localeDescription)
                                                   throws StandardException
Throws:
StandardException

setLocale

private static java.util.Locale setLocale(java.util.Properties properties)
                                   throws StandardException
Throws:
StandardException

getBundle

public java.util.ResourceBundle getBundle(java.lang.String messageId)
Get the locale from the ContextManager and then find the bundle based upon that locale.

Specified by:
getBundle in interface BundleFinder
Parameters:
messageId - Message being searched for.

getDaemonThread

public java.lang.Thread getDaemonThread(java.lang.Runnable task,
                                        java.lang.String name,
                                        boolean setMinPriority)
Description copied from interface: ModuleFactory
Get a newly created background thread. The thread is set to be a daemon but is not started.

Specified by:
getDaemonThread in interface ModuleFactory

setThreadPriority

public void setThreadPriority(int priority)
Description copied from interface: ModuleFactory
Set the priority of the current thread. If the current thread was not returned by getDaemonThread() then no action is taken.

Specified by:
setThreadPriority in interface ModuleFactory

initialize

public abstract boolean initialize(boolean lite)
Initialize the monitor wrt the current environemnt. Returns false if the monitor cannot be initialized, true otherwise.


Built on Tue 2006-10-10 19:23:47+0200, from revision exported

Apache Derby V10.1 Engine Documentation - Copyright © 1997,2005 The Apache Software Foundation or its licensors, as applicable.