Class DelegatingServiceBuilder<T>

  • Type Parameters:
    T - the service type
    All Implemented Interfaces:
    ServiceBuilder<T>

    public final class DelegatingServiceBuilder<T>
    extends java.lang.Object
    implements ServiceBuilder<T>
    A service builder which delegates to another service builder.
    • Constructor Detail

      • DelegatingServiceBuilder

        public DelegatingServiceBuilder​(ServiceBuilder<T> delegate)
        Construct a new instance.
        Parameters:
        delegate - the builder to delegate to
    • Method Detail

      • addDependencies

        public ServiceBuilder<T> addDependencies​(java.lang.Iterable<ServiceName> dependencies)
        Add multiple, non-injected dependencies.
        Specified by:
        addDependencies in interface ServiceBuilder<T>
        Parameters:
        dependencies - the service names to depend on
        Returns:
        this builder
      • addDependency

        public ServiceBuilder<T> addDependency​(ServiceName dependency)
        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 interface ServiceBuilder<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)
        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 interface ServiceBuilder<T>
        Parameters:
        dependencyType - the dependency type; must not be null
        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)
        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 interface ServiceBuilder<T>
        Parameters:
        dependency - the name of the dependency
        target - 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)
        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 interface ServiceBuilder<T>
        Parameters:
        dependencyType - the dependency type; must not be null
        dependency - the name of the dependency
        target - 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)
        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 interface ServiceBuilder<T>
        Type Parameters:
        I - the type of the value of the dependency
        Parameters:
        dependency - the name of the dependency
        type - the class of the value of the dependency
        target - 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)
        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 interface ServiceBuilder<T>
        Type Parameters:
        I - the type of the value of the dependency
        Parameters:
        dependencyType - the dependency type; must not be null
        dependency - the name of the dependency
        type - the class of the value of the dependency
        target - the injector into which the dependency should be stored
        Returns:
        this builder
      • addInjection

        public <I> ServiceBuilder<T> addInjection​(Injector<? super I> target,
                                                  I value)
        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 interface ServiceBuilder<T>
        Type Parameters:
        I - the injection type
        Parameters:
        target - the injection target
        value - the injection value
        Returns:
        this builder
      • addInjectionValue

        public <I> ServiceBuilder<T> addInjectionValue​(Injector<? super I> target,
                                                       Value<I> value)
        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 interface ServiceBuilder<T>
        Type Parameters:
        I - the injection type
        Parameters:
        target - the injection target
        value - the injection value
        Returns:
        this builder
      • addInjection

        public ServiceBuilder<T> addInjection​(Injector<? super T> target)
        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 interface ServiceBuilder<T>
        Parameters:
        target - the injector target
        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 interface ServiceBuilder<T>
        Parameters:
        monitors - a list of stability monitors to add to the service
        Returns:
        this builder
      • addListener

        public ServiceBuilder<T> addListener​(ServiceListener<? super T> listener)
        Add a service listener that will be added to this service.
        Specified by:
        addListener in interface ServiceBuilder<T>
        Parameters:
        listener - the listener to add to the service
        Returns:
        this builder
      • addListener

        public ServiceBuilder<T> addListener​(ServiceListener<? super T>... listeners)
        Add service listeners that will be added to this service.
        Specified by:
        addListener in interface ServiceBuilder<T>
        Parameters:
        listeners - a list of listeners to add to the service
        Returns:
        this builder
      • addListener

        public ServiceBuilder<T> addListener​(java.util.Collection<? extends ServiceListener<? super T>> listeners)
        Add service listeners that will be added to this service.
        Specified by:
        addListener in interface ServiceBuilder<T>
        Parameters:
        listeners - a collection of listeners to add to the service
        Returns:
        this builder