diff options
Diffstat (limited to '')
2 files changed, 23 insertions, 5 deletions
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.<Object>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.<Object>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); } |