Class BaseMonitor

    • Constructor Summary

      Constructors 
      Constructor Description
      BaseMonitor()  
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      private void addDebugFlags​(java.lang.String flags, boolean set)  
      (package private) 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.
      private 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).
      (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.
      private void determineSupportedServiceProviders()
      Determine which of the set of service providers (PersistentService objects) are supported in the current environment.
      (package private) void dumpProperties​(java.lang.String title, java.util.Properties props)  
      private void dumpTempWriter​(boolean bothPlaces)  
      private static int findImplementation​(java.util.List<java.lang.Class<?>> implementations, int startIndex, java.lang.Class<?> factoryInterface)
      Find a class that implements the required index, return the index into the implementations vector 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.
      private boolean findProviderAndStartService​(java.lang.String name, java.util.Properties properties, boolean bootTime)
      Find a provider and start a service.
      protected PersistentService findProviderForCreate​(java.lang.String name)  
      private PersistentService findProviderFromName​(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()
      Return the application set of properties which correspond to the set of properties in the file derby.properties.
      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.String getCanonicalServiceName​(java.lang.String userSpecifiedName)
      Canonicalize a service name, mapping different user-specifications of a database name onto a single, standard name.
      private static ContextService getContextService()
      Privileged lookup of the ContextService.
      java.lang.Thread getDaemonThread​(java.lang.Runnable task, java.lang.String name, boolean setMinPriority)
      Get a newly created background thread.
      private java.util.Vector<java.lang.Class<?>> getDefaultImplementations()  
      (package private) java.util.Properties getDefaultModuleProperties()
      Get the complete set of module properties by loading in contents of all the org/apache/derby/modules.properties files.
      private java.util.Vector<java.lang.Class<?>> 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.lang.String subSubProtocol)
      Return a PersistentService implementation to handle the 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.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.lang.String subSubProtocol)
      Find the StorageFactory class name that handles the subSub protocol.
      InfoStreams getSystemStreams()
      Get the defined default system streams object.
      private java.io.PrintWriter getTempWriter()  
      TimerFactory getTimerFactory()
      Returns the Timer factory for this system.
      UUIDFactory getUUIDFactory()
      Return the UUID factory for this system.
      (package private) abstract boolean initialize​(boolean lite)
      Initialize the monitor wrt the current environemnt.
      boolean isDaemonThread​(java.lang.Thread thread)
      protected java.lang.Object loadInstance​(java.lang.Class<?> factoryInterface, java.util.Properties properties)
      load a module instance.
      private java.lang.Object loadInstance​(java.util.List<java.lang.Class<?>> implementations, java.lang.Class<?> factoryInterface, java.util.Properties properties)  
      private java.lang.Object newInstance​(java.lang.Class<?> classObject)
      Return a new instance of class classObject using a no-param constructor.
      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)
      Removes a PersistentService.
      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.PrintWriter 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.
      private static boolean setMonitor​(BaseMonitor baseMonitor)
      Privileged startup.
      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 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)  
      private static void stopContextService()
      Privileged shutdown of the ContextService.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • serviceProviders

        private final java.util.HashMap<java.lang.String,​PersistentService> serviceProviders
        Hash table of objects that implement PersistentService keyed by their getType() method.
      • implementationSets

        private java.util.List<java.util.List<java.lang.Class<?>>> implementationSets
      • services

        private final java.util.Vector<TopService> services
      • bootProperties

        java.util.Properties bootProperties
      • applicationProperties

        java.util.Properties applicationProperties
      • inShutdown

        boolean inShutdown
      • reportOn

        boolean reportOn
      • logging

        private java.io.PrintWriter logging
      • daemonGroup

        java.lang.ThreadGroup daemonGroup
      • 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<java.lang.String,​java.lang.String> storageFactories
      • tmpWriter

        private java.io.PrintWriter tmpWriter
      • dumpedTempWriter

        private boolean dumpedTempWriter
    • Constructor Detail

      • BaseMonitor

        BaseMonitor()
    • Method Detail

      • 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.PrintWriter log)
      • 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
        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 Derby 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 Derby 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
      • 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.
      • 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.List<java.lang.Class<?>> implementations,
                                              java.lang.Class<?> factoryInterface,
                                              java.util.Properties properties)
      • findImplementation

        private static int findImplementation​(java.util.List<java.lang.Class<?>> implementations,
                                              int startIndex,
                                              java.lang.Class<?> factoryInterface)
        Find a class that implements the required index, return the index into the implementations vector of that class. Returns -1 if no class could be found.
      • newInstance

        private java.lang.Object newInstance​(java.lang.Class<?> classObject)
        Return a new instance of class classObject using a no-param constructor.
        Parameters:
        classObject - the class to instantiate
        Returns:
        the instantiated object
      • getApplicationProperties

        public java.util.Properties getApplicationProperties()
        Description copied from interface: ModuleFactory
        Return the application set of properties which correspond to the set of properties in the file derby.properties.
        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
      • getImplementations

        private java.util.Vector<java.lang.Class<?>> 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

        private java.util.Vector<java.lang.Class<?>> getDefaultImplementations()
      • getDefaultModuleProperties

        java.util.Properties getDefaultModuleProperties()
        Get the complete set of module properties by loading in contents of all the org/apache/derby/modules.properties files. This must be executed in a privileged block otherwise when running in a security manager environment no properties will be returned.
      • removeRuntimeProperties

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

        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()
      • determineSupportedServiceProviders

        private void determineSupportedServiceProviders()
        Determine which of the set of service providers (PersistentService objects) are supported in the current environment. If a PersistentService implementation does not implement ModuleControl then it is assumed it does support the current environment. Otherwise the canSupport() method makes the determination. Any providers that are not supported are removed from the list.
      • bootPersistentServices

        private 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

        private boolean findProviderAndStartService​(java.lang.String name,
                                                    java.util.Properties properties,
                                                    boolean bootTime)
                                             throws StandardException
        Find a provider and start a service.
        Throws:
        StandardException
      • findProviderFromName

        private PersistentService findProviderFromName​(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 characters then it is assumed to be of type directory, i.e. a windows driver letter.
        Throws:
        StandardException
      • getPersistentService

        private PersistentService getPersistentService​(java.lang.String subSubProtocol)
                                                throws StandardException
        Return a PersistentService implementation to handle the subSubProtocol.
        Returns:
        Valid PersistentService or null if the protocol is not handled.
        Throws:
        StandardException
      • getStorageFactoryClassName

        private java.lang.String getStorageFactoryClassName​(java.lang.String subSubProtocol)
        Find the StorageFactory class name that handles the subSub protocol. Looks in the system property set and the set defined during boot.
        Returns:
        Valid class name, or null if no StorageFactory handles the protocol.
      • 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. See com.ibm.db2j.system.System
        Specified by:
        getUUIDFactory in interface ModuleFactory
      • 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
      • 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
      • getContextService

        private static ContextService getContextService()
        Privileged lookup of the ContextService. Must be private so that user code can't call this entry point.
      • stopContextService

        private static void stopContextService()
        Privileged shutdown of the ContextService. Must be private so that user code can't call this entry point.
      • setMonitor

        private static boolean setMonitor​(BaseMonitor baseMonitor)
        Privileged startup. Must be private so that user code can't call this entry point. Returns true if the system is already booted or in the process of shutting down.
      • initialize

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