Package gw.config

Class ServiceKernel

java.lang.Object
gw.config.ServiceKernel
Direct Known Subclasses:
CommonServices

public abstract class ServiceKernel extends Object
  • Field Details

    • _services

      private Map<Class<? extends IService>,IService> _services
    • _initingServices

      private Stack<IService> _initingServices
    • _definingServices

      private boolean _definingServices
  • Constructor Details

    • ServiceKernel

      protected ServiceKernel()
  • Method Details

    • 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(Class<? extends T> service)
      Parameters:
      service -
      Returns:
    • redefineService

      public <T extends IService, Q extends T> void redefineService(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(Class<? extends T> service, Q newProvider)
    • defineService

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

      protected <T extends IService, Q extends T> void defineService(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(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)