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 2013/09/09 14:10:39 UTC
svn commit: r1521065 - in
/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs:
ext/MessageContextImpl.java provider/FormEncodingProvider.java
utils/FormUtils.java
Author: sergeyb
Date: Mon Sep 9 12:10:39 2013
New Revision: 1521065
URL: http://svn.apache.org/r1521065
Log:
Minimiaing a need to use servlet api on the client side when reading form response
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContextImpl.java
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/FormEncodingProvider.java
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/FormUtils.java
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContextImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContextImpl.java?rev=1521065&r1=1521064&r2=1521065&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContextImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContextImpl.java Mon Sep 9 12:10:39 2013
@@ -152,7 +152,11 @@ public class MessageContextImpl implemen
}
public HttpServletRequest getHttpServletRequest() {
- return getContext(HttpServletRequest.class);
+ try {
+ return getContext(HttpServletRequest.class);
+ } catch (Throwable t) {
+ return null;
+ }
}
public HttpServletResponse getHttpServletResponse() {
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/FormEncodingProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/FormEncodingProvider.java?rev=1521065&r1=1521064&r2=1521065&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/FormEncodingProvider.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/FormEncodingProvider.java Mon Sep 9 12:10:39 2013
@@ -169,12 +169,22 @@ public class FormEncodingProvider<T> imp
decode);
} else {
String enc = HttpUtils.getEncoding(mt, "UTF-8");
- FormUtils.populateMapFromString(params,
- PhaseInterceptorChain.getCurrentMessage(),
- FormUtils.readBody(is, enc),
- enc,
- decode,
- mc != null ? mc.getHttpServletRequest() : null);
+
+ Object servletRequest = mc != null ? mc.getHttpServletRequest() : null;
+ if (servletRequest == null) {
+ FormUtils.populateMapFromString(params,
+ PhaseInterceptorChain.getCurrentMessage(),
+ FormUtils.readBody(is, enc),
+ enc,
+ decode);
+ } else {
+ FormUtils.populateMapFromString(params,
+ PhaseInterceptorChain.getCurrentMessage(),
+ FormUtils.readBody(is, enc),
+ enc,
+ decode,
+ (javax.servlet.http.HttpServletRequest)servletRequest);
+ }
}
}
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/FormUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/FormUtils.java?rev=1521065&r1=1521064&r2=1521065&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/FormUtils.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/FormUtils.java Mon Sep 9 12:10:39 2013
@@ -31,7 +31,6 @@ import java.util.List;
import java.util.Map;
import java.util.logging.Logger;
-import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.BadRequestException;
import javax.ws.rs.InternalServerErrorException;
import javax.ws.rs.WebApplicationException;
@@ -126,28 +125,37 @@ public final class FormUtils {
Message m,
String postBody,
String enc,
+ boolean decode) {
+ List<String> parts = Arrays.asList(StringUtils.split(postBody, "&"));
+ checkNumberOfParts(m, parts.size());
+ for (String part : parts) {
+ String[] keyValue = new String[2];
+ int index = part.indexOf("=");
+ if (index != -1) {
+ keyValue[0] = part.substring(0, index);
+ keyValue[1] = index + 1 < part.length() ? part.substring(index + 1) : "";
+ } else {
+ keyValue[0] = part;
+ keyValue[1] = "";
+ }
+ String name = HttpUtils.urlDecode(keyValue[0], enc);
+ if (decode) {
+ params.add(name, HttpUtils.urlDecode(keyValue[1], enc));
+ } else {
+ params.add(name, keyValue[1]);
+ }
+ }
+
+ }
+
+ public static void populateMapFromString(MultivaluedMap<String, String> params,
+ Message m,
+ String postBody,
+ String enc,
boolean decode,
- HttpServletRequest request) {
+ javax.servlet.http.HttpServletRequest request) {
if (!StringUtils.isEmpty(postBody)) {
- List<String> parts = Arrays.asList(StringUtils.split(postBody, "&"));
- checkNumberOfParts(m, parts.size());
- for (String part : parts) {
- String[] keyValue = new String[2];
- int index = part.indexOf("=");
- if (index != -1) {
- keyValue[0] = part.substring(0, index);
- keyValue[1] = index + 1 < part.length() ? part.substring(index + 1) : "";
- } else {
- keyValue[0] = part;
- keyValue[1] = "";
- }
- String name = HttpUtils.urlDecode(keyValue[0], enc);
- if (decode) {
- params.add(name, HttpUtils.urlDecode(keyValue[1], enc));
- } else {
- params.add(name, keyValue[1]);
- }
- }
+ populateMapFromString(params, m, postBody, enc, decode);
} else if (request != null) {
for (Enumeration<String> en = request.getParameterNames(); en.hasMoreElements();) {
String paramName = en.nextElement();