summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/protocol/JsonRpcRequest.java
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2011-10-10 21:15:41 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2011-10-10 21:15:41 +0000
commitc9efcb7cf9742fd31ce421f29b78a9c045a46d15 (patch)
tree85df6f81bff1191b423fd102d12acaded3caab2f /sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/protocol/JsonRpcRequest.java
parent20b39ce21277493dced135f09cca0dd02eca8087 (diff)
Use Jackson JsonNode as the unified representation of json data
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1181240 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/protocol/JsonRpcRequest.java')
-rw-r--r--sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/protocol/JsonRpcRequest.java54
1 files changed, 29 insertions, 25 deletions
diff --git a/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/protocol/JsonRpcRequest.java b/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/protocol/JsonRpcRequest.java
index 8c0a71025a..cd98a30976 100644
--- a/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/protocol/JsonRpcRequest.java
+++ b/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/protocol/JsonRpcRequest.java
@@ -19,12 +19,13 @@
package org.apache.tuscany.sca.binding.jsonrpc.protocol;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
-import org.apache.tuscany.sca.databinding.json.jackson.JacksonHelper;
-import org.json.JSONObject;
+import org.codehaus.jackson.JsonNode;
+import org.codehaus.jackson.node.ArrayNode;
+import org.codehaus.jackson.node.JsonNodeFactory;
+import org.codehaus.jackson.node.NullNode;
+import org.codehaus.jackson.node.ObjectNode;
/**
* http://json-rpc.org/wiki/specification
@@ -38,46 +39,45 @@ import org.json.JSONObject;
*/
public abstract class JsonRpcRequest {
protected String method;
- protected Object id;
+ protected JsonNode id;
protected Object[] params;
- protected JSONObject jsonObject;
+ protected ObjectNode jsonNode;
- public JsonRpcRequest(Object id, String method, Object[] params) {
+ public JsonRpcRequest(ObjectNode jsonNode) {
super();
- this.id = id;
- this.method = method;
- this.params = params;
+ this.jsonNode = jsonNode;
}
- protected JsonRpcRequest(JSONObject jsonObject) {
+ public JsonRpcRequest(JsonNode id, String method, Object[] params) {
super();
- this.jsonObject = jsonObject;
- }
-
- public JSONObject toJSONObject() throws Exception {
- if (jsonObject != null) {
- return jsonObject;
- } else {
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- write(bos);
- ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
- jsonObject = JacksonHelper.MAPPER.readValue(bis, JSONObject.class);
+ this.id = id;
+ this.method = method;
+ this.params = params;
+ ObjectNode req = JsonNodeFactory.instance.objectNode();
+ req.put("method", method);
+ req.put("id", id);
+ if (params != null) {
+ ArrayNode args = JsonNodeFactory.instance.arrayNode();
+ for (Object p : params) {
+ args.add(JsonNodeFactory.instance.POJONode(p));
+ }
+ req.put("params", args);
}
- return jsonObject;
+ this.jsonNode = req;
}
public abstract void write(OutputStream os) throws Exception;
public boolean isNotification() {
- return id == null || id == JSONObject.NULL;
+ return id == null || (id instanceof NullNode);
}
public String getMethod() {
return method;
}
- public Object getId() {
+ public JsonNode getId() {
return id;
}
@@ -85,4 +85,8 @@ public abstract class JsonRpcRequest {
return params;
}
+ public ObjectNode getJsonNode() {
+ return jsonNode;
+ }
+
}