You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2011/10/20 17:38:05 UTC
svn commit: r1186857 -
/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/RequestDispatcherProvider.java
Author: sergeyb
Date: Thu Oct 20 15:38:05 2011
New Revision: 1186857
URL: http://svn.apache.org/viewvc?rev=1186857&view=rev
Log:
[CXF-3869] Minor improvements to RequestDispatcherProvider
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/RequestDispatcherProvider.java
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/RequestDispatcherProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/RequestDispatcherProvider.java?rev=1186857&r1=1186856&r2=1186857&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/RequestDispatcherProvider.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/RequestDispatcherProvider.java Thu Oct 20 15:38:05 2011
@@ -75,6 +75,7 @@ public class RequestDispatcherProvider e
private String beanName;
private String dispatcherName;
private String servletPath;
+ private boolean saveParametersAsAttributes;
@Context
private MessageContext mc;
@@ -111,7 +112,8 @@ public class RequestDispatcherProvider e
String theServletPath = servletPath == null ? "/" : servletPath;
HttpServletRequestFilter servletRequest =
- new HttpServletRequestFilter(mc.getHttpServletRequest(), path, theServletPath);
+ new HttpServletRequestFilter(mc.getHttpServletRequest(), path,
+ theServletPath, saveParametersAsAttributes);
if (REQUEST_SCOPE.equals(scope)) {
servletRequest.setAttribute(getBeanName(o), o);
} else if (SESSION_SCOPE.equals(scope)) {
@@ -248,17 +250,30 @@ public class RequestDispatcherProvider e
public void setResourcePaths(Map<String, String> resourcePaths) {
this.resourcePaths = resourcePaths;
}
+
+ public void setClassResources(Map<String, String> resources) {
+ this.classResources = resources;
+ }
+
+ public void setSaveParametersAsAttributes(boolean saveParametersAsAttributes) {
+ this.saveParametersAsAttributes = saveParametersAsAttributes;
+ }
protected static class HttpServletRequestFilter extends HttpServletRequestWrapper {
private Map<String, String[]> params;
private String path;
private String servletPath;
+ private boolean saveParamsAsAttributes;
- public HttpServletRequestFilter(HttpServletRequest request, String path, String servletPath) {
+ public HttpServletRequestFilter(HttpServletRequest request,
+ String path,
+ String servletPath,
+ boolean saveParamsAsAttributes) {
super(request);
this.path = path;
this.servletPath = servletPath;
+ this.saveParamsAsAttributes = saveParamsAsAttributes;
params = new HashMap<String, String[]>(request.getParameterMap());
}
@@ -278,11 +293,22 @@ public class RequestDispatcherProvider e
}
public void setParameter(String name, String value) {
- params.put(name, new String[]{value});
+ doSetParameters(name, new String[]{value});
}
public void setParameters(String name, List<String> values) {
- params.put(name, values.toArray(new String[]{}));
+ doSetParameters(name, values.toArray(new String[]{}));
+ }
+
+ private void doSetParameters(String name, String[] values) {
+ if (saveParamsAsAttributes) {
+ if (values.length == 1) {
+ super.setAttribute(name, values[0]);
+ }
+ super.setAttribute(name + "Array", values);
+ } else {
+ params.put(name, values);
+ }
}
@Override