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.
|
static <T> org.glassfish.hk2.api.Factory<T> |
factoryOf(T instance)
Wrap an instance into a HK2 service factory.
|
private static boolean |
findFirstProviderContract(java.lang.Class<?> clazz) |
static <T> java.lang.Iterable<T> |
getAllProviders(org.glassfish.hk2.api.ServiceLocator locator,
java.lang.Class<T> contract)
Get the iterable of all providers (custom and default) registered for the given service provider contract
in the underlying
HK2 service locator container. |
static <T> java.lang.Iterable<T> |
getAllProviders(org.glassfish.hk2.api.ServiceLocator locator,
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
HK2 service locator container ordered based on the given comparator. |
static <T> java.lang.Iterable<T> |
getAllProviders(org.glassfish.hk2.api.ServiceLocator locator,
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 HK2 service locator container. |
static <T> java.lang.Iterable<RankedProvider<T>> |
getAllRankedProviders(org.glassfish.hk2.api.ServiceLocator locator,
java.lang.Class<T> contract)
Get the iterable of all
providers (custom and default) registered for the given service provider
contract in the underlying HK2 service locator container. |
static <T> java.util.Collection<org.glassfish.hk2.api.ServiceHandle<T>> |
getAllServiceHandles(org.glassfish.hk2.api.ServiceLocator locator,
java.lang.Class<T> contract)
Get collection of all
ServiceHandles bound for providers (custom and default) registered for the given service
provider contract in the underlying HK2 service locator container. |
private static <T> java.util.Set<T> |
getClasses(java.util.Collection<org.glassfish.hk2.api.ServiceHandle<T>> hk2Providers) |
private static javax.ws.rs.RuntimeType |
getContractConstraint(java.lang.Class<?> clazz,
javax.ws.rs.RuntimeType defaultConstraint) |
static <T> java.util.Set<T> |
getCustomProviders(org.glassfish.hk2.api.ServiceLocator locator,
java.lang.Class<T> contract)
Get the set of all custom providers registered for the given service provider contract
in the underlying
HK2 service locator 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() |
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(org.glassfish.hk2.api.ServiceLocator locator,
java.lang.Class<T> contract)
Get the set of default providers registered for the given service provider contract
in the underlying
HK2 service locator container. |
static <T> java.util.SortedSet<T> |
getProviders(org.glassfish.hk2.api.ServiceLocator locator,
java.lang.Class<T> contract,
java.util.Comparator<T> comparator)
Get the set of all providers registered for the given service provider contract
in the underlying
HK2 locator container. |
private static <T> java.util.List<org.glassfish.hk2.api.ServiceHandle<T>> |
getServiceHandles(org.glassfish.hk2.api.ServiceLocator locator,
java.lang.Class<T> contract,
java.lang.annotation.Annotation... qualifiers) |
static <T> void |
injectProviders(java.lang.Iterable<T> providerInstances,
org.glassfish.hk2.api.ServiceLocator serviceLocator)
Inject
providerInstances. |
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> org.glassfish.hk2.api.Factory<T> factoryOf(T instance)
T - Java type if the contract produced by the provider and factory.instance - instance to be wrapped into (and provided by) the factory.public static <T> java.util.Set<T> getProviders(org.glassfish.hk2.api.ServiceLocator locator,
java.lang.Class<T> contract)
HK2 service locator container.T - service provider contract Java type.locator - underlying HK2 service locator.contract - service provider contract.public static <T> java.util.Set<T> getCustomProviders(org.glassfish.hk2.api.ServiceLocator locator,
java.lang.Class<T> contract)
HK2 service locator container.T - service provider contract Java type.locator - underlying HK2 service locator.contract - service provider contract.public static <T> java.lang.Iterable<T> getAllProviders(org.glassfish.hk2.api.ServiceLocator locator,
java.lang.Class<T> contract)
HK2 service locator container.T - service provider contract Java type.locator - underlying HK2 service locator.contract - service provider contract.public static <T> java.lang.Iterable<RankedProvider<T>> getAllRankedProviders(org.glassfish.hk2.api.ServiceLocator locator, java.lang.Class<T> contract)
providers (custom and default) registered for the given service provider
contract in the underlying HK2 service locator container.T - service provider contract Java type.locator - underlying HK2 service locator.contract - service provider contract.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> 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(org.glassfish.hk2.api.ServiceLocator locator,
java.lang.Class<T> contract,
RankedComparator<T> comparator)
providers (custom and default) registered for the given service
provider contract in the underlying HK2 service locator container.T - service provider contract Java type.locator - underlying HK2 service locator.contract - service provider contract.comparator - comparator to sort the providers with.public static <T> java.util.Collection<org.glassfish.hk2.api.ServiceHandle<T>> getAllServiceHandles(org.glassfish.hk2.api.ServiceLocator locator,
java.lang.Class<T> contract)
ServiceHandles bound for providers (custom and default) registered for the given service
provider contract in the underlying HK2 service locator container.T - service provider contract Java type.locator - underlying HK2 service locator.contract - service provider contract.private static <T> java.util.List<org.glassfish.hk2.api.ServiceHandle<T>> getServiceHandles(org.glassfish.hk2.api.ServiceLocator locator,
java.lang.Class<T> contract,
java.lang.annotation.Annotation... qualifiers)
public static <T> java.lang.Iterable<T> getAllProviders(org.glassfish.hk2.api.ServiceLocator locator,
java.lang.Class<T> contract,
java.util.Comparator<T> comparator)
HK2 service locator container ordered based on the given comparator.T - service provider contract Java type.locator - underlying HK2 service locator.contract - service provider contract.comparator - comparator to be used for sorting the returned providers.comparator.private static <T> java.util.Set<T> getClasses(java.util.Collection<org.glassfish.hk2.api.ServiceHandle<T>> hk2Providers)
public static <T> java.util.SortedSet<T> getProviders(org.glassfish.hk2.api.ServiceLocator locator,
java.lang.Class<T> contract,
java.util.Comparator<T> comparator)
HK2 locator container.T - service provider contract Java type.locator - underlying HK2 service locator.contract - service provider contract.comparator - contract comparator used for ordering contracts in the
set.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 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 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.public static <T> void injectProviders(java.lang.Iterable<T> providerInstances,
org.glassfish.hk2.api.ServiceLocator serviceLocator)
providerInstances. The method iterates through providerInstances
and initializes injectable fields of each instance using serviceLocator.providerInstances - Iterable of provider instances to be injected.serviceLocator - Service locator.private static boolean findFirstProviderContract(java.lang.Class<?> clazz)