Class Providers
java.lang.Object
org.glassfish.jersey.internal.inject.Providers
Utility class providing a set of utility methods for easier and more type-safe
interaction with an injection layer.
- Author:
- Marek Potociar, Miroslav Fuksa
-
Method Summary
Modifier and TypeMethodDescriptionstatic boolean
checkProviderRuntime
(Class<?> component, ContractProvider model, RuntimeType runtimeConstraint, boolean scanned, boolean isResource) Check thecomponent
whether it is appropriate correctly configured for client or serverruntime
.static void
ensureContract
(Class<?> contract, Class<?>... implementations) Ensure the supplied implementation classes implement the expected contract.static <T> Iterable<T>
getAllProviders
(InjectionManager injectionManager, Class<T> contract) Get the iterable of all providers (custom and default) registered for the given service provider contract in the underlyinginjection manager
container.static <T> Iterable<T>
getAllProviders
(InjectionManager injectionManager, Class<T> contract, Comparator<T> comparator) Get the iterable of all providers (custom and default) registered for the given service provider contract in the underlyinginjection manager
container ordered based on the givencomparator
.static <T> Iterable<T>
getAllProviders
(InjectionManager injectionManager, Class<T> contract, RankedComparator<T> comparator) Get the sorted iterable of allproviders
(custom and default) registered for the given service provider contract in the underlyinginjection manager
container.static <T> Iterable<RankedProvider<T>>
getAllRankedProviders
(InjectionManager injectionManager, Class<T> contract) Get the iterable of allproviders
(custom and default) registered for the given service provider contract in the underlyinginjection manager
container.static <T> Iterable<T>
getAllRankedSortedProviders
(InjectionManager injectionManager, Class<T> contract) Get the iterable of all providers (custom and default) registered for the given service provider contract in the underlyinginjection manager
container and automatically sorted usingranked comparator
.static <T> Collection<ServiceHolder<T>>
getAllServiceHolders
(InjectionManager injectionManager, Class<T> contract) Get collection of allServiceHolder
s bound for providers (custom and default) registered for the given service provider contract in the underlyinginjection manager
container.static <T> Set<T>
getCustomProviders
(InjectionManager injectionManager, Class<T> contract) Get the set of all custom providers registered for the given service provider contract in the underlyinginjection manager
container.getProviderContracts
(Class<?> clazz) Returns provider contracts recognized by Jersey that are implemented by theclazz
.static <T> Set<T>
getProviders
(InjectionManager injectionManager, Class<T> contract) Get the set of default providers registered for the given service provider contract in the underlyinginjection manager
container.static boolean
isJaxRsProvider
(Class<?> clazz) Returnstrue
if given component class is a JAX-RS provider.static boolean
isProvider
(Class<?> clazz) Returnstrue
if the given component class is a provider (implements specific interfaces).static boolean
isSupportedContract
(Class<?> type) Check if the given Java type is a Jersey-supported contract.static <T> Iterable<T>
mergeAndSortRankedProviders
(RankedComparator<T> comparator, Iterable<Iterable<RankedProvider<T>>> providerIterables) Merge and sort given providers withranked comparator
.static <T> Iterable<T>
sortRankedProviders
(RankedComparator<T> comparator, Iterable<RankedProvider<T>> providers) Sort given providers withranked comparator
.
-
Method Details
-
getProviders
Get the set of default providers registered for the given service provider contract in the underlyinginjection manager
container.- Type Parameters:
T
- service provider contract Java type.- Parameters:
injectionManager
- underlying injection manager.contract
- service provider contract.- Returns:
- set of all available default service provider instances for the contract.
-
getCustomProviders
Get the set of all custom providers registered for the given service provider contract in the underlyinginjection manager
container.Returned providers are sorted based on
Priority
(lowerPriority
value is higher priority, seePriorities
.- Type Parameters:
T
- service provider contract Java type.- Parameters:
injectionManager
- underlying injection manager.contract
- service provider contract.- Returns:
- set of all available service provider instances for the contract.
-
getAllProviders
Get the iterable of all providers (custom and default) registered for the given service provider contract in the underlyinginjection manager
container.- Type Parameters:
T
- service provider contract Java type.- Parameters:
injectionManager
- underlying injection manager.contract
- service provider contract.- Returns:
- iterable of all available service provider instances for the contract. Return value is never null.
-
getAllRankedProviders
public static <T> Iterable<RankedProvider<T>> getAllRankedProviders(InjectionManager injectionManager, Class<T> contract) Get the iterable of allproviders
(custom and default) registered for the given service provider contract in the underlyinginjection manager
container.- Type Parameters:
T
- service provider contract Java type.- Parameters:
injectionManager
- underlying injection manager.contract
- service provider contract.- Returns:
- iterable of all available ranked service providers for the contract. Return value is never
null
.
-
sortRankedProviders
public static <T> Iterable<T> sortRankedProviders(RankedComparator<T> comparator, Iterable<RankedProvider<T>> providers) Sort given providers withranked comparator
.- Type Parameters:
T
- service provider contract Java type.- Parameters:
comparator
- comparator to sort the providers with.providers
- providers to be sorted.- Returns:
- sorted
iterable
instance containing given providers. The returned value is nevernull
.
-
getAllRankedSortedProviders
public static <T> Iterable<T> getAllRankedSortedProviders(InjectionManager injectionManager, Class<T> contract) Get the iterable of all providers (custom and default) registered for the given service provider contract in the underlyinginjection manager
container and automatically sorted usingranked comparator
.- Type Parameters:
T
- service provider contract Java type.- Parameters:
injectionManager
- underlying injection manager.contract
- service provider contract.- Returns:
- iterable of all available service providers for the contract. Return value is never
null
.
-
mergeAndSortRankedProviders
public static <T> Iterable<T> mergeAndSortRankedProviders(RankedComparator<T> comparator, Iterable<Iterable<RankedProvider<T>>> providerIterables) Merge and sort given providers withranked comparator
.- Type Parameters:
T
- service provider contract Java type.- Parameters:
comparator
- comparator to sort the providers with.providerIterables
- providers to be sorted.- Returns:
- merged and sorted
iterable
instance containing given providers. The returned value is nevernull
.
-
getAllProviders
public static <T> Iterable<T> getAllProviders(InjectionManager injectionManager, Class<T> contract, RankedComparator<T> comparator) Get the sorted iterable of allproviders
(custom and default) registered for the given service provider contract in the underlyinginjection manager
container.- Type Parameters:
T
- service provider contract Java type.- Parameters:
injectionManager
- underlying injection manager.contract
- service provider contract.comparator
- comparator to sort the providers with.- Returns:
- set of all available ranked service providers for the contract. Return value is never null.
-
getAllServiceHolders
public static <T> Collection<ServiceHolder<T>> getAllServiceHolders(InjectionManager injectionManager, Class<T> contract) Get collection of allServiceHolder
s bound for providers (custom and default) registered for the given service provider contract in the underlyinginjection manager
container.- Type Parameters:
T
- service provider contract Java type.- Parameters:
injectionManager
- underlying injection manager.contract
- service provider contract.- Returns:
- set of all available service provider instances for the contract
-
isJaxRsProvider
Returnstrue
if given component class is a JAX-RS provider.- Parameters:
clazz
- class to check.- Returns:
true
if the class is a JAX-RS provider,false
otherwise.
-
getAllProviders
public static <T> Iterable<T> getAllProviders(InjectionManager injectionManager, Class<T> contract, Comparator<T> comparator) Get the iterable of all providers (custom and default) registered for the given service provider contract in the underlyinginjection manager
container ordered based on the givencomparator
.- Type Parameters:
T
- service provider contract Java type.- Parameters:
injectionManager
- underlying injection manager.contract
- service provider contract.comparator
- comparator to be used for sorting the returned providers.- Returns:
- set of all available service provider instances for the contract ordered using the given
comparator
.
-
getProviderContracts
Returns provider contracts recognized by Jersey that are implemented by theclazz
. Recognized provider contracts include all JAX-RS providers as well as all Jersey SPI components annotated with@Contract
annotation.- Parameters:
clazz
- class to extract the provider interfaces from.- Returns:
- set of provider contracts implemented by the given class.
-
checkProviderRuntime
public static boolean checkProviderRuntime(Class<?> component, ContractProvider model, RuntimeType runtimeConstraint, boolean scanned, boolean isResource) Check thecomponent
whether it is appropriate correctly configured for client or serverruntime
.If a problem occurs a warning is logged and if the component is not usable at all in the current runtime
false
is returned. For classes found during component scanning (scanned=true) certain warnings are completely ignored (e.g. componentsconstrained to
the client runtime and found by server-side class path scanning will be silently ignored and no warning will be logged).- Parameters:
component
- the class of the component being checked.model
- model of the component.runtimeConstraint
- current runtime (client or server).scanned
-false
if the component type has been registered explicitly;true
if the class has been discovered during any form of component scanning.isResource
-true
if the component is also a resource class.- Returns:
true
if component is acceptable for use in the given runtime type,false
otherwise.
-
isSupportedContract
Check if the given Java type is a Jersey-supported contract.- Parameters:
type
- contract type.- Returns:
true
if given type is a Jersey-supported contract,false
otherwise.
-
isProvider
Returnstrue
if the given component class is a provider (implements specific interfaces). SeegetProviderContracts(java.lang.Class<?>)
.- Parameters:
clazz
- class to test.- Returns:
true
if the class is provider,false
otherwise.
-
ensureContract
Ensure the supplied implementation classes implement the expected contract.- Parameters:
contract
- contract that is expected to be implemented by the implementation classes.implementations
- contract implementations.- Throws:
IllegalArgumentException
- in case any of the implementation classes does not implement the expected contract.
-