Class DSpaceServiceManager

    • Constructor Detail

      • DSpaceServiceManager

        public DSpaceServiceManager​(DSpaceConfigurationService configurationService)
        Standard constructor.
        Parameters:
        configurationService - current DSpace configuration service
      • DSpaceServiceManager

        protected DSpaceServiceManager​(DSpaceConfigurationService configurationService,
                                       String... springXmlConfigFiles)
        TESTING - This is for testing only.
        Parameters:
        configurationService - current DSpace configuration service.
        springXmlConfigFiles - one or more Spring XML configuration files.
    • Method Detail

      • isRunning

        public boolean isRunning()
        Returns:
        true if the service manager is running
      • getBeanFactory

        public org.springframework.beans.factory.ListableBeanFactory getBeanFactory()
        Returns:
        the current spring bean factory OR null if there is not one.
      • getApplicationContext

        public org.springframework.context.support.ClassPathXmlApplicationContext getApplicationContext()
        Description copied from interface: ServiceManager
        Get the application context.
        Specified by:
        getApplicationContext in interface ServiceManager
        Returns:
        the parent core Spring ApplicationContext
      • notifyServiceManagerReady

        public void notifyServiceManagerReady()
        This will call all the services which want to be notified when the service manager is ready.
      • shutdown

        public void shutdown()
        Shut down the Spring context and leave the "running" state.
        Specified by:
        shutdown in interface ServiceManagerSystem
      • registerService

        public void registerService​(String name,
                                    Object service)
        Description copied from interface: ServiceManager
        Allows adding singleton services and providers in at runtime or after the service manager has started up. This is primarily useful for registering providers, filters, and plugins with the DSpace core.

        NOTE: It is important that you also call ServiceManager.unregisterService(String) if you are shutting down the context (webapp, etc.) that registered the service so that the full lifecycle completes correctly.

        Specified by:
        registerService in interface ServiceManager
        Parameters:
        name - the name of the service (must be unique)
        service - the object to register as a singleton service
      • registerServiceNoAutowire

        public void registerServiceNoAutowire​(String name,
                                              Object service)
        Description copied from interface: ServiceManager
        Add a singleton service at runtime, but do not inject dependencies. Typically used with a service instance that has already had all dependencies injected explicitly, for example in test code.
        Specified by:
        registerServiceNoAutowire in interface ServiceManager
        Parameters:
        name - the name of the service (must be unique).
        service - the instance to register as a singleton service.
      • registerServiceClass

        public <T> T registerServiceClass​(String name,
                                          Class<T> type)
        Description copied from interface: ServiceManager
        Allows adding singleton services and providers in at runtime or after the service manager has started up. This is the same as ServiceManager.registerService(String, Object) except that it allows the core service manager to startup your service for you instead of you providing a service to the core. In general, it is better if you use your own service manager (like Spring) to manage your services and simply inherit the core service beans from the DSpace core service manager using the special capabilities of ServiceManager.getServiceByName(String, Class).
        Specified by:
        registerServiceClass in interface ServiceManager
        Type Parameters:
        T - Class type
        Parameters:
        name - the name of the service (must be unique)
        type - the class type of the service (must be in the current classloader)
        Returns:
        the service class
        See Also:
        ServiceManager.getServiceByName(String, Class)
      • unregisterService

        public void unregisterService​(String name)
        Description copied from interface: ServiceManager
        Allows a service to be unregistered (which will only work if nothing depends on it). This is primarily used for providers, filters, plugins, etc. which were registered but are no longer available because the context they are running in is shutting down or restarting.
        WARNING: This should not be used to attempt to unregister core services as that will fail.
        Specified by:
        unregisterService in interface ServiceManager
        Parameters:
        name - the name of the service (must be unique)
      • getServiceByName

        public <T> T getServiceByName​(String name,
                                      Class<T> type)
        Description copied from interface: ServiceManager
        Allows developers to get the desired service singleton by the provided name and type. Provide null for the name if it is not known, but it is better to ensure it is set.

        NOTE: This also allows special access to the underlying service manager objects. If using Spring this allows access to the underlying ApplicationContext object like so:
        getServiceByName(ApplicationContext.class.getName(), ApplicationContext.class);

        Specified by:
        getServiceByName in interface ServiceManager
        Type Parameters:
        T - Class type.
        Parameters:
        name - (optional) the unique name for this service. If null then the bean will be returned if there is only one service of this type.
        type - the type for the requested service (this will typically be the interface class but can be concrete as well).
        Returns:
        the service singleton OR null if none is found
      • getServicesByType

        public <T> List<T> getServicesByType​(Class<T> type)
        Description copied from interface: ServiceManager
        Allows developers to get the desired service singleton by the provided type.
        This should return all instantiated objects of the type specified (may not all be singletons).
        Specified by:
        getServicesByType in interface ServiceManager
        Type Parameters:
        T - Class type
        Parameters:
        type - the type for the requested service (this will typically be the interface class but can be concrete as well)
        Returns:
        the list of service singletons OR empty list if none is found
      • getServicesNames

        public List<String> getServicesNames()
        Description copied from interface: ServiceManager
        Get the names of all registered service singletons. By convention, the name typically matches the fully qualified class name).
        Specified by:
        getServicesNames in interface ServiceManager
        Returns:
        the list of all current registered services
      • isServiceExists

        public boolean isServiceExists​(String name)
        Description copied from interface: ServiceManager
        Lookup to see if a service exists with the given name.
        Specified by:
        isServiceExists in interface ServiceManager
        Parameters:
        name - the unique name for this service
        Returns:
        true if it exists, false otherwise
      • pushConfig

        public void pushConfig​(Map<String,​Object> properties)
        Description copied from interface: ServiceManager
        Allows new configuration settings to be pushed into the core DSpace configuration. These will cause a settings refresh action to be called for all services which are listening and will cause any bean properties to be pushed into existing beans.
        Specified by:
        pushConfig in interface ServiceManager
        Parameters:
        properties - a map of keys (names) and values
      • getSpringPaths

        public static String[] getSpringPaths​(boolean testMode,
                                              String[] configPaths,
                                              DSpaceConfigurationService configurationService)
        Build the complete list of Spring configuration paths, including hard-wired paths.
        Parameters:
        testMode - are we testing the service manager?
        configPaths - paths supplied at startup.
        configurationService - DSpace configuration source.
        Returns: