Package org.jboss.msc.service
Class ServiceBuilderImpl<T>
- java.lang.Object
-
- org.jboss.msc.service.ServiceBuilderImpl<T>
-
- Type Parameters:
T- the type of service being built
- All Implemented Interfaces:
ServiceBuilder<T>
class ServiceBuilderImpl<T> extends java.lang.Object implements ServiceBuilder<T>
ServiceBuilderimplementation.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static classServiceBuilderImpl.Dependency-
Nested classes/interfaces inherited from interface org.jboss.msc.service.ServiceBuilder
ServiceBuilder.DependencyType
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Set<ServiceName>aliasesprivate java.util.Map<ServiceName,ServiceBuilderImpl.Dependency>dependenciesprivate ServiceController.ModeinitialModeprivate booleaninstalledprivate java.util.Set<ServiceListener<? super T>>listenersprivate IdentityHashSet<StabilityMonitor>monitorsprivate java.util.List<Injector<? super T>>outInjectionsprivate ServiceControllerImpl<?>parentprivate ServiceNameserviceNameprivate ServiceTargetImplserviceTargetprivate Value<? extends Service<T>>serviceValueprivate java.util.List<ValueInjection<?>>valueInjections
-
Constructor Summary
Constructors Constructor Description ServiceBuilderImpl(ServiceTargetImpl serviceTarget, Value<? extends Service<T>> serviceValue, ServiceName serviceName, ServiceControllerImpl<?> parent)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ServiceBuilder<T>addAliases(ServiceName... aliases)Add aliases for this service.ServiceBuilder<T>addDependencies(java.lang.Iterable<ServiceName> newDependencies)Add multiple, non-injected dependencies.ServiceBuilder<T>addDependencies(ServiceBuilder.DependencyType dependencyType, java.lang.Iterable<ServiceName> newDependencies)Add multiple, non-injected dependencies.ServiceBuilder<T>addDependencies(ServiceBuilder.DependencyType dependencyType, ServiceName... newDependencies)Add multiple, non-injected dependencies.ServiceBuilder<T>addDependencies(ServiceName... newDependencies)Add multiple, non-injected dependencies.(package private) ServiceBuilder<T>addDependenciesNoCheck(java.lang.Iterable<ServiceName> newDependencies)(package private) ServiceBuilder<T>addDependenciesNoCheck(java.lang.Iterable<ServiceName> newDependencies, ServiceBuilder.DependencyType dependencyType)ServiceBuilder<T>addDependency(ServiceBuilder.DependencyType dependencyType, ServiceName dependency)Add a dependency.<I> ServiceBuilder<T>addDependency(ServiceBuilder.DependencyType dependencyType, ServiceName dependency, java.lang.Class<I> type, Injector<I> target)Add a service dependency.ServiceBuilder<T>addDependency(ServiceBuilder.DependencyType dependencyType, ServiceName dependency, Injector<java.lang.Object> target)Add a service dependency.ServiceBuilder<T>addDependency(ServiceName dependency)Add a dependency.<I> ServiceBuilder<T>addDependency(ServiceName dependency, java.lang.Class<I> type, Injector<I> target)Add a service dependency.ServiceBuilder<T>addDependency(ServiceName dependency, Injector<java.lang.Object> target)Add a service dependency.<I> ServiceBuilder<T>addInjection(Injector<? super I> target, I value)Add an injection.ServiceBuilder<T>addInjection(Injector<? super T> target)Add an injection of this service into another target.<I> ServiceBuilder<T>addInjectionValue(Injector<? super I> target, Value<I> value)Add an injection value.ServiceBuilderImpl<T>addListener(java.util.Collection<? extends ServiceListener<? super T>> serviceListeners)Add service listeners that will be added to this service.ServiceBuilderImpl<T>addListener(ServiceListener<? super T> listener)Add a service listener that will be added to this service.ServiceBuilderImpl<T>addListener(ServiceListener<? super T>... serviceListeners)Add service listeners that will be added to this service.(package private) ServiceBuilderImpl<T>addListenerNoCheck(java.util.Set<? extends ServiceListener<? super T>> serviceListeners)ServiceBuilder<T>addMonitor(StabilityMonitor monitor)Add a service stability monitor that will be added to this service.(package private) ServiceBuilderImpl<T>addMonitorNoCheck(StabilityMonitor monitor)ServiceBuilder<T>addMonitors(StabilityMonitor... monitors)Add service stability monitors that will be added to this service.(package private) ServiceBuilderImpl<T>addMonitorsNoCheck(java.util.Collection<? extends StabilityMonitor> monitors)private voidcheckAlreadyInstalled()private ServiceBuilderImpl.DependencydoAddDependency(ServiceName name, ServiceBuilder.DependencyType type)(package private) ServiceName[]getAliases()(package private) java.util.Map<ServiceName,ServiceBuilderImpl.Dependency>getDependencies()(package private) ServiceController.ModegetInitialMode()(package private) java.util.Set<ServiceListener<? super T>>getListeners()(package private) java.util.Set<StabilityMonitor>getMonitors()(package private) ServiceNamegetName()(package private) java.util.List<Injector<? super T>>getOutInjections()(package private) ServiceControllerImpl<?>getParent()(package private) Value<? extends Service<T>>getServiceValue()(package private) ServiceTargetgetTarget()(package private) java.util.List<ValueInjection<?>>getValueInjections()ServiceController<T>install()Install the defined service into the container.ServiceBuilderImpl<T>setInitialMode(ServiceController.Mode mode)Set the initial mode.
-
-
-
Field Detail
-
parent
private final ServiceControllerImpl<?> parent
-
serviceTarget
private final ServiceTargetImpl serviceTarget
-
serviceName
private final ServiceName serviceName
-
initialMode
private ServiceController.Mode initialMode
-
aliases
private final java.util.Set<ServiceName> aliases
-
monitors
private final IdentityHashSet<StabilityMonitor> monitors
-
dependencies
private final java.util.Map<ServiceName,ServiceBuilderImpl.Dependency> dependencies
-
listeners
private final java.util.Set<ServiceListener<? super T>> listeners
-
valueInjections
private final java.util.List<ValueInjection<?>> valueInjections
-
installed
private boolean installed
-
-
Constructor Detail
-
ServiceBuilderImpl
ServiceBuilderImpl(ServiceTargetImpl serviceTarget, Value<? extends Service<T>> serviceValue, ServiceName serviceName, ServiceControllerImpl<?> parent)
-
-
Method Detail
-
addAliases
public ServiceBuilder<T> addAliases(ServiceName... aliases)
Description copied from interface:ServiceBuilderAdd aliases for this service.- Specified by:
addAliasesin interfaceServiceBuilder<T>- Parameters:
aliases- the service names to use as aliases- Returns:
- the builder
-
setInitialMode
public ServiceBuilderImpl<T> setInitialMode(ServiceController.Mode mode)
Description copied from interface:ServiceBuilderSet the initial mode.- Specified by:
setInitialModein interfaceServiceBuilder<T>- Parameters:
mode- the initial mode- Returns:
- this builder
-
addDependencies
public ServiceBuilder<T> addDependencies(ServiceName... newDependencies)
Description copied from interface:ServiceBuilderAdd multiple, non-injected dependencies.- Specified by:
addDependenciesin interfaceServiceBuilder<T>- Parameters:
newDependencies- the service names to depend on- Returns:
- this builder
-
addDependencies
public ServiceBuilder<T> addDependencies(ServiceBuilder.DependencyType dependencyType, ServiceName... newDependencies)
Description copied from interface:ServiceBuilderAdd multiple, non-injected dependencies.- Specified by:
addDependenciesin interfaceServiceBuilder<T>- Parameters:
dependencyType- the dependency type; must not benullnewDependencies- the service names to depend on- Returns:
- this builder
-
addDependencies
public ServiceBuilder<T> addDependencies(java.lang.Iterable<ServiceName> newDependencies)
Description copied from interface:ServiceBuilderAdd multiple, non-injected dependencies.- Specified by:
addDependenciesin interfaceServiceBuilder<T>- Parameters:
newDependencies- the service names to depend on- Returns:
- this builder
-
addDependenciesNoCheck
ServiceBuilder<T> addDependenciesNoCheck(java.lang.Iterable<ServiceName> newDependencies)
-
addDependencies
public ServiceBuilder<T> addDependencies(ServiceBuilder.DependencyType dependencyType, java.lang.Iterable<ServiceName> newDependencies)
Description copied from interface:ServiceBuilderAdd multiple, non-injected dependencies.- Specified by:
addDependenciesin interfaceServiceBuilder<T>- Parameters:
dependencyType- the dependency type; must not benullnewDependencies- the service names to depend on- Returns:
- this builder
-
addDependenciesNoCheck
ServiceBuilder<T> addDependenciesNoCheck(java.lang.Iterable<ServiceName> newDependencies, ServiceBuilder.DependencyType dependencyType)
-
addDependency
public ServiceBuilder<T> addDependency(ServiceName dependency)
Description copied from interface:ServiceBuilderAdd a dependency. Calling this method multiple times for the same service name will only add it as a dependency one time; however this may be useful to specify multiple injections for one dependency.- Specified by:
addDependencyin interfaceServiceBuilder<T>- Parameters:
dependency- the name of the dependency- Returns:
- an injection builder for optionally injecting the dependency
-
addDependency
public ServiceBuilder<T> addDependency(ServiceBuilder.DependencyType dependencyType, ServiceName dependency)
Description copied from interface:ServiceBuilderAdd a dependency. Calling this method multiple times for the same service name will only add it as a dependency one time; however this may be useful to specify multiple injections for one dependency.- Specified by:
addDependencyin interfaceServiceBuilder<T>- Parameters:
dependencyType- the dependency type; must not benulldependency- the name of the dependency- Returns:
- an injection builder for optionally injecting the dependency
-
addDependency
public ServiceBuilder<T> addDependency(ServiceName dependency, Injector<java.lang.Object> target)
Description copied from interface:ServiceBuilderAdd a service dependency. Calling this method multiple times for the same service name will only add it as a dependency one time; however this may be useful to specify multiple injections for one dependency.- Specified by:
addDependencyin interfaceServiceBuilder<T>- Parameters:
dependency- the name of the dependencytarget- the injector into which the dependency should be stored- Returns:
- this builder
-
addDependency
public ServiceBuilder<T> addDependency(ServiceBuilder.DependencyType dependencyType, ServiceName dependency, Injector<java.lang.Object> target)
Description copied from interface:ServiceBuilderAdd a service dependency. Calling this method multiple times for the same service name will only add it as a dependency one time; however this may be useful to specify multiple injections for one dependency.- Specified by:
addDependencyin interfaceServiceBuilder<T>- Parameters:
dependencyType- the dependency type; must not benulldependency- the name of the dependencytarget- the injector into which the dependency should be stored- Returns:
- this builder
-
addDependency
public <I> ServiceBuilder<T> addDependency(ServiceName dependency, java.lang.Class<I> type, Injector<I> target)
Description copied from interface:ServiceBuilderAdd a service dependency. The type of the dependency is checked before it is passed into the (type-safe) injector instance. Calling this method multiple times for the same service name will only add it as a dependency one time; however this may be useful to specify multiple injections for one dependency.- Specified by:
addDependencyin interfaceServiceBuilder<T>- Type Parameters:
I- the type of the value of the dependency- Parameters:
dependency- the name of the dependencytype- the class of the value of the dependencytarget- the injector into which the dependency should be stored- Returns:
- this builder
-
addDependency
public <I> ServiceBuilder<T> addDependency(ServiceBuilder.DependencyType dependencyType, ServiceName dependency, java.lang.Class<I> type, Injector<I> target)
Description copied from interface:ServiceBuilderAdd a service dependency. The type of the dependency is checked before it is passed into the (type-safe) injector instance. Calling this method multiple times for the same service name will only add it as a dependency one time; however this may be useful to specify multiple injections for one dependency.- Specified by:
addDependencyin interfaceServiceBuilder<T>- Type Parameters:
I- the type of the value of the dependency- Parameters:
dependencyType- the dependency type; must not benulldependency- the name of the dependencytype- the class of the value of the dependencytarget- the injector into which the dependency should be stored- Returns:
- this builder
-
doAddDependency
private ServiceBuilderImpl.Dependency doAddDependency(ServiceName name, ServiceBuilder.DependencyType type)
-
addInjection
public <I> ServiceBuilder<T> addInjection(Injector<? super I> target, I value)
Description copied from interface:ServiceBuilderAdd an injection. The given value will be injected into the given injector before service start, and uninjected after service stop.- Specified by:
addInjectionin interfaceServiceBuilder<T>- Type Parameters:
I- the injection type- Parameters:
target- the injection targetvalue- the injection value- Returns:
- this builder
-
addInjectionValue
public <I> ServiceBuilder<T> addInjectionValue(Injector<? super I> target, Value<I> value)
Description copied from interface:ServiceBuilderAdd an injection value. The given value will be injected into the given injector before service start, and uninjected after service stop.- Specified by:
addInjectionValuein interfaceServiceBuilder<T>- Type Parameters:
I- the injection type- Parameters:
target- the injection targetvalue- the injection value- Returns:
- this builder
-
addInjection
public ServiceBuilder<T> addInjection(Injector<? super T> target)
Description copied from interface:ServiceBuilderAdd an injection of this service into another target. The given injector will be given this service after start, and uninjected when this service stops.Differently from other injection types, failures to perform an outward injection will not result in a failure to start the service.
- Specified by:
addInjectionin interfaceServiceBuilder<T>- Parameters:
target- the injector target- Returns:
- this builder
-
addMonitor
public ServiceBuilder<T> addMonitor(StabilityMonitor monitor)
Description copied from interface:ServiceBuilderAdd a service stability monitor that will be added to this service.- Specified by:
addMonitorin interfaceServiceBuilder<T>- Parameters:
monitor- the stability monitor to add to the service- Returns:
- this builder
-
addMonitors
public ServiceBuilder<T> addMonitors(StabilityMonitor... monitors)
Description copied from interface:ServiceBuilderAdd service stability monitors that will be added to this service.- Specified by:
addMonitorsin interfaceServiceBuilder<T>- Parameters:
monitors- a list of stability monitors to add to the service- Returns:
- this builder
-
addListener
public ServiceBuilderImpl<T> addListener(ServiceListener<? super T> listener)
Description copied from interface:ServiceBuilderAdd a service listener that will be added to this service.- Specified by:
addListenerin interfaceServiceBuilder<T>- Parameters:
listener- the listener to add to the service- Returns:
- this builder
-
addListener
public ServiceBuilderImpl<T> addListener(ServiceListener<? super T>... serviceListeners)
Description copied from interface:ServiceBuilderAdd service listeners that will be added to this service.- Specified by:
addListenerin interfaceServiceBuilder<T>- Parameters:
serviceListeners- a list of listeners to add to the service- Returns:
- this builder
-
addListener
public ServiceBuilderImpl<T> addListener(java.util.Collection<? extends ServiceListener<? super T>> serviceListeners)
Description copied from interface:ServiceBuilderAdd service listeners that will be added to this service.- Specified by:
addListenerin interfaceServiceBuilder<T>- Parameters:
serviceListeners- a collection of listeners to add to the service- Returns:
- this builder
-
addMonitorNoCheck
ServiceBuilderImpl<T> addMonitorNoCheck(StabilityMonitor monitor)
-
addListenerNoCheck
ServiceBuilderImpl<T> addListenerNoCheck(java.util.Set<? extends ServiceListener<? super T>> serviceListeners)
-
addMonitorsNoCheck
ServiceBuilderImpl<T> addMonitorsNoCheck(java.util.Collection<? extends StabilityMonitor> monitors)
-
checkAlreadyInstalled
private void checkAlreadyInstalled()
-
install
public ServiceController<T> install() throws ServiceRegistryException
Description copied from interface:ServiceBuilderInstall the defined service into the container. All service listeners defined for this built service will be invoked from the same thread that calls this method.- Specified by:
installin interfaceServiceBuilder<T>- Returns:
- the installed service controller
- Throws:
ServiceRegistryException- if installation fails
-
getName
ServiceName getName()
-
getAliases
ServiceName[] getAliases()
-
getDependencies
java.util.Map<ServiceName,ServiceBuilderImpl.Dependency> getDependencies()
-
getMonitors
java.util.Set<StabilityMonitor> getMonitors()
-
getListeners
java.util.Set<ServiceListener<? super T>> getListeners()
-
getValueInjections
java.util.List<ValueInjection<?>> getValueInjections()
-
getInitialMode
ServiceController.Mode getInitialMode()
-
getTarget
ServiceTarget getTarget()
-
getParent
ServiceControllerImpl<?> getParent()
-
-