package org.jboss.resteasy.test.response.resource; import org.jboss.resteasy.core.InjectorFactoryImpl; import org.jboss.resteasy.core.ValueInjector; import org.jboss.resteasy.spi.HttpRequest; import org.jboss.resteasy.spi.HttpResponse; import org.jboss.resteasy.spi.ResteasyProviderFactory; import org.jboss.resteasy.spi.metadata.Parameter; import org.jboss.resteasy.util.FindAnnotation; import javax.servlet.http.HttpServletRequest; import java.lang.annotation.Annotation; import java.lang.reflect.AccessibleObject; import java.lang.reflect.Type; public class HttpRequestParameterInjectorParamFactoryImpl extends InjectorFactoryImpl { @SuppressWarnings("unchecked") @Override public ValueInjector createParameterExtractor(Class injectTargetClass, AccessibleObject injectTarget, Class type, Type genericType, Annotation[] annotations, ResteasyProviderFactory factory) { final HttpRequestParameterInjectorClassicParam param = FindAnnotation.findAnnotation(annotations, HttpRequestParameterInjectorClassicParam.class); if (param == null) { return super.createParameterExtractor(injectTargetClass, injectTarget, type, genericType, annotations, factory); } else { return new ValueInjector() { public Object inject(HttpRequest request, HttpResponse response) { return ResteasyProviderFactory.getContextData(HttpServletRequest.class) .getParameter(param.value()); } public Object inject() { // do nothing. return null; } }; } } @Override public ValueInjector createParameterExtractor(Parameter parameter, ResteasyProviderFactory providerFactory) { final HttpRequestParameterInjectorClassicParam param = FindAnnotation.findAnnotation(parameter.getAnnotations(), HttpRequestParameterInjectorClassicParam.class); if (param == null) { return super.createParameterExtractor(parameter, providerFactory); } else { return new ValueInjector() { public Object inject(HttpRequest request, HttpResponse response) { return ResteasyProviderFactory.getContextData(HttpServletRequest.class) .getParameter(param.value()); } public Object inject() { // do nothing. return null; } }; } } }