diff options
author | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2010-04-30 23:26:18 +0000 |
---|---|---|
committer | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2010-04-30 23:26:18 +0000 |
commit | 71f0288a921a3098858cda3ab7d784fc8b70da99 (patch) | |
tree | 57765c1ca5051d059afa56e2c0776a744b6b1bfd /sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/wireformat/json | |
parent | 76828ad80690fc618afefbd6af566204871e3ec2 (diff) |
Add basic support for binary data types for binding.rest
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@939874 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/wireformat/json')
-rw-r--r-- | sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/wireformat/json/provider/JSONWireFormatInterceptor.java | 25 |
1 files changed, 21 insertions, 4 deletions
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 a8d9c08d08..7e47d5c04d 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,7 +19,10 @@ package org.apache.tuscany.sca.binding.rest.wireformat.json.provider; -import java.io.CharArrayWriter; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.StringWriter; import org.apache.tuscany.sca.common.http.HTTPContext; import org.apache.tuscany.sca.core.ExtensionPointRegistry; @@ -48,6 +51,20 @@ public class JSONWireFormatInterceptor implements Interceptor { public void setNext(Invoker next) { this.next = next; } + + private String read(InputStream in) throws IOException { + StringWriter sw = new StringWriter(); + InputStreamReader reader = new InputStreamReader(in, "UTF-8"); + char[] buf = new char[8192]; + while (true) { + int size = reader.read(buf); + if (size < 0) { + break; + } + sw.write(buf, 0, size); + } + return sw.toString(); + } public Message invoke(Message msg) { HTTPContext bindingContext = (HTTPContext) msg.getBindingContext(); @@ -55,9 +72,9 @@ public class JSONWireFormatInterceptor implements Interceptor { try { if(bindingContext.getHttpRequest().getMethod().equalsIgnoreCase("get") == false && bindingContext.getHttpRequest().getMethod().equalsIgnoreCase("delete") == false && msg.getBody() != null) { Object[] args = msg.getBody(); - CharArrayWriter data = (CharArrayWriter) args[0]; - - JSONObject jsonPayload = new JSONObject(data.toString()); + InputStream in = (InputStream) args[0]; + String data = read(in); + JSONObject jsonPayload = new JSONObject(data); msg.setBody(new Object[]{jsonPayload}); } } catch(Exception e) { |