Class DelegatingServiceContainer

    • Constructor Detail

      • DelegatingServiceContainer

        public DelegatingServiceContainer​(ServiceTarget delegateTarget,
                                          ServiceRegistry delegateRegistry)
        Construct a new instance.
        Parameters:
        delegateTarget - the delegate to forward service target requests to
        delegateRegistry - the delegate to forward registry requests to
    • Method Detail

      • addServiceValue

        public <T> ServiceBuilder<T> addServiceValue​(ServiceName name,
                                                     Value<? extends Service<T>> value)
                                              throws java.lang.IllegalArgumentException
        Get a builder which can be used to add a service to this target.
        Specified by:
        addServiceValue in interface ServiceTarget
        Parameters:
        name - the service name
        value - the service value
        Returns:
        the builder for the service
        Throws:
        java.lang.IllegalArgumentException
      • addService

        public <T> ServiceBuilder<T> addService​(ServiceName name,
                                                Service<T> service)
                                         throws java.lang.IllegalArgumentException
        Get a builder which can be used to add a service to this target.
        Specified by:
        addService in interface ServiceTarget
        Parameters:
        name - the service name
        service - the service
        Returns:
        the builder for the service
        Throws:
        java.lang.IllegalArgumentException
      • addListener

        public ServiceContainer addListener​(ServiceListener<java.lang.Object> listener)
        Add a service listener that will be added to all the ServiceBuilders installed in this target.
        Specified by:
        addListener in interface ServiceTarget
        Parameters:
        listener - the listener to add to the target
        Returns:
        this target
      • addListener

        public ServiceContainer addListener​(ServiceListener<java.lang.Object>... listeners)
        Add a list of service listener that will be added to all ServiceBuilders installed in this target.
        Specified by:
        addListener in interface ServiceTarget
        Parameters:
        listeners - a list of listeners to add to the target
        Returns:
        this target
      • addListener

        public ServiceContainer addListener​(java.util.Collection<ServiceListener<java.lang.Object>> listeners)
        Add a collection of service listener that will be added to all ServiceBuilders installed in this target.
        Specified by:
        addListener in interface ServiceTarget
        Parameters:
        listeners - a collection of listeners to add to the target
        Returns:
        this target
      • getListeners

        public java.util.Set<ServiceListener<java.lang.Object>> getListeners()
        Returns a set of the listeners added to this target.
        Specified by:
        getListeners in interface ServiceTarget
        Returns:
        the listeners added to this target
      • addMonitor

        public ServiceTarget addMonitor​(StabilityMonitor monitor)
        Add a stability monitor that will be added to all the ServiceBuilders installed in this target.
        Specified by:
        addMonitor in interface ServiceTarget
        Parameters:
        monitor - the monitor to add to the target
        Returns:
        this target
      • addMonitors

        public ServiceTarget addMonitors​(StabilityMonitor... monitors)
        Add a stability monitors that will be added to all the ServiceBuilders installed in this target.
        Specified by:
        addMonitors in interface ServiceTarget
        Parameters:
        monitors - the monitors to add to the target
        Returns:
        this target
      • getMonitors

        public java.util.Set<StabilityMonitor> getMonitors()
        Returns a set of the monitors added to this target.
        Specified by:
        getMonitors in interface ServiceTarget
        Returns:
        the monitors added to this target
      • addDependency

        public ServiceContainer addDependency​(ServiceName dependency)
        Add a dependency that will be added to the all ServiceBuilders installed in this target.
        Specified by:
        addDependency in interface ServiceTarget
        Parameters:
        dependency - the dependency to add to the target
        Returns:
        this target
      • addDependency

        public ServiceContainer addDependency​(ServiceName... dependencies)
        Add a list of dependencies that will be added to the all ServiceBuilders installed in this target.
        Specified by:
        addDependency in interface ServiceTarget
        Parameters:
        dependencies - a list of dependencies to add to the target
        Returns:
        this target
      • addDependency

        public ServiceContainer addDependency​(java.util.Collection<ServiceName> dependencies)
        Add a collection of dependencies that will be added to the all ServiceBuilders installed in this target
        Specified by:
        addDependency in interface ServiceTarget
        Parameters:
        dependencies - a collection of dependencies to add to this target
        Returns:
        this target
      • removeDependency

        public ServiceContainer removeDependency​(ServiceName dependency)
        Remove a dependency from this target. Subsequently defined services will not have this dependency.
        Specified by:
        removeDependency in interface ServiceTarget
        Parameters:
        dependency - the dependency
        Returns:
        this target
      • getDependencies

        public java.util.Set<ServiceName> getDependencies()
        Returns a set of all dependencies added to this target.
        Specified by:
        getDependencies in interface ServiceTarget
        Returns:
        all dependencies of this target
      • subTarget

        public ServiceTarget subTarget()
        Create a sub-target using this as the parent target.
        Specified by:
        subTarget in interface ServiceTarget
        Returns:
        the new service target
      • batchTarget

        public BatchServiceTarget batchTarget()
        Create a new batch service target, which is used to install described services in this target.
        Specified by:
        batchTarget in interface ServiceTarget
        Returns:
        the new batch service target
      • getService

        public ServiceController<?> getService​(ServiceName serviceName)
        Get a service, returning null if it is not found.
        Specified by:
        getService in interface ServiceRegistry
        Parameters:
        serviceName - the service name
        Returns:
        the service controller for the corresponding service, or null if it is not found
      • getServiceNames

        public java.util.List<ServiceName> getServiceNames()
        Get a list of service names installed in this registry.
        Specified by:
        getServiceNames in interface ServiceRegistry
        Returns:
        the list
      • getName

        public java.lang.String getName()
        Get the name of this service container.
        Specified by:
        getName in interface ServiceContainer
        Returns:
        the container name
      • shutdown

        public void shutdown()
        Stop all services within this container.
        Specified by:
        shutdown in interface ServiceContainer
      • isShutdown

        public boolean isShutdown()
        Whether container have been shut down.
        Specified by:
        isShutdown in interface ServiceContainer
        Returns:
        true if container is shutting down
      • isShutdownComplete

        public boolean isShutdownComplete()
        Determine whether the container is completely shut down.
        Specified by:
        isShutdownComplete in interface ServiceContainer
        Returns:
        true if shutdown is complete
      • dumpServices

        public void dumpServices()
        Dump a complete list of services to System.out.
        Specified by:
        dumpServices in interface ServiceContainer
      • dumpServices

        public void dumpServices​(java.io.PrintStream stream)
        Dump a complete list of services to the given stream.
        Specified by:
        dumpServices in interface ServiceContainer
        Parameters:
        stream - the stream to which the service list should be written
      • awaitTermination

        public void awaitTermination()
        Causes the current thread to wait until the container is shutdown.
        Specified by:
        awaitTermination in interface ServiceContainer
      • awaitTermination

        public void awaitTermination​(long timeout,
                                     java.util.concurrent.TimeUnit unit)
                              throws java.lang.InterruptedException
        Causes the current thread to wait until the container is shutdown.
        Specified by:
        awaitTermination in interface ServiceContainer
        Parameters:
        timeout - the maximum time to wait
        unit - the time unit of the timeout argument
        Throws:
        java.lang.InterruptedException - if the current thread is interrupted while waiting
      • awaitStability

        public void awaitStability()
                            throws java.lang.InterruptedException
        Causes the current thread to wait until the container is stable.
        Specified by:
        awaitStability in interface ServiceContainer
        Throws:
        java.lang.InterruptedException - if the current thread is interrupted while waiting
      • awaitStability

        public boolean awaitStability​(long timeout,
                                      java.util.concurrent.TimeUnit unit)
                               throws java.lang.InterruptedException
        Causes the current thread to wait until the container is stable.
        Specified by:
        awaitStability in interface ServiceContainer
        Parameters:
        timeout - the maximum time to wait
        unit - the time unit of the timeout argument
        Returns:
        true if this container achieved stability, false if the timeout elapsed before stability
        Throws:
        java.lang.InterruptedException - if the current thread is interrupted while waiting
      • awaitStability

        public void awaitStability​(java.util.Set<? super ServiceController<?>> failed,
                                   java.util.Set<? super ServiceController<?>> problem)
                            throws java.lang.InterruptedException
        Causes the current thread to wait until the container is stable.
        Specified by:
        awaitStability in interface ServiceContainer
        Parameters:
        failed - a set into which failed services should be copied
        problem - a set into which problem services should be copied
        Throws:
        java.lang.InterruptedException - if the current thread is interrupted while waiting
      • awaitStability

        public boolean awaitStability​(long timeout,
                                      java.util.concurrent.TimeUnit unit,
                                      java.util.Set<? super ServiceController<?>> failed,
                                      java.util.Set<? super ServiceController<?>> problem)
                               throws java.lang.InterruptedException
        Causes the current thread to wait until the container is stable.
        Specified by:
        awaitStability in interface ServiceContainer
        Parameters:
        timeout - the maximum time to wait
        unit - the time unit of the timeout argument
        failed - a set into which failed services should be copied
        problem - a set into which problem services should be copied
        Returns:
        true if this container achieved stability, false if the timeout elapsed before stability
        Throws:
        java.lang.InterruptedException - if the current thread is interrupted while waiting