Package gw.config

Class ServiceKernel

  • Direct Known Subclasses:
    CommonServices

    public abstract class ServiceKernel
    extends java.lang.Object
    • Field Detail

      • _services

        private java.util.Map<java.lang.Class<? extends IService>,​IService> _services
      • _definingServices

        private boolean _definingServices
    • Constructor Detail

      • ServiceKernel

        protected ServiceKernel()
    • Method Detail

      • resetKernel

        protected void resetKernel()
      • defineServices

        protected abstract void defineServices()
        Contains all the definitions of the services provided by this kernel
      • redefineServices

        protected abstract void redefineServices()
        Contains the redefinition logic for this kernel
      • getService

        public <T extends IService> T getService​(java.lang.Class<? extends T> service)
        Parameters:
        service -
        Returns:
      • redefineService

        public <T extends IService,​Q extends T> void redefineService​(java.lang.Class<? extends T> service,
                                                                           Q newProvider)
        Overrides the default implemenation of the service with a different provider. Note that the current provider cannot have been accessed (all services must be consistent during runtime.)
        Parameters:
        service - - the service to provide
        newProvider - - the new provider of this service
      • redefineService_Privileged

        public <T extends IService,​Q extends T> void redefineService_Privileged​(java.lang.Class<? extends T> service,
                                                                                      Q newProvider)
      • defineService

        protected <T extends IService> void defineService​(java.lang.Class<? extends T> serviceClass,
                                                          java.lang.Class<? extends T> implClass)
                                                   throws java.lang.NoSuchMethodException,
                                                          java.lang.reflect.InvocationTargetException,
                                                          java.lang.IllegalAccessException,
                                                          java.lang.InstantiationException
        Throws:
        java.lang.NoSuchMethodException
        java.lang.reflect.InvocationTargetException
        java.lang.IllegalAccessException
        java.lang.InstantiationException
      • defineService

        protected <T extends IService,​Q extends T> void defineService​(java.lang.Class<? extends T> service,
                                                                            Q defaultImplementation)
        Defines a service provided by this ServiceKernel
        Parameters:
        service - - the service to provide
        defaultImplementation - - the default implementation of this service
      • redefineServicesWithClass

        protected void redefineServicesWithClass​(java.lang.String initClassName)
        Parameters:
        initClassName - a class name of a class that implements {@link ServiceKernelInit) and that will be created and given a chance to redefine the service implementations in this kernel.
      • detectCircularInitializationDependencies

        private <T extends IService> void detectCircularInitializationDependencies​(IService service)