public final class Providers
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
private static class |
Providers.ProviderRuntime |
Modifier and Type | Field and Description |
---|---|
private static java.util.Map<java.lang.Class<?>,Providers.ProviderRuntime> |
EXTERNAL_PROVIDER_INTERFACE_WHITELIST
Map of all supported external (i.e.
|
private static java.util.Map<java.lang.Class<?>,Providers.ProviderRuntime> |
JAX_RS_PROVIDER_INTERFACE_WHITELIST
Map of all standard JAX-RS providers and their run-time affinity.
|
private static java.util.logging.Logger |
LOGGER |
Modifier | Constructor and Description |
---|---|
private |
Providers() |
Modifier and Type | Method and Description |
---|---|
static boolean |
checkProviderRuntime(java.lang.Class<?> component,
ContractProvider model,
javax.ws.rs.RuntimeType runtimeConstraint,
boolean scanned,
boolean isResource)
Check the
component whether it is appropriate correctly configured for client or server
runtime . |
private static void |
computeProviderContracts(java.lang.Class<?> clazz,
java.util.Set<java.lang.Class<?>> contracts) |
static void |
ensureContract(java.lang.Class<?> contract,
java.lang.Class<?>... implementations)
Ensure the supplied implementation classes implement the expected contract.
|
private static boolean |
findFirstProviderContract(java.lang.Class<?> clazz) |
static <T> java.lang.Iterable<T> |
getAllProviders(InjectionManager injectionManager,
java.lang.Class<T> contract)
Get the iterable of all providers (custom and default) registered for the given service provider contract
in the underlying
injection manager container. |
static <T> java.lang.Iterable<T> |
getAllProviders(InjectionManager injectionManager,
java.lang.Class<T> contract,
java.util.Comparator<T> comparator)
Get the iterable of all providers (custom and default) registered for the given service provider contract
in the underlying
injection manager container ordered based on the given comparator . |
static <T> java.lang.Iterable<T> |
getAllProviders(InjectionManager injectionManager,
java.lang.Class<T> contract,
RankedComparator<T> comparator)
Get the sorted iterable of all
providers (custom and default) registered for the given service
provider contract in the underlying injection manager container. |
static <T> java.lang.Iterable<RankedProvider<T>> |
getAllRankedProviders(InjectionManager injectionManager,
java.lang.Class<T> contract)
Get the iterable of all
providers (custom and default) registered for the given service provider
contract in the underlying injection manager container. |
static <T> java.lang.Iterable<T> |
getAllRankedSortedProviders(InjectionManager injectionManager,
java.lang.Class<T> contract)
Get the iterable of all providers (custom and default) registered for the given service provider contract in the underlying
injection manager container and automatically sorted using
ranked comparator . |
static <T> java.util.Collection<ServiceHolder<T>> |
getAllServiceHolders(InjectionManager injectionManager,
java.lang.Class<T> contract)
Get collection of all
ServiceHolder s bound for providers (custom and default) registered for the given service
provider contract in the underlying injection manager container. |
private static javax.ws.rs.RuntimeType |
getContractConstraint(java.lang.Class<?> clazz,
javax.ws.rs.RuntimeType defaultConstraint) |
static <T> java.util.Set<T> |
getCustomProviders(InjectionManager injectionManager,
java.lang.Class<T> contract)
Get the set of all custom providers registered for the given service provider contract
in the underlying
injection manager container. |
private static java.util.Map<java.lang.Class<?>,Providers.ProviderRuntime> |
getExternalProviderInterfaces() |
private static java.lang.Iterable<java.lang.Class<?>> |
getImplementedContracts(java.lang.Class<?> clazz) |
private static java.util.Map<java.lang.Class<?>,Providers.ProviderRuntime> |
getJaxRsProviderInterfaces() |
private static int |
getPriority(java.lang.Class<?> serviceClass) |
private static <T> java.util.Set<T> |
getProviderClasses(java.util.Collection<ServiceHolder<T>> providers) |
static java.util.Set<java.lang.Class<?>> |
getProviderContracts(java.lang.Class<?> clazz)
Returns provider contracts recognized by Jersey that are implemented by the
clazz . |
static <T> java.util.Set<T> |
getProviders(InjectionManager injectionManager,
java.lang.Class<T> contract)
Get the set of default providers registered for the given service provider contract
in the underlying
injection manager container. |
private static <T> java.util.List<ServiceHolder<T>> |
getServiceHolders(InjectionManager bm,
java.lang.Class<T> contract,
java.lang.annotation.Annotation... qualifiers) |
private static <T> java.util.List<ServiceHolder<T>> |
getServiceHolders(InjectionManager injectionManager,
java.lang.Class<T> contract,
java.util.Comparator<java.lang.Class<?>> objectComparator,
java.lang.annotation.Annotation... qualifiers) |
private static <T> T |
holder2service(ServiceHolder<T> holder) |
static boolean |
isJaxRsProvider(java.lang.Class<?> clazz)
Returns
true if given component class is a JAX-RS provider. |
static boolean |
isProvider(java.lang.Class<?> clazz)
Returns
true if the given component class is a provider (implements specific interfaces). |
static boolean |
isSupportedContract(java.lang.Class<?> type)
Check if the given Java type is a Jersey-supported contract.
|
private static void |
logProviderSkipped(java.lang.StringBuilder sb,
java.lang.Class<?> provider,
boolean alsoResourceClass) |
static <T> java.lang.Iterable<T> |
mergeAndSortRankedProviders(RankedComparator<T> comparator,
java.lang.Iterable<java.lang.Iterable<RankedProvider<T>>> providerIterables)
Merge and sort given providers with
ranked comparator . |
static <T> java.lang.Iterable<T> |
sortRankedProviders(RankedComparator<T> comparator,
java.lang.Iterable<RankedProvider<T>> providers)
Sort given providers with
ranked comparator . |
private static final java.util.logging.Logger LOGGER
private static final java.util.Map<java.lang.Class<?>,Providers.ProviderRuntime> JAX_RS_PROVIDER_INTERFACE_WHITELIST
private static final java.util.Map<java.lang.Class<?>,Providers.ProviderRuntime> EXTERNAL_PROVIDER_INTERFACE_WHITELIST
private static java.util.Map<java.lang.Class<?>,Providers.ProviderRuntime> getJaxRsProviderInterfaces()
private static java.util.Map<java.lang.Class<?>,Providers.ProviderRuntime> getExternalProviderInterfaces()
public static <T> java.util.Set<T> getProviders(InjectionManager injectionManager, java.lang.Class<T> contract)
injection manager
container.T
- service provider contract Java type.injectionManager
- underlying injection manager.contract
- service provider contract.public static <T> java.util.Set<T> getCustomProviders(InjectionManager injectionManager, java.lang.Class<T> contract)
injection manager
container.
Returned providers are sorted based on Priority
(lower Priority
value is higher priority,
see Priorities
.
T
- service provider contract Java type.injectionManager
- underlying injection manager.contract
- service provider contract.public static <T> java.lang.Iterable<T> getAllProviders(InjectionManager injectionManager, java.lang.Class<T> contract)
injection manager
container.T
- service provider contract Java type.injectionManager
- underlying injection manager.contract
- service provider contract.public static <T> java.lang.Iterable<RankedProvider<T>> getAllRankedProviders(InjectionManager injectionManager, java.lang.Class<T> contract)
providers
(custom and default) registered for the given service provider
contract in the underlying injection manager
container.T
- service provider contract Java type.injectionManager
- underlying injection manager.contract
- service provider contract.null
.public static <T> java.lang.Iterable<T> sortRankedProviders(RankedComparator<T> comparator, java.lang.Iterable<RankedProvider<T>> providers)
ranked comparator
.T
- service provider contract Java type.comparator
- comparator to sort the providers with.providers
- providers to be sorted.iterable
instance containing given providers.
The returned value is never null
.public static <T> java.lang.Iterable<T> getAllRankedSortedProviders(InjectionManager injectionManager, java.lang.Class<T> contract)
injection manager
container and automatically sorted using
ranked comparator
.T
- service provider contract Java type.injectionManager
- underlying injection manager.contract
- service provider contract.null
.public static <T> java.lang.Iterable<T> mergeAndSortRankedProviders(RankedComparator<T> comparator, java.lang.Iterable<java.lang.Iterable<RankedProvider<T>>> providerIterables)
ranked comparator
.T
- service provider contract Java type.comparator
- comparator to sort the providers with.providerIterables
- providers to be sorted.iterable
instance containing given providers.
The returned value is never null
.public static <T> java.lang.Iterable<T> getAllProviders(InjectionManager injectionManager, java.lang.Class<T> contract, RankedComparator<T> comparator)
providers
(custom and default) registered for the given service
provider contract in the underlying injection manager
container.T
- service provider contract Java type.injectionManager
- underlying injection manager.contract
- service provider contract.comparator
- comparator to sort the providers with.public static <T> java.util.Collection<ServiceHolder<T>> getAllServiceHolders(InjectionManager injectionManager, java.lang.Class<T> contract)
ServiceHolder
s bound for providers (custom and default) registered for the given service
provider contract in the underlying injection manager
container.T
- service provider contract Java type.injectionManager
- underlying injection manager.contract
- service provider contract.private static <T> java.util.List<ServiceHolder<T>> getServiceHolders(InjectionManager bm, java.lang.Class<T> contract, java.lang.annotation.Annotation... qualifiers)
private static <T> java.util.List<ServiceHolder<T>> getServiceHolders(InjectionManager injectionManager, java.lang.Class<T> contract, java.util.Comparator<java.lang.Class<?>> objectComparator, java.lang.annotation.Annotation... qualifiers)
public static boolean isJaxRsProvider(java.lang.Class<?> clazz)
true
if given component class is a JAX-RS provider.clazz
- class to check.true
if the class is a JAX-RS provider, false
otherwise.public static <T> java.lang.Iterable<T> getAllProviders(InjectionManager injectionManager, java.lang.Class<T> contract, java.util.Comparator<T> comparator)
injection manager
container ordered based on the given comparator
.T
- service provider contract Java type.injectionManager
- underlying injection manager.contract
- service provider contract.comparator
- comparator to be used for sorting the returned providers.comparator
.private static <T> java.util.Set<T> getProviderClasses(java.util.Collection<ServiceHolder<T>> providers)
private static <T> T holder2service(ServiceHolder<T> holder)
private static int getPriority(java.lang.Class<?> serviceClass)
public static java.util.Set<java.lang.Class<?>> getProviderContracts(java.lang.Class<?> clazz)
clazz
.
Recognized provider contracts include all JAX-RS providers as well as all Jersey SPI
components annotated with @Contract
annotation.clazz
- class to extract the provider interfaces from.private static void computeProviderContracts(java.lang.Class<?> clazz, java.util.Set<java.lang.Class<?>> contracts)
public static boolean checkProviderRuntime(java.lang.Class<?> component, ContractProvider model, javax.ws.rs.RuntimeType runtimeConstraint, boolean scanned, boolean isResource)
component
whether it is appropriate correctly configured for client or server
runtime
.
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. components constrained to
the client runtime and found by
server-side class path scanning will be silently ignored and no warning will be logged).
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.true
if component is acceptable for use in the given runtime type, false
otherwise.private static void logProviderSkipped(java.lang.StringBuilder sb, java.lang.Class<?> provider, boolean alsoResourceClass)
public static boolean isSupportedContract(java.lang.Class<?> type)
type
- contract type.true
if given type is a Jersey-supported contract, false
otherwise.private static javax.ws.rs.RuntimeType getContractConstraint(java.lang.Class<?> clazz, javax.ws.rs.RuntimeType defaultConstraint)
private static java.lang.Iterable<java.lang.Class<?>> getImplementedContracts(java.lang.Class<?> clazz)
public static boolean isProvider(java.lang.Class<?> clazz)
true
if the given component class is a provider (implements specific interfaces).
See getProviderContracts(java.lang.Class<?>)
.clazz
- class to test.true
if the class is provider, false
otherwise.public static void ensureContract(java.lang.Class<?> contract, java.lang.Class<?>... implementations)
contract
- contract that is expected to be implemented by the implementation classes.implementations
- contract implementations.java.lang.IllegalArgumentException
- in case any of the implementation classes does not
implement the expected contract.private static boolean findFirstProviderContract(java.lang.Class<?> clazz)