Package gw.config
Class ServiceKernel
- java.lang.Object
-
- gw.config.ServiceKernel
-
- Direct Known Subclasses:
CommonServices
public abstract class ServiceKernel extends java.lang.Object
-
-
Field Summary
Fields Modifier and Type Field Description private boolean_definingServicesprivate Stack<IService>_initingServicesprivate java.util.Map<java.lang.Class<? extends IService>,IService>_services
-
Constructor Summary
Constructors Modifier Constructor Description protectedServiceKernel()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected <T extends IService>
voiddefineService(java.lang.Class<? extends T> serviceClass, java.lang.Class<? extends T> implClass)protected <T extends IService,Q extends T>
voiddefineService(java.lang.Class<? extends T> service, Q defaultImplementation)Defines a service provided by this ServiceKernelprotected abstract voiddefineServices()Contains all the definitions of the services provided by this kernelprivate <T extends IService>
voiddetectCircularInitializationDependencies(IService service)<T extends IService>
TgetService(java.lang.Class<? extends T> service)<T extends IService,Q extends T>
voidredefineService(java.lang.Class<? extends T> service, Q newProvider)Overrides the default implemenation of the service with a different provider.<T extends IService,Q extends T>
voidredefineService_Privileged(java.lang.Class<? extends T> service, Q newProvider)protected abstract voidredefineServices()Contains the redefinition logic for this kernelprotected voidredefineServicesWithClass(java.lang.String initClassName)protected voidresetKernel()
-
-
-
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 providenewProvider- - 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.NoSuchMethodExceptionjava.lang.reflect.InvocationTargetExceptionjava.lang.IllegalAccessExceptionjava.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 providedefaultImplementation- - 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.
-
-