List of usage examples for com.fasterxml.jackson.databind ObjectReader treeAsTokens
@Override
public JsonParser treeAsTokens(TreeNode n)
From source file:de.dfki.kiara.jsonrpc.JsonRpcMessage.java
@Override public ResponseObject getResponseObject(TypeToken<?> returnType) throws MessageDeserializationException { if (this.response != null) { return this.response; }//from w w w . j a v a2s . c om if (this.kind != Kind.RESPONSE && this.kind != Kind.EXCEPTION) { throw new IllegalStateException("not a response message"); } if (this.kind == Kind.RESPONSE) { try { final ObjectReader reader = protocol.getObjectReader(); final JsonParser parser = reader.treeAsTokens(this.params); final Object result = reader.withType(returnType.getType()).readValue(parser); this.response = new Message.ResponseObject(result, false); return this.response; } catch (JsonProcessingException ex) { throw new MessageDeserializationException(ex); } catch (IOException ex) { throw new MessageDeserializationException(ex); } } else { JsonRpcError jsonRpcError; try { jsonRpcError = protocol.getObjectReader().treeToValue(this.error, JsonRpcError.class); } catch (JsonProcessingException ex) { throw new MessageDeserializationException(ex); } this.response = new Message.ResponseObject(new GenericRemoteException(jsonRpcError.getMessage(), jsonRpcError.getCode(), jsonRpcError.getData()), true); return this.response; } }
From source file:de.dfki.kiara.jsonrpc.JsonRpcMessage.java
@Override public RequestObject getRequestObject(TypeToken<?>[] paramTypes) throws MessageDeserializationException { if (this.request != null) { return this.request; }/*from w w w .j ava 2s .c o m*/ if (this.kind != Kind.REQUEST) { throw new IllegalStateException("not a request message"); } Object[] args = null; if (params != null) { if (!params.isArray() && !params.isObject()) { throw new MessageDeserializationException("Member 'params' is neither array nor object"); } if (params.isArray()) { args = new Object[paramTypes.length]; int i = 0; // parameter index final int numParams = params.size(); final int numParamTypes = paramTypes.length; final ObjectReader reader = protocol.getObjectReader(); for (int j = 0; j < numParamTypes; ++j) { if (paramTypes[j] == null) // this parameter will be set later continue; if (i >= numParams) throw new MessageDeserializationException( "Parameter index " + i + " is out of bounds, 'params' size is: " + numParams); try { final JsonParser parser = reader.treeAsTokens(params.get(i)); args[j] = reader.withType(paramTypes[j].getType()).readValue(parser); } catch (JsonProcessingException ex) { throw new MessageDeserializationException(ex); } catch (IOException ex) { throw new MessageDeserializationException(ex); } ++i; } if (i != numParams) throw new MessageDeserializationException( "Deserialzed " + i + " parameters, but required " + numParams); } else { throw new UnsupportedOperationException("Object is not supported as 'params' member"); } } this.request = new RequestObject(methodName, args); return this.request; }