Class ServiceProvider

java.lang.Object
javax.measure.spi.ServiceProvider

public abstract class ServiceProvider extends Object
Service Provider for Units of Measurement services.

All the methods in this class are safe to use by multiple concurrent threads.

Since:
1.0
Version:
1.0, August 8, 2016
  • Field Details

    • LOCK

      private static final Object LOCK
      Synchronization lock for searching or setting the service providers.
    • providers

      private static volatile ServiceProvider[] providers
      All service providers found, sorted in preference order. Array content shall never been changed after initialization; if we want to change the array content, a new array shall be created.
  • Constructor Details

    • ServiceProvider

      protected ServiceProvider()
      Creates a new service provider. Only to be used by subclasses.
  • Method Details

    • getPriority

      public int getPriority()
      This method allows to define a priority for a registered ServiceProvider instance. When multiple providers are registered in the system the provider with the highest priority value is taken.
      Returns:
      the provider's priority (default is 0).
    • getSystemOfUnitsService

      public abstract SystemOfUnitsService getSystemOfUnitsService()
      Returns the service to obtain a SystemOfUnits, or null if none.
      Returns:
      the service to obtain a SystemOfUnits, or null.
    • getUnitFormatService

      public abstract UnitFormatService getUnitFormatService()
      Returns the service to obtain a UnitFormat, or null if none.
      Returns:
      the service to obtain a UnitFormat, or null.
    • getQuantityFactory

      public abstract <Q extends Quantity<Q>> QuantityFactory<Q> getQuantityFactory(Class<Q> quantity)
      Return a factory for this Quantity.
      Parameters:
      quantity - the quantity
      Returns:
      the QuantityFactory
    • getProviders

      private static ServiceProvider[] getProviders()
      Gets all ServiceProvider. This method loads the provider when first needed.
    • available

      public static List<ServiceProvider> available()
      Returns the list of available service providers.
      Returns:
      all available service providers.
    • current

      public static ServiceProvider current()
      Returns the current ServiceProvider. If necessary the ServiceProvider will be lazily loaded.

      If there are no providers available, an IllegalStateException is thrown, otherwise the provider with the highest priority is used or the one explicitly designated via

      invalid reference
      setCurrent()
      .

      Returns:
      the ServiceProvider used.
      Throws:
      IllegalStateException - if no ServiceProvider has been found.
      See Also:
    • setCurrent

      public static ServiceProvider setCurrent(ServiceProvider provider)
      Replaces the current ServiceProvider.
      Parameters:
      provider - the new ServiceProvider
      Returns:
      the removed provider, or null.