Class Providers

java.lang.Object
org.glassfish.jersey.internal.inject.Providers

public final class Providers extends Object
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 Details

    • getProviders

      public 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 underlying injection 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

      public 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 underlying injection manager container.

      Returned providers are sorted based on Priority (lower Priority value is higher priority, see Priorities.

      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

      public 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 underlying injection 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 all providers (custom and default) registered for the given service provider contract in the underlying injection 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 with ranked 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 never null.
    • 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 underlying injection manager container and automatically sorted using ranked 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 with ranked 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 never null.
    • getAllProviders

      public static <T> Iterable<T> getAllProviders(InjectionManager injectionManager, 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.
      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 all ServiceHolders bound for providers (custom and default) registered for the given service provider contract in the underlying injection 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

      public static boolean isJaxRsProvider(Class<?> clazz)
      Returns true 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 underlying injection manager container ordered based on the given comparator.
      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

      public static Set<Class<?>> getProviderContracts(Class<?> clazz)
      Returns provider contracts recognized by Jersey that are implemented by the clazz. 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 the 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).

      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

      public static boolean isSupportedContract(Class<?> type)
      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

      public static boolean isProvider(Class<?> clazz)
      Returns true if the given component class is a provider (implements specific interfaces). See getProviderContracts(java.lang.Class<?>).
      Parameters:
      clazz - class to test.
      Returns:
      true if the class is provider, false otherwise.
    • ensureContract

      public static void ensureContract(Class<?> contract, Class<?>... implementations)
      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.