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>
ServiceBuilder
implementation.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static class
ServiceBuilderImpl.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>
aliases
private java.util.Map<ServiceName,ServiceBuilderImpl.Dependency>
dependencies
private ServiceController.Mode
initialMode
private boolean
installed
private java.util.Set<ServiceListener<? super T>>
listeners
private IdentityHashSet<StabilityMonitor>
monitors
private java.util.List<Injector<? super T>>
outInjections
private ServiceControllerImpl<?>
parent
private ServiceName
serviceName
private ServiceTargetImpl
serviceTarget
private Value<? extends Service<T>>
serviceValue
private 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 void
checkAlreadyInstalled()
private ServiceBuilderImpl.Dependency
doAddDependency(ServiceName name, ServiceBuilder.DependencyType type)
(package private) ServiceName[]
getAliases()
(package private) java.util.Map<ServiceName,ServiceBuilderImpl.Dependency>
getDependencies()
(package private) ServiceController.Mode
getInitialMode()
(package private) java.util.Set<ServiceListener<? super T>>
getListeners()
(package private) java.util.Set<StabilityMonitor>
getMonitors()
(package private) ServiceName
getName()
(package private) java.util.List<Injector<? super T>>
getOutInjections()
(package private) ServiceControllerImpl<?>
getParent()
(package private) Value<? extends Service<T>>
getServiceValue()
(package private) ServiceTarget
getTarget()
(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:ServiceBuilder
Add aliases for this service.- Specified by:
addAliases
in 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:ServiceBuilder
Set the initial mode.- Specified by:
setInitialMode
in interfaceServiceBuilder<T>
- Parameters:
mode
- the initial mode- Returns:
- this builder
-
addDependencies
public ServiceBuilder<T> addDependencies(ServiceName... newDependencies)
Description copied from interface:ServiceBuilder
Add multiple, non-injected dependencies.- Specified by:
addDependencies
in 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:ServiceBuilder
Add multiple, non-injected dependencies.- Specified by:
addDependencies
in interfaceServiceBuilder<T>
- Parameters:
dependencyType
- the dependency type; must not benull
newDependencies
- the service names to depend on- Returns:
- this builder
-
addDependencies
public ServiceBuilder<T> addDependencies(java.lang.Iterable<ServiceName> newDependencies)
Description copied from interface:ServiceBuilder
Add multiple, non-injected dependencies.- Specified by:
addDependencies
in 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:ServiceBuilder
Add multiple, non-injected dependencies.- Specified by:
addDependencies
in interfaceServiceBuilder<T>
- Parameters:
dependencyType
- the dependency type; must not benull
newDependencies
- 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:ServiceBuilder
Add 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:
addDependency
in 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:ServiceBuilder
Add 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:
addDependency
in interfaceServiceBuilder<T>
- Parameters:
dependencyType
- the dependency type; must not benull
dependency
- 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:ServiceBuilder
Add 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:
addDependency
in 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:ServiceBuilder
Add 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:
addDependency
in interfaceServiceBuilder<T>
- Parameters:
dependencyType
- the dependency type; must not benull
dependency
- 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:ServiceBuilder
Add 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:
addDependency
in 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:ServiceBuilder
Add 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:
addDependency
in interfaceServiceBuilder<T>
- Type Parameters:
I
- the type of the value of the dependency- Parameters:
dependencyType
- the dependency type; must not benull
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
-
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:ServiceBuilder
Add an injection. The given value will be injected into the given injector before service start, and uninjected after service stop.- Specified by:
addInjection
in 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:ServiceBuilder
Add an injection value. The given value will be injected into the given injector before service start, and uninjected after service stop.- Specified by:
addInjectionValue
in 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:ServiceBuilder
Add 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:
addInjection
in interfaceServiceBuilder<T>
- Parameters:
target
- the injector target- Returns:
- this builder
-
addMonitor
public ServiceBuilder<T> addMonitor(StabilityMonitor monitor)
Description copied from interface:ServiceBuilder
Add a service stability monitor that will be added to this service.- Specified by:
addMonitor
in 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:ServiceBuilder
Add service stability monitors that will be added to this service.- Specified by:
addMonitors
in 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:ServiceBuilder
Add a service listener that will be added to this service.- Specified by:
addListener
in 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:ServiceBuilder
Add service listeners that will be added to this service.- Specified by:
addListener
in 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:ServiceBuilder
Add service listeners that will be added to this service.- Specified by:
addListener
in 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:ServiceBuilder
Install 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:
install
in 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()
-
-