From e943796a67d51eeb54ee818dc732ff4ecd2c5c74 Mon Sep 17 00:00:00 2001 From: lresende Date: Wed, 28 Apr 2010 03:57:14 +0000 Subject: Tweaking binding implementation and adding tests for GET, PUT, POST operation mapping with the JSON wire format git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@938773 13f79535-47bb-0310-9956-ffa450edef68 --- .../binding/rest/provider/RESTBindingListenerServlet.java | 13 ++++++++----- .../json/provider/JSONWireFormatInterceptor.java | 15 +++++++++++++++ 2 files changed, 23 insertions(+), 5 deletions(-) (limited to 'sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org') diff --git a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTBindingListenerServlet.java b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTBindingListenerServlet.java index ab13d952e4..b96a45338a 100644 --- a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTBindingListenerServlet.java +++ b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTBindingListenerServlet.java @@ -114,11 +114,14 @@ public class RESTBindingListenerServlet extends HttpServlet { Throwable e = (Throwable)responseMessage.getBody(); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.toString()); } else { - byte[] bout; - bout = responseMessage.getBody().toString().getBytes("UTF-8"); - response.getOutputStream().write(bout); - response.getOutputStream().flush(); - response.getOutputStream().close(); + //handle void operations + if(responseMessage.getBody() != null) { + byte[] bout; + bout = responseMessage.getBody().toString().getBytes("UTF-8"); + response.getOutputStream().write(bout); + response.getOutputStream().flush(); + response.getOutputStream().close(); + } } } else { super.service(request, response); diff --git a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/wireformat/json/provider/JSONWireFormatInterceptor.java b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/wireformat/json/provider/JSONWireFormatInterceptor.java index e5ca19b78f..353cf811a5 100644 --- a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/wireformat/json/provider/JSONWireFormatInterceptor.java +++ b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/wireformat/json/provider/JSONWireFormatInterceptor.java @@ -19,11 +19,14 @@ package org.apache.tuscany.sca.binding.rest.wireformat.json.provider; +import java.io.CharArrayWriter; + import org.apache.tuscany.sca.core.ExtensionPointRegistry; import org.apache.tuscany.sca.invocation.Interceptor; import org.apache.tuscany.sca.invocation.Invoker; import org.apache.tuscany.sca.invocation.Message; import org.apache.tuscany.sca.runtime.RuntimeEndpoint; +import org.json.JSONObject; /** * JSON wire format Interceptor. @@ -46,6 +49,18 @@ public class JSONWireFormatInterceptor implements Interceptor { } public Message invoke(Message msg) { + try { + if(msg.getBody() != null) { + Object[] args = msg.getBody(); + CharArrayWriter data = (CharArrayWriter) args[0]; + + JSONObject jsonPayload = new JSONObject(data.toString()); + msg.setBody(new Object[]{jsonPayload}); + } + } catch(Exception e) { + throw new RuntimeException("Unable to parse json paylod: " + msg.getBody().toString()); + } + return getNext().invoke(msg); } -- cgit v1.2.3