Class ServiceProvider
All the methods in this class are safe to use by multiple concurrent threads.
- Since:
- 1.0
- Version:
- 2.3, May 19, 2023
- Author:
- Werner Keil, Martin Desruisseaux
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic final List<ServiceProvider>
Returns the list of all service providers available for the current thread's context class loader.static final ServiceProvider
current()
Returns the currentServiceProvider
.abstract FormatService
int
Allows to define a priority for a registeredServiceProvider
instance.abstract <Q extends Quantity<Q>>
QuantityFactory<Q>getQuantityFactory
(Class<Q> quantity) Returns a factory for the givenQuantity
type.abstract SystemOfUnitsService
Returns the service to obtain aSystemOfUnits
, ornull
if none.static ServiceProvider
Returns theServiceProvider
with the specified name.static final ServiceProvider
setCurrent
(ServiceProvider provider) Replaces the currentServiceProvider
.
-
Constructor Details
-
ServiceProvider
protected ServiceProvider()Creates a new service provider. Only to be used by subclasses.
-
-
Method Details
-
getPriority
Allows to define a priority for a registeredServiceProvider
instance. When multiple providers are registered in the system, the provider with the highest priority value is taken.If the "jakarta.annotation.Priority" annotation (from Jakarta Annotations) or "javax.annotation.Priority" annotation (from JSR-250) is present on the
ServiceProvider
implementation class, then that annotation (first if both were present) is taken and thisgetPriority()
method is ignored. Otherwise – if aPriority
annotation is absent – this method is used as a fallback.- Returns:
- the provider's priority (default is 0).
-
getSystemOfUnitsService
Returns the service to obtain aSystemOfUnits
, ornull
if none.- Returns:
- the service to obtain a
SystemOfUnits
, ornull
.
-
getFormatService
- Returns:
- the service to obtain a
UnitFormat
andQuantityFormat
, ornull
. - Since:
- 2.0
-
getQuantityFactory
Returns a factory for the givenQuantity
type.- Type Parameters:
Q
- the type of theQuantity
instances created by the factory- Parameters:
quantity
- the quantity type- Returns:
- the
QuantityFactory
for the given type
-
available
Returns the list of all service providers available for the current thread's context class loader. The current service provider is always the first item in the returned list. Other service providers after the first item may depend on the caller thread (see service loader API note).- Returns:
- all service providers available for the current thread's context class loader.
-
of
Returns theServiceProvider
with the specified name. The given name must match the name of at least one service provider available in the current thread's context class loader. The service provider names are the values of "jakarta.inject.Named" (from Jakarta Annotations) or "javax.inject.Named" (from JSR-330) annotations when present (first if both were present), or the value ofObject.toString()
method for providers withoutNamed
annotation.Implementors are encouraged to provide an
Named
annotation or to overrideObject.toString()
and use a unique enough name, e.g. the class name or other distinct attributes. Should multiple service providers nevertheless use the same name, the one with the highest priority wins.- Parameters:
name
- the name of the service provider to return- Returns:
- the
ServiceProvider
with the specified name - Throws:
IllegalArgumentException
- if available service providers do not contain a provider with the specified nameNullPointerException
- ifname
is null- Since:
- 2.0
- See Also:
-
current
Returns the currentServiceProvider
. If necessary theServiceProvider
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
setCurrent(ServiceProvider)
.- Returns:
- the
ServiceProvider
used. - Throws:
IllegalStateException
- if noServiceProvider
has been found.- See Also:
-
setCurrent
Replaces the currentServiceProvider
.- Parameters:
provider
- the newServiceProvider
- Returns:
- the replaced provider, or null.
-