Module org.refcodes.servicebus
Package org.refcodes.servicebus
Class SimpleServiceBus<S extends Service<?>,CTX extends ServiceContext<S>>
- java.lang.Object
-
- org.refcodes.servicebus.SimpleServiceBus<S,CTX>
-
- Type Parameters:
S
- the generic type of the services to be served.CTX
- the generic service's context type
- All Implemented Interfaces:
org.refcodes.mixin.Loggable
,ServiceBus<S>
public class SimpleServiceBus<S extends Service<?>,CTX extends ServiceContext<S>> extends Object implements ServiceBus<S>, org.refcodes.mixin.Loggable
TheSimpleServiceBus
is a basic implementation of theServiceBus
interface.
-
-
Constructor Summary
Constructors Constructor Description SimpleServiceBus(ServiceLookup<S,CTX> aServiceLookup, org.refcodes.component.ext.observer.ObservableLifecycleStatusAutomaton aObservableLifecycleAutomaton)
Constructs the subscriber part of the event bus.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
destroyServices()
Destroy services.boolean
hasService(ServiceMatcher<S> aServiceMatcher)
Determines whether the givenServiceMatcher
will result in a singleService
to be looked up.protected void
initializeServices()
Initialize services.S
lookupService(ServiceMatcher<S> aServiceMatcher)
Looks for a service matching the given service descriptor and returns it if found.protected void
onLifecycleEvent(org.refcodes.component.ext.observer.LifecycleRequestEvent aEvent)
This method is used to handle life-cycle events and inform the according services of any life-cycle state changes.protected void
pauseServices()
Pause services.protected void
registerLifecycleEventDispatcher(org.refcodes.component.ext.observer.ObservableLifecycleStatusAutomaton aObservableLifecycleAutomaton)
This method registers a life-cycle event listener which dispatches any incoming life-cycle events to the according dispatcher method below.protected void
resumeServices()
Resume services.protected void
startServices()
Start services.protected void
stopServices()
Stop services.
-
-
-
Constructor Detail
-
SimpleServiceBus
public SimpleServiceBus(ServiceLookup<S,CTX> aServiceLookup, org.refcodes.component.ext.observer.ObservableLifecycleStatusAutomaton aObservableLifecycleAutomaton)
Constructs the subscriber part of the event bus. For doing its job, it needs the list of services which is accessible via the provided service lookup part of the service bus.- Parameters:
aServiceLookup
- the service lookupaObservableLifecycleAutomaton
- the observable lifecycle automaton
-
-
Method Detail
-
lookupService
public S lookupService(ServiceMatcher<S> aServiceMatcher) throws NoMatchingServiceRuntimeException, AmbiguousServiceRuntimeException
Looks for a service matching the given service descriptor and returns it if found.- Specified by:
lookupService
in interfaceServiceBus<S extends Service<?>>
- Parameters:
aServiceMatcher
- TheServiceMatcher
describing the service for which to look for.- Returns:
- The desired
ServiceConfigurationError
. - Throws:
AmbiguousServiceRuntimeException
- in case more than oneService
matched theServiceMatcher
.NoMatchingServiceRuntimeException
-
hasService
public boolean hasService(ServiceMatcher<S> aServiceMatcher)
Determines whether the givenServiceMatcher
will result in a singleService
to be looked up. I.e. theServiceMatcher
must result in an unambiguousService
to be identified.- Specified by:
hasService
in interfaceServiceBus<S extends Service<?>>
- Parameters:
aServiceMatcher
- TheServiceMatcher
describing theService
for which to look for.- Returns:
- True in case if exactly one
Service
is matching the matcher. Else false is returned (either more than one service was identified or none service was identified).
-
registerLifecycleEventDispatcher
protected void registerLifecycleEventDispatcher(org.refcodes.component.ext.observer.ObservableLifecycleStatusAutomaton aObservableLifecycleAutomaton)
This method registers a life-cycle event listener which dispatches any incoming life-cycle events to the according dispatcher method below.- Parameters:
aObservableLifecycleAutomaton
- the observable lifecycle automaton
-
onLifecycleEvent
protected void onLifecycleEvent(org.refcodes.component.ext.observer.LifecycleRequestEvent aEvent)
This method is used to handle life-cycle events and inform the according services of any life-cycle state changes. Use theregisterLifecycleEventDispatcher(ObservableLifecycleStatusAutomaton)
method to register a dispatcher for any life-cycle events from a provided observable life-cycle instance.- Parameters:
aEvent
- the event
-
initializeServices
protected void initializeServices()
Initialize services.
-
startServices
protected void startServices()
Start services.
-
pauseServices
protected void pauseServices()
Pause services.
-
resumeServices
protected void resumeServices()
Resume services.
-
stopServices
protected void stopServices()
Stop services.
-
destroyServices
protected void destroyServices()
Destroy services.
-
-