You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2010/08/31 08:18:58 UTC
svn commit: r991087 -
/tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/main/java/org/apache/tuscany/sca/binding/http/format/HTTPDefaultWireFormatServiceInterceptor.java
Author: antelder
Date: Tue Aug 31 06:18:58 2010
New Revision: 991087
URL: http://svn.apache.org/viewvc?rev=991087&view=rev
Log:
Update to work with POSTing JSON
Modified:
tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/main/java/org/apache/tuscany/sca/binding/http/format/HTTPDefaultWireFormatServiceInterceptor.java
Modified: tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/main/java/org/apache/tuscany/sca/binding/http/format/HTTPDefaultWireFormatServiceInterceptor.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/main/java/org/apache/tuscany/sca/binding/http/format/HTTPDefaultWireFormatServiceInterceptor.java?rev=991087&r1=991086&r2=991087&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/main/java/org/apache/tuscany/sca/binding/http/format/HTTPDefaultWireFormatServiceInterceptor.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/main/java/org/apache/tuscany/sca/binding/http/format/HTTPDefaultWireFormatServiceInterceptor.java Tue Aug 31 06:18:58 2010
@@ -28,6 +28,7 @@ import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.SortedSet;
+import java.util.StringTokenizer;
import java.util.TreeSet;
import javax.servlet.ServletRequest;
@@ -90,10 +91,32 @@ public class HTTPDefaultWireFormatServic
if ("GET".equals(servletRequest.getMethod())) {
msg.setBody(getRequestFromQueryString(msg.getOperation(), servletRequest));
} else {
- msg.setBody(read(servletRequest));
+ msg.setBody(getRequestFromPost(msg.getOperation(), servletRequest));
}
return msg;
}
+
+ /**
+ * The data binding seems to be expecting an Object array of json strings so if the
+ * post data is a json array convert that to an array of strings
+ * TODO: should this be being done by the data binding framework?
+ */
+ private Object[] getRequestFromPost(Operation operation, HttpServletRequest servletRequest) throws IOException {
+ List<Object> os = new ArrayList<Object>();
+ String data = read(servletRequest);
+ if (data.length() > 0) {
+ if (data.startsWith("[") && data.endsWith("]")) {
+ data = data.substring(1, data.length()-1);
+ StringTokenizer st = new StringTokenizer(data, ",");
+ while (st.hasMoreElements()) {
+ os.add(st.nextElement());
+ }
+ } else {
+ os.add(data);
+ }
+ }
+ return os.toArray();
+ }
private Message invokeResponse(Message msg) throws IOException {
HTTPContext context = msg.getBindingContext();
@@ -219,7 +242,7 @@ public class HTTPDefaultWireFormatServic
while ((str = reader.readLine()) != null) {
sb.append(str);
}
- return sb.toString();
+ return sb.toString().trim();
} finally {
if (reader != null) {
reader.close();