/** * Constructor expecting {@link InjectionManager} to be injected. * * @param injectionManager injection manager to be injected. */ @Inject public EntityInspectorImpl(final InjectionManager injectionManager) { Spliterator<EntityProcessor> entities = Providers.getAllProviders(injectionManager, EntityProcessor.class, new RankedComparator<>()).spliterator(); this.entityProcessors = StreamSupport.stream(entities, false).collect(Collectors.toList()); }
@Override public int compare(final RankedProvider<T> o1, final RankedProvider<T> o2) { return ((getPriority(o1) > getPriority(o2)) ? order.ordering : -order.ordering); }
/** * Create new common scope provider with injected {@link Configuration configuration} and * {@link InjectionManager injection manager}. */ @Inject public CommonScopeProvider(final Configuration config, final InjectionManager injectionManager) { this.config = config; Spliterator<ScopeResolver> resolverSpliterator = Providers.getAllProviders(injectionManager, ScopeResolver.class, new RankedComparator<>()).spliterator(); this.resolvers = StreamSupport.stream(resolverSpliterator, false).collect(Collectors.toList()); }
@Override public int compare(final RankedProvider<T> o1, final RankedProvider<T> o2) { return ((getPriority(o1) > getPriority(o2)) ? order.ordering : -order.ordering); }
/** * Create client request filtering stage using the injection manager. May return {@code null}. * * @param injectionManager injection manager to be used. * @return configured request filtering stage, or {@code null} in case there are no * {@link ClientRequestFilter client request filters} registered in the injection manager. */ static ChainableStage<ClientRequest> createRequestFilteringStage(InjectionManager injectionManager) { RankedComparator<ClientRequestFilter> comparator = new RankedComparator<>(RankedComparator.Order.ASCENDING); Iterable<ClientRequestFilter> requestFilters = Providers.getAllProviders(injectionManager, ClientRequestFilter.class, comparator); return requestFilters.iterator().hasNext() ? new RequestFilteringStage(requestFilters) : null; }
@Override public int compare(final RankedProvider<T> o1, final RankedProvider<T> o2) { return ((getPriority(o1) > getPriority(o2)) ? order.ordering : -order.ordering); }
/** * Create client response filtering stage using the injection manager. May return {@code null}. * * @param injectionManager injection manager to be used. * @return configured response filtering stage, or {@code null} in case there are no * {@link ClientResponseFilter client response filters} registered in the injection manager. */ static ChainableStage<ClientResponse> createResponseFilteringStage(InjectionManager injectionManager) { RankedComparator<ClientResponseFilter> comparator = new RankedComparator<>(RankedComparator.Order.DESCENDING); Iterable<ClientResponseFilter> responseFilters = Providers.getAllProviders(injectionManager, ClientResponseFilter.class, comparator); return responseFilters.iterator().hasNext() ? new ResponseFilterStage(responseFilters) : null; }
@Override public int compare(final RankedProvider<T> o1, final RankedProvider<T> o2) { return ((getPriority(o1) > getPriority(o2)) ? order.ordering : -order.ordering); }
/** * Create client response filtering stage using the injection manager. May return {@code null}. * * @param injectionManager injection manager to be used. * @return configured response filtering stage, or {@code null} in case there are no * {@link ClientResponseFilter client response filters} registered in the injection manager. */ static ChainableStage<ClientResponse> createResponseFilteringStage(InjectionManager injectionManager) { RankedComparator<ClientResponseFilter> comparator = new RankedComparator<>(RankedComparator.Order.DESCENDING); Iterable<ClientResponseFilter> responseFilters = Providers.getAllProviders(injectionManager, ClientResponseFilter.class, comparator); return responseFilters.iterator().hasNext() ? new ResponseFilterStage(responseFilters) : null; }
@Override public int compare(final RankedProvider<T> o1, final RankedProvider<T> o2) { return ((getPriority(o1) > getPriority(o2)) ? order.ordering : -order.ordering); }
/** * Create client request filtering stage using the injection manager. May return {@code null}. * * @param injectionManager injection manager to be used. * @return configured request filtering stage, or {@code null} in case there are no * {@link ClientRequestFilter client request filters} registered in the injection manager. */ static ChainableStage<ClientRequest> createRequestFilteringStage(InjectionManager injectionManager) { RankedComparator<ClientRequestFilter> comparator = new RankedComparator<>(RankedComparator.Order.ASCENDING); Iterable<ClientRequestFilter> requestFilters = Providers.getAllProviders(injectionManager, ClientRequestFilter.class, comparator); return requestFilters.iterator().hasNext() ? new RequestFilteringStage(requestFilters) : null; }
@Override public int compare(final RankedProvider<T> o1, final RankedProvider<T> o2) { return ((getPriority(o1) > getPriority(o2)) ? order.ordering : -order.ordering); }
/** * Create new {@link org.glassfish.jersey.message.MessageBodyWorkers} initialization function * for requests and responses. * * @param requestRefProvider client request context reference injection provider. * @param workersProvider message body workers injection provider. * @param injectionManager injection manager. */ public RequestProcessingInitializationStage( Provider<Ref<ClientRequest>> requestRefProvider, MessageBodyWorkers workersProvider, InjectionManager injectionManager) { this.requestRefProvider = requestRefProvider; this.workersProvider = workersProvider; writerInterceptors = Collections.unmodifiableList( StreamSupport.stream( Providers.getAllProviders(injectionManager, WriterInterceptor.class, new RankedComparator<>()).spliterator(), false) .collect(Collectors.toList()) ); readerInterceptors = Collections.unmodifiableList( StreamSupport.stream( Providers.getAllProviders(injectionManager, ReaderInterceptor.class, new RankedComparator<>()).spliterator(), false) .collect(Collectors.toList()) ); }
@Override public int compare(final RankedProvider<T> o1, final RankedProvider<T> o2) { return ((getPriority(o1) > getPriority(o2)) ? order.ordering : -order.ordering); }
/** * Create new {@link org.glassfish.jersey.message.MessageBodyWorkers} initialization function * for requests and responses. * * @param requestRefProvider client request context reference injection provider. * @param workersProvider message body workers injection provider. * @param injectionManager injection manager. */ public RequestProcessingInitializationStage( Provider<Ref<ClientRequest>> requestRefProvider, MessageBodyWorkers workersProvider, InjectionManager injectionManager) { this.requestRefProvider = requestRefProvider; this.workersProvider = workersProvider; writerInterceptors = Collections.unmodifiableList( StreamSupport.stream( Providers.getAllProviders(injectionManager, WriterInterceptor.class, new RankedComparator<>()).spliterator(), false) .collect(Collectors.toList()) ); readerInterceptors = Collections.unmodifiableList( StreamSupport.stream( Providers.getAllProviders(injectionManager, ReaderInterceptor.class, new RankedComparator<>()).spliterator(), false) .collect(Collectors.toList()) ); }
/** * 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()); }
/** * Create client response filtering stage using the injection manager. May return {@code null}. * * @param injectionManager injection manager to be used. * @return configured response filtering stage, or {@code null} in case there are no * {@link ClientResponseFilter client response filters} registered in the injection manager. */ static ChainableStage<ClientResponse> createResponseFilteringStage(InjectionManager injectionManager) { RankedComparator<ClientResponseFilter> comparator = new RankedComparator<>(RankedComparator.Order.DESCENDING); Iterable<ClientResponseFilter> responseFilters = Providers.getAllProviders(injectionManager, ClientResponseFilter.class, comparator); return responseFilters.iterator().hasNext() ? new ResponseFilterStage(responseFilters) : null; }
private Iterable<ValidationInterceptor> getValidationInterceptors() { final Iterable<RankedProvider<ValidationInterceptor>> validationInterceptorIterable = org.glassfish.jersey.internal.inject.Providers .getAllRankedProviders(injectionManager, ValidationInterceptor.class); return org.glassfish.jersey.internal.inject.Providers.sortRankedProviders( new RankedComparator<ValidationInterceptor>(), validationInterceptorIterable); }
/** * 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(); }