sortContextResolvers(); Collections.sort(preMatchContainerRequestFilters, new BindingPriorityComparator(true)); mapContainerFilters(postMatchContainerRequestFilters, postMatchRequestFilters, true); mapContainerFilters(postMatchContainerResponseFilters, postMatchResponseFilters, false); Collections.sort(readerInterceptors, new BindingPriorityComparator(true)); Collections.sort(writerInterceptors, new BindingPriorityComparator(false)); Collections.sort(clientRequestFilters, new BindingPriorityComparator(true)); Collections.sort(clientResponseFilters, new BindingPriorityComparator(false));
@Override public int compare(ProviderInfo<?> p1, ProviderInfo<?> p2) { int result = super.compare(p1, p2); if (result == 0) { Integer namesSize1 = AnnotationUtils.getNameBindings(p1.getProvider().getClass().getAnnotations()).size(); Integer namesSize2 = AnnotationUtils.getNameBindings(p2.getProvider().getClass().getAnnotations()).size(); // if we have two filters with the same binding priority, // then put a filter with more name bindings upfront // (this effectively puts name bound filters before global ones) result = namesSize1.compareTo(namesSize2) * -1; } return result; } }
new BindingPriorityComparator(ContainerRequestFilter.class, true)); mapInterceptorFilters(postMatchContainerRequestFilters, postMatchRequestFilters, ContainerRequestFilter.class, true);
@Override protected void setProviders(boolean custom, boolean busGlobal, Object... providers) { List<ProviderInfo<? extends Object>> theProviders = prepareProviders(custom, busGlobal, providers, null); super.setCommonProviders(theProviders); for (ProviderInfo<? extends Object> provider : theProviders) { Class<?> providerCls = ClassHelper.getRealClass(getBus(), provider.getProvider()); if (providerCls == Object.class) { // If the provider is a lambda, ClassHelper.getRealClass returns Object.class providerCls = provider.getProvider().getClass(); } if (filterContractSupported(provider, providerCls, ClientRequestFilter.class)) { addProviderToList(clientRequestFilters, provider); } if (filterContractSupported(provider, providerCls, ClientResponseFilter.class)) { addProviderToList(clientResponseFilters, provider); } if (ResponseExceptionMapper.class.isAssignableFrom(providerCls)) { addProviderToList(responseExceptionMappers, provider); } if (RxInvokerProvider.class.isAssignableFrom(providerCls)) { this.rxInvokerProvider = RxInvokerProvider.class.cast(provider.getProvider()); } } Collections.sort(clientRequestFilters, new BindingPriorityComparator(ClientRequestFilter.class, true)); Collections.sort(clientResponseFilters, new BindingPriorityComparator(ClientResponseFilter.class, false)); injectContextProxies(responseExceptionMappers, clientRequestFilters, clientResponseFilters); }
@Override protected void setProviders(boolean custom, boolean busGlobal, Object... providers) { List<ProviderInfo<? extends Object>> theProviders = prepareProviders(custom, busGlobal, providers, null); super.setCommonProviders(theProviders); for (ProviderInfo<? extends Object> provider : theProviders) { Class<?> providerCls = ClassHelper.getRealClass(getBus(), provider.getProvider()); if (providerCls == Object.class) { // If the provider is a lambda, ClassHelper.getRealClass returns Object.class providerCls = provider.getProvider().getClass(); } if (filterContractSupported(provider, providerCls, ClientRequestFilter.class)) { addProviderToList(clientRequestFilters, provider); } if (filterContractSupported(provider, providerCls, ClientResponseFilter.class)) { addProviderToList(clientResponseFilters, provider); } if (ResponseExceptionMapper.class.isAssignableFrom(providerCls)) { addProviderToList(responseExceptionMappers, provider); } if (RxInvokerProvider.class.isAssignableFrom(providerCls)) { this.rxInvokerProvider = RxInvokerProvider.class.cast(provider.getProvider()); } } Collections.sort(clientRequestFilters, new BindingPriorityComparator(ClientRequestFilter.class, true)); Collections.sort(clientResponseFilters, new BindingPriorityComparator(ClientResponseFilter.class, false)); injectContextProxies(responseExceptionMappers, clientRequestFilters, clientResponseFilters); }
public int compare(ProviderInfo<?> p1, ProviderInfo<?> p2) { return compare(getFilterPriority(p1, providerCls), getFilterPriority(p2, providerCls)); }