Class DefaultServiceLocator

  • All Implemented Interfaces:
    ServiceLocator

    public final class DefaultServiceLocator
    extends Object
    implements ServiceLocator
    A simple service locator that is already setup with all components from this library. To acquire a complete repository system, clients need to add an artifact descriptor reader, a version resolver, a version range resolver and optionally some repository connector and transporter factories to access remote repositories. Once the locator is fully populated, the repository system can be created like this:
     RepositorySystem repoSystem = serviceLocator.getService( RepositorySystem.class );
     
    Note: This class is not thread-safe. Clients are expected to create the service locator and the repository system on a single thread.
    • Constructor Detail

      • DefaultServiceLocator

        public DefaultServiceLocator()
        Creates a new service locator that already knows about all service implementations included this library.
    • Method Detail

      • setService

        public <T> DefaultServiceLocator setService​(Class<T> type,
                                                    Class<? extends T> impl)
        Sets the implementation class for a service. The specified class must have a no-arg constructor (of any visibility). If the service implementation itself requires other services for its operation, it should implement Service to gain access to this service locator.
        Type Parameters:
        T - The service type.
        Parameters:
        type - The interface describing the service, must not be null.
        impl - The implementation class of the service, must not be null.
        Returns:
        This locator for chaining, never null.
      • addService

        public <T> DefaultServiceLocator addService​(Class<T> type,
                                                    Class<? extends T> impl)
        Adds an implementation class for a service. The specified class must have a no-arg constructor (of any visibility). If the service implementation itself requires other services for its operation, it should implement Service to gain access to this service locator.
        Type Parameters:
        T - The service type.
        Parameters:
        type - The interface describing the service, must not be null.
        impl - The implementation class of the service, must not be null.
        Returns:
        This locator for chaining, never null.
      • setServices

        public <T> DefaultServiceLocator setServices​(Class<T> type,
                                                     T... services)
        Sets the instances for a service.
        Type Parameters:
        T - The service type.
        Parameters:
        type - The interface describing the service, must not be null.
        services - The instances of the service, may be null but must not contain null elements.
        Returns:
        This locator for chaining, never null.
      • getService

        public <T> T getService​(Class<T> type)
        Description copied from interface: ServiceLocator
        Gets an instance of the specified service.
        Specified by:
        getService in interface ServiceLocator
        Type Parameters:
        T - The service type.
        Parameters:
        type - The interface describing the service, must not be null.
        Returns:
        The service instance or null if the service could not be located/initialized.
      • getServices

        public <T> List<T> getServices​(Class<T> type)
        Description copied from interface: ServiceLocator
        Gets all available instances of the specified service.
        Specified by:
        getServices in interface ServiceLocator
        Type Parameters:
        T - The service type.
        Parameters:
        type - The interface describing the service, must not be null.
        Returns:
        The (read-only) list of available service instances, never null.