use of javax.ws.rs.container.ContainerResponseFilter in project jersey by jersey.
the class ProviderBinderTest method testCustomRegistration.
@Test
public void testCustomRegistration() {
InjectionManager injectionManager = Injections.createInjectionManager();
ProviderBinder providerBinder = new ProviderBinder(injectionManager);
providerBinder.bindClasses(Child.class);
providerBinder.bindClasses(NotFilterChild.class);
ContainerRequestFilter requestFilter = getRequestFilter(injectionManager);
ContainerRequestFilter requestFilter2 = getRequestFilter(injectionManager);
assertEquals(requestFilter, requestFilter2);
ContainerResponseFilter responseFilter = getResponseFilter(injectionManager);
ContainerResponseFilter responseFilter2 = getResponseFilter(injectionManager);
assertTrue(responseFilter == responseFilter2);
assertTrue(responseFilter == requestFilter);
// only one filter should be registered
Collection<ContainerResponseFilter> filters = Providers.getCustomProviders(injectionManager, ContainerResponseFilter.class);
assertEquals(1, filters.size());
Child child = injectionManager.getInstance(Child.class);
Child child2 = injectionManager.getInstance(Child.class);
assertTrue(child != responseFilter);
assertTrue(child == child2);
}
use of javax.ws.rs.container.ContainerResponseFilter in project jersey by jersey.
the class EncodingFilterTest method testNoInterceptor.
@Test
public void testNoInterceptor() {
ResourceConfig rc = new ResourceConfig(EncodingFilter.class);
ContainerResponseFilter filter = new ApplicationHandler(rc).getInjectionManager().getInstance(ContainerResponseFilter.class);
assertNotNull(filter);
assertTrue(filter instanceof EncodingFilter);
assertEquals(1, ((EncodingFilter) filter).getSupportedEncodings().size());
}
use of javax.ws.rs.container.ContainerResponseFilter in project minijax by minijax.
the class MinijaxApplication method runResponseFilters.
private void runResponseFilters(final MinijaxRequestContext context, final Response response) throws IOException {
final ContainerResponseContext responseContext = (ContainerResponseContext) response;
for (final Class<? extends ContainerResponseFilter> filterClass : responseFilters) {
final ContainerResponseFilter filter = getResource(filterClass);
filter.filter(context, responseContext);
}
}
use of javax.ws.rs.container.ContainerResponseFilter in project cxf by apache.
the class ServerProviderFactory method setProviders.
@SuppressWarnings("unchecked")
@Override
protected void setProviders(boolean custom, boolean busGlobal, Object... providers) {
List<Object> allProviders = new LinkedList<>();
for (Object p : providers) {
if (p instanceof Feature) {
FeatureContext featureContext = createServerFeatureContext();
Feature feature = (Feature) p;
injectApplicationIntoFeature(feature);
feature.configure(featureContext);
Configuration cfg = featureContext.getConfiguration();
for (Object featureProvider : cfg.getInstances()) {
Map<Class<?>, Integer> contracts = cfg.getContracts(featureProvider.getClass());
if (contracts != null && !contracts.isEmpty()) {
Class<?> providerCls = ClassHelper.getRealClass(getBus(), featureProvider);
allProviders.add(new FilterProviderInfo<Object>(featureProvider.getClass(), providerCls, featureProvider, getBus(), getFilterNameBindings(getBus(), featureProvider), false, contracts));
} else {
allProviders.add(featureProvider);
}
}
} else {
allProviders.add(p);
}
}
List<ProviderInfo<ContainerRequestFilter>> postMatchRequestFilters = new LinkedList<>();
List<ProviderInfo<ContainerResponseFilter>> postMatchResponseFilters = new LinkedList<>();
List<ProviderInfo<? extends Object>> theProviders = prepareProviders(custom, busGlobal, allProviders.toArray(), application);
super.setCommonProviders(theProviders, RuntimeType.SERVER);
for (ProviderInfo<? extends Object> provider : theProviders) {
Class<?> providerCls = ClassHelper.getRealClass(getBus(), provider.getProvider());
// Check if provider is constrained to server
if (!constrainedTo(providerCls, RuntimeType.SERVER)) {
continue;
}
if (filterContractSupported(provider, providerCls, ContainerRequestFilter.class)) {
addContainerRequestFilter(postMatchRequestFilters, (ProviderInfo<ContainerRequestFilter>) provider);
}
if (filterContractSupported(provider, providerCls, ContainerResponseFilter.class)) {
postMatchResponseFilters.add((ProviderInfo<ContainerResponseFilter>) provider);
}
if (DynamicFeature.class.isAssignableFrom(providerCls)) {
// TODO: review the possibility of DynamicFeatures needing to have Contexts injected
Object feature = provider.getProvider();
dynamicFeatures.add((DynamicFeature) feature);
}
if (filterContractSupported(provider, providerCls, ExceptionMapper.class)) {
addProviderToList(exceptionMappers, provider);
}
}
Collections.sort(preMatchContainerRequestFilters, new BindingPriorityComparator(ContainerRequestFilter.class, true));
mapInterceptorFilters(postMatchContainerRequestFilters, postMatchRequestFilters, ContainerRequestFilter.class, true);
mapInterceptorFilters(containerResponseFilters, postMatchResponseFilters, ContainerResponseFilter.class, false);
injectContextProxies(exceptionMappers, postMatchContainerRequestFilters.values(), preMatchContainerRequestFilters, containerResponseFilters.values());
}
use of javax.ws.rs.container.ContainerResponseFilter in project cxf by apache.
the class JAXRSUtils method runContainerResponseFilters.
public static void runContainerResponseFilters(ServerProviderFactory pf, ResponseImpl r, Message m, OperationResourceInfo ori, Method invoked) throws IOException, Throwable {
List<ProviderInfo<ContainerResponseFilter>> containerFilters = pf.getContainerResponseFilters(ori == null ? null : ori.getNameBindings());
if (!containerFilters.isEmpty()) {
ContainerRequestContext requestContext = new ContainerRequestContextImpl(m.getExchange().getInMessage(), false, true);
ContainerResponseContext responseContext = new ContainerResponseContextImpl(r, m, ori == null ? null : ori.getClassResourceInfo().getServiceClass(), invoked);
for (ProviderInfo<ContainerResponseFilter> filter : containerFilters) {
InjectionUtils.injectContexts(filter.getProvider(), filter, m);
filter.getProvider().filter(requestContext, responseContext);
}
}
}
Aggregations