/** * Look for a service of given type. If more then one service is found the method sorts them are returns the one with highest * priority. * * @param clazz type of service to look for. * @param <T> type of service to look for. * @return instance of service with highest priority or {@code null} if service of given type cannot be found. * @see javax.annotation.Priority */ private static <T> Optional<T> lookupService(final Class<T> clazz) { List<RankedProvider<T>> providers = new LinkedList<>(); for (T provider : ServiceFinder.find(clazz)) { providers.add(new RankedProvider<>(provider)); } providers.sort(new RankedComparator<>(RankedComparator.Order.DESCENDING)); return providers.isEmpty() ? Optional.empty() : Optional.ofNullable(providers.get(0).getProvider()); }
/** * Look for a service of given type. If more then one service is found the method sorts them are returns the one with highest * priority. * * @param clazz type of service to look for. * @param <T> type of service to look for. * @return instance of service with highest priority or {@code null} if service of given type cannot be found. * @see javax.annotation.Priority */ private static <T> Optional<T> lookupService(final Class<T> clazz) { List<RankedProvider<T>> providers = new LinkedList<>(); for (T provider : ServiceFinder.find(clazz)) { providers.add(new RankedProvider<>(provider)); } providers.sort(new RankedComparator<>(RankedComparator.Order.DESCENDING)); return providers.isEmpty() ? Optional.empty() : Optional.ofNullable(providers.get(0).getProvider()); }
/** * Look for a service of given type. If more then one service is found the method sorts them are returns the one with highest * priority. * * @param clazz type of service to look for. * @param <T> type of service to look for * @return instance of service with highest priority or {@code null} if service of given type cannot be found. * @see javax.annotation.Priority */ static <T> T lookupService(final Class<T> clazz) { final List<RankedProvider<T>> providers = new LinkedList<>(); for (final T provider : ServiceFinder.find(clazz)) { providers.add(new RankedProvider<>(provider)); } Collections.sort(providers, new RankedComparator<T>(RankedComparator.Order.ASCENDING)); return providers.isEmpty() ? null : providers.get(0).getProvider(); }
/** * Get the iterable of all {@link RankedProvider providers} (custom and default) registered for the given service provider * contract in the underlying {@link InjectionManager injection manager} container. * * @param <T> service provider contract Java type. * @param injectionManager underlying injection manager. * @param contract service provider contract. * @return iterable of all available ranked service providers for the contract. Return value is never {@code null}. */ public static <T> Iterable<RankedProvider<T>> getAllRankedProviders(InjectionManager injectionManager, Class<T> contract) { List<ServiceHolder<T>> providers = getServiceHolders(injectionManager, contract, CustomAnnotationLiteral.INSTANCE); providers.addAll(getServiceHolders(injectionManager, contract)); LinkedHashMap<ServiceHolder<T>, RankedProvider<T>> providerMap = new LinkedHashMap<>(); for (ServiceHolder<T> provider : providers) { if (!providerMap.containsKey(provider)) { Set<Type> contractTypes = provider.getContractTypes(); Class<?> implementationClass = provider.getImplementationClass(); boolean proxyGenerated = true; for (Type ct : contractTypes) { if (((Class<?>) ct).isAssignableFrom(implementationClass)) { proxyGenerated = false; break; } } Set<Type> contracts = proxyGenerated ? contractTypes : null; providerMap.put(provider, new RankedProvider<>(provider.getInstance(), provider.getRank(), contracts)); } } return providerMap.values(); }
/** * Get the iterable of all {@link RankedProvider providers} (custom and default) registered for the given service provider * contract in the underlying {@link InjectionManager injection manager} container. * * @param <T> service provider contract Java type. * @param injectionManager underlying injection manager. * @param contract service provider contract. * @return iterable of all available ranked service providers for the contract. Return value is never {@code null}. */ public static <T> Iterable<RankedProvider<T>> getAllRankedProviders(InjectionManager injectionManager, Class<T> contract) { List<ServiceHolder<T>> providers = getServiceHolders(injectionManager, contract, CustomAnnotationLiteral.INSTANCE); providers.addAll(getServiceHolders(injectionManager, contract)); LinkedHashMap<ServiceHolder<T>, RankedProvider<T>> providerMap = new LinkedHashMap<>(); for (ServiceHolder<T> provider : providers) { if (!providerMap.containsKey(provider)) { Set<Type> contractTypes = provider.getContractTypes(); Class<?> implementationClass = provider.getImplementationClass(); boolean proxyGenerated = true; for (Type ct : contractTypes) { if (((Class<?>) ct).isAssignableFrom(implementationClass)) { proxyGenerated = false; break; } } Set<Type> contracts = proxyGenerated ? contractTypes : null; providerMap.put(provider, new RankedProvider<>(provider.getInstance(), provider.getRank(), contracts)); } } return providerMap.values(); }
new RankedProvider<>( (WriterInterceptor) provider, model.getPriority(WriterInterceptor.class))); new RankedProvider<>( (ReaderInterceptor) provider, model.getPriority(ReaderInterceptor.class))); new RankedProvider<>( (ContainerRequestFilter) provider, model.getPriority(ContainerRequestFilter.class))); new RankedProvider<>( (ContainerResponseFilter) provider, model.getPriority(ContainerResponseFilter.class)));
if (preMatching && preMatchingFilters != null) { it.remove(); preMatchingFilters.add(new RankedProvider<>((ContainerRequestFilter) provider.getProvider(), model.getPriority(ContainerRequestFilter.class)));
new RankedProvider<>( (WriterInterceptor) provider, model.getPriority(WriterInterceptor.class))); new RankedProvider<>( (ReaderInterceptor) provider, model.getPriority(ReaderInterceptor.class))); new RankedProvider<>( (ContainerRequestFilter) provider, model.getPriority(ContainerRequestFilter.class))); new RankedProvider<>( (ContainerResponseFilter) provider, model.getPriority(ContainerResponseFilter.class)));
if (preMatching && preMatchingFilters != null) { it.remove(); preMatchingFilters.add(new RankedProvider<>((ContainerRequestFilter) provider.getProvider(), model.getPriority(ContainerRequestFilter.class)));
if (preMatching && preMatchingFilters != null) { it.remove(); preMatchingFilters.add(new RankedProvider<>((ContainerRequestFilter) provider.getProvider(), model.getPriority(ContainerRequestFilter.class)));
new RankedProvider<>( (WriterInterceptor) provider, model.getPriority(WriterInterceptor.class))); new RankedProvider<>( (ReaderInterceptor) provider, model.getPriority(ReaderInterceptor.class))); new RankedProvider<>( (ContainerRequestFilter) provider, model.getPriority(ContainerRequestFilter.class))); new RankedProvider<>( (ContainerResponseFilter) provider, model.getPriority(ContainerResponseFilter.class)));
private static Iterable<RankedProvider<ComponentProvider>> getRankedComponentProviders() throws ServiceConfigurationError { final List<RankedProvider<ComponentProvider>> result = new LinkedList<>(); for (final ComponentProvider provider : ServiceFinder.find(ComponentProvider.class)) { result.add(new RankedProvider<>(provider)); } Collections.sort(result, new RankedComparator<ComponentProvider>(Order.DESCENDING)); return result; }
private static Iterable<RankedProvider<ComponentProvider>> getRankedComponentProviders() throws ServiceConfigurationError { final List<RankedProvider<ComponentProvider>> result = new LinkedList<>(); for (final ComponentProvider provider : ServiceFinder.find(ComponentProvider.class)) { result.add(new RankedProvider<>(provider)); } Collections.sort(result, new RankedComparator<ComponentProvider>(Order.DESCENDING)); return result; }
private static Iterable<RankedProvider<ComponentProvider>> getRankedComponentProviders() throws ServiceConfigurationError { final List<RankedProvider<ComponentProvider>> result = new LinkedList<>(); for (final ComponentProvider provider : ServiceFinder.find(ComponentProvider.class)) { result.add(new RankedProvider<>(provider)); } Collections.sort(result, new RankedComparator<ComponentProvider>(Order.DESCENDING)); return result; }
private Hk2CustomBoundTypesProvider lookupHk2CustomBoundTypesProvider() throws ServiceConfigurationError { final List<RankedProvider<Hk2CustomBoundTypesProvider>> providers = new LinkedList<RankedProvider<Hk2CustomBoundTypesProvider>>(); for (final Hk2CustomBoundTypesProvider provider : ServiceFinder.find(Hk2CustomBoundTypesProvider.class)) { providers.add(new RankedProvider<Hk2CustomBoundTypesProvider>(provider)); } Collections.sort(providers, new RankedComparator<Hk2CustomBoundTypesProvider>(RankedComparator.Order.DESCENDING)); return providers.isEmpty() ? null : providers.get(0).getProvider(); }
/** * Look for a service of given type. If more then one service is found the method sorts them are returns the one with highest * priority. * * @param clazz type of service to look for. * @param <T> type of service to look for. * @return instance of service with highest priority or {@code null} if service of given type cannot be found. * @see javax.annotation.Priority */ private static <T> Optional<T> lookupService(final Class<T> clazz) { List<RankedProvider<T>> providers = new LinkedList<>(); for (T provider : ServiceFinder.find(clazz)) { providers.add(new RankedProvider<>(provider)); } providers.sort(new RankedComparator<>(RankedComparator.Order.DESCENDING)); return providers.isEmpty() ? Optional.empty() : Optional.ofNullable(providers.get(0).getProvider()); }
/** * Look for a service of given type. If more then one service is found the method sorts them are returns the one with highest * priority. * * @param clazz type of service to look for. * @param <T> type of service to look for. * @return instance of service with highest priority or {@code null} if service of given type cannot be found. * @see javax.annotation.Priority */ private static <T> Optional<T> lookupService(final Class<T> clazz) { List<RankedProvider<T>> providers = new LinkedList<>(); for (T provider : ServiceFinder.find(clazz)) { providers.add(new RankedProvider<>(provider)); } providers.sort(new RankedComparator<>(RankedComparator.Order.DESCENDING)); return providers.isEmpty() ? Optional.empty() : Optional.ofNullable(providers.get(0).getProvider()); }
/** * Look for a service of given type. If more then one service is found the method sorts them are returns the one with highest * priority. * * @param clazz type of service to look for. * @param <T> type of service to look for * @return instance of service with highest priority or {@code null} if service of given type cannot be found. * @see javax.annotation.Priority */ static <T> T lookupService(final Class<T> clazz) { final List<RankedProvider<T>> providers = new LinkedList<>(); for (final T provider : ServiceFinder.find(clazz)) { providers.add(new RankedProvider<>(provider)); } Collections.sort(providers, new RankedComparator<T>(RankedComparator.Order.ASCENDING)); return providers.isEmpty() ? null : providers.get(0).getProvider(); }
/** * Get the iterable of all {@link RankedProvider providers} (custom and default) registered for the given service provider * contract in the underlying {@link InjectionManager injection manager} container. * * @param <T> service provider contract Java type. * @param injectionManager underlying injection manager. * @param contract service provider contract. * @return iterable of all available ranked service providers for the contract. Return value is never {@code null}. */ public static <T> Iterable<RankedProvider<T>> getAllRankedProviders(InjectionManager injectionManager, Class<T> contract) { List<ServiceHolder<T>> providers = getServiceHolders(injectionManager, contract, CustomAnnotationLiteral.INSTANCE); providers.addAll(getServiceHolders(injectionManager, contract)); LinkedHashMap<ServiceHolder<T>, RankedProvider<T>> providerMap = new LinkedHashMap<>(); for (ServiceHolder<T> provider : providers) { if (!providerMap.containsKey(provider)) { Set<Type> contractTypes = provider.getContractTypes(); Class<?> implementationClass = provider.getImplementationClass(); boolean proxyGenerated = true; for (Type ct : contractTypes) { if (((Class<?>) ct).isAssignableFrom(implementationClass)) { proxyGenerated = false; break; } } Set<Type> contracts = proxyGenerated ? contractTypes : null; providerMap.put(provider, new RankedProvider<>(provider.getInstance(), provider.getRank(), contracts)); } } return providerMap.values(); }
/** * Get the iterable of all {@link RankedProvider providers} (custom and default) registered for the given service provider * contract in the underlying {@link InjectionManager injection manager} container. * * @param <T> service provider contract Java type. * @param injectionManager underlying injection manager. * @param contract service provider contract. * @return iterable of all available ranked service providers for the contract. Return value is never {@code null}. */ public static <T> Iterable<RankedProvider<T>> getAllRankedProviders(InjectionManager injectionManager, Class<T> contract) { List<ServiceHolder<T>> providers = getServiceHolders(injectionManager, contract, CustomAnnotationLiteral.INSTANCE); providers.addAll(getServiceHolders(injectionManager, contract)); LinkedHashMap<ServiceHolder<T>, RankedProvider<T>> providerMap = new LinkedHashMap<>(); for (ServiceHolder<T> provider : providers) { if (!providerMap.containsKey(provider)) { Set<Type> contractTypes = provider.getContractTypes(); Class<?> implementationClass = provider.getImplementationClass(); boolean proxyGenerated = true; for (Type ct : contractTypes) { if (((Class<?>) ct).isAssignableFrom(implementationClass)) { proxyGenerated = false; break; } } Set<Type> contracts = proxyGenerated ? contractTypes : null; providerMap.put(provider, new RankedProvider<>(provider.getInstance(), provider.getRank(), contracts)); } } return providerMap.values(); }