From c9efcb7cf9742fd31ce421f29b78a9c045a46d15 Mon Sep 17 00:00:00 2001 From: rfeng Date: Mon, 10 Oct 2011 21:15:41 +0000 Subject: 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 --- .../binding/jsonrpc/protocol/JsonRpcRequest.java | 54 ++++++++++++---------- 1 file changed, 29 insertions(+), 25 deletions(-) (limited to 'sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/protocol/JsonRpcRequest.java') 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; + } + } -- cgit v1.2.3