diff options
Diffstat (limited to 'sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider')
-rw-r--r-- | sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCBindingInvoker.java | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCBindingInvoker.java b/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCBindingInvoker.java index 9691910893..b58fbb9f53 100644 --- a/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCBindingInvoker.java +++ b/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCBindingInvoker.java @@ -140,8 +140,12 @@ public class JSONRPCBindingInvoker implements Invoker, DataExchangeSemantics { if (!jsonResponse.has("result")) { processException(jsonResponse); } - DataType outputType = operation.getOutputType(); - if (outputType == null) { + DataType<List<DataType>> outputType = operation.getOutputType(); + DataType returnType = + (outputType != null && !outputType.getLogical().isEmpty()) ? outputType.getLogical().get(0) + : null; + + if (returnType == null) { msg.setBody(null); return msg; } @@ -156,14 +160,14 @@ public class JSONRPCBindingInvoker implements Invoker, DataExchangeSemantics { processException(jsonResponse); } - Class<?> returnType = outputType.getPhysical(); - Type genericReturnType = outputType.getGenericType(); + Class<?> returnClass = returnType.getPhysical(); + Type genericReturnType = returnType.getGenericType(); - ObjectMapper mapper = createObjectMapper(returnType); + ObjectMapper mapper = createObjectMapper(returnClass); String json = rawResult.toString(); // Jackson requires the quoted String so that readValue can work - if (returnType == String.class) { + if (returnClass == String.class) { json = "\"" + json + "\""; } Object body = mapper.readValue(json, TypeFactory.type(genericReturnType)); |