/** * Method for setting value of a field to specified String value. * * @return This node (to allow chaining) */ public ObjectNode put(String fieldName, String v) { return _put(fieldName, (v == null) ? nullNode() : textNode(v)); }
@Override void writeChildValue(String childName, String value) { JsonNode childNode = value == null ? node.nullNode() : node.textNode(value); writeChild(childName, childNode); }
JsonNodeFactory nc = new JsonNodeFactory(false); // or true, depending ObjectNode root = new ObjectNode(nc); TextNode text = root.textNode("unregister"); NumericNode id = root.numberNode(2); root.set("type", text); root.set("id", id);
/** * Method for setting value of a field to specified String value. * * @return This node (to allow chaining) */ public ObjectNode put(String fieldName, String v) { return _put(fieldName, (v == null) ? nullNode() : textNode(v)); }
/** * Method for setting value of a field to specified String value. * * @return This node (to allow chaining) */ public ObjectNode put(String fieldName, String v) { return _put(fieldName, (v == null) ? nullNode() : textNode(v)); }
/** * Method for setting value of a field to specified String value. * * @return This node (to allow chaining) */ public ObjectNode put(String fieldName, String v) { return _put(fieldName, (v == null) ? nullNode() : textNode(v)); }
/** * Method for setting value of a field to specified String value. * * @return This node (to allow chaining) */ public ObjectNode put(String fieldName, String v) { return _put(fieldName, (v == null) ? nullNode() : textNode(v)); }
/** * Method for setting value of a field to specified String value. */ public ObjectNode put(String fieldName, String v) { if (v == null) { putNull(fieldName); } else { _put(fieldName, textNode(v)); } return this; }
/** * Method for setting value of a field to specified String value. * * @return This node (to allow chaining) */ public ObjectNode put(String fieldName, String v) { if (v == null) { putNull(fieldName); } else { _put(fieldName, textNode(v)); } return this; }
@Test(expected = IllegalStateException.class) public void deserializedRequestsShouldThrowWhenSecondParameterIsNotJson() throws JsonParseException, JsonMappingException, IOException { JsonNode[] nodes = new JsonNode[] { new ObjectNode(new JsonNodeFactory(false)).textNode("getAccounts"), new ObjectNode(new JsonNodeFactory(false)).textNode("true"), new ObjectNode(new JsonNodeFactory(false)).textNode("#0")}; ProtocolRequest.deserialize(nodes); }
@Test public void deserializedRequestsShouldWorkWhenSingleRequest() throws JsonParseException, JsonMappingException, IOException { JsonNode[] nodes = new JsonNode[] { new ObjectNode(new JsonNodeFactory(false)).textNode("getAccounts"), new ObjectNode(new JsonNodeFactory(false)).putObject("{\"id\": \"id\"}"), new ObjectNode(new JsonNodeFactory(false)).textNode("#1")}; ProtocolRequest request = ProtocolRequest.deserialize(nodes); assertThat(request.getMethodName()).isEqualTo(Method.Request.name("getAccounts")); assertThat(request.getParameters()).isNotNull(); assertThat(request.getClientId()).isEqualTo(ClientId.of("#1")); } }
@Test public void extractJmapRequestShouldNotThrowWhenJsonContainsUnknownProperty() throws Exception { ObjectNode parameters = new ObjectNode(new JsonNodeFactory(false)); parameters.put("id", "myId"); JsonNode[] nodes = new JsonNode[] { new ObjectNode(new JsonNodeFactory(false)).textNode("unknwonMethod"), parameters, new ObjectNode(new JsonNodeFactory(false)).textNode("#1")}; testee.extractJmapRequest(ProtocolRequest.deserialize(nodes), RequestClass.class); }
@Test(expected = IllegalStateException.class) public void deserializedRequestsShouldThrowWhenTooMuchElements() throws Exception { JsonNode[] nodes = new JsonNode[] { new ObjectNode(new JsonNodeFactory(false)).textNode("getAccounts"), new ObjectNode(new JsonNodeFactory(false)).putObject("{}"), new ObjectNode(new JsonNodeFactory(false)).textNode("#0"), new ObjectNode(new JsonNodeFactory(false)).textNode("tooMuch")}; ProtocolRequest.deserialize(nodes); }
@Test public void formatErrorResponseShouldWork() { String expectedClientId = "#1"; ObjectNode parameters = new ObjectNode(new JsonNodeFactory(false)); parameters.put("id", "myId"); JsonNode[] nodes = new JsonNode[] { new ObjectNode(new JsonNodeFactory(false)).textNode("unknwonMethod"), parameters, new ObjectNode(new JsonNodeFactory(false)).textNode(expectedClientId)}; List<ProtocolResponse> response = testee.formatMethodResponse( Stream.of(JmapResponse .builder() .clientId(ProtocolRequest.deserialize(nodes).getClientId()) .error() .build())) .collect(Collectors.toList()); assertThat(response).hasSize(1) .extracting(ProtocolResponse::getResponseName, x -> x.getResults().get("type").asText(), ProtocolResponse::getClientId) .containsExactly(tuple(ErrorResponse.ERROR_METHOD, ErrorResponse.DEFAULT_ERROR_MESSAGE, ClientId.of(expectedClientId))); }
@Test public void extractJmapRequestShouldNotThrowWhenPropertyMissingInJson() throws Exception { ObjectNode parameters = new ObjectNode(new JsonNodeFactory(false)); JsonNode[] nodes = new JsonNode[] { new ObjectNode(new JsonNodeFactory(false)).textNode("unknwonMethod"), parameters, new ObjectNode(new JsonNodeFactory(false)).textNode("#1")}; testee.extractJmapRequest(ProtocolRequest.deserialize(nodes), RequestClass.class); }
@Test(expected = IllegalStateException.class) public void processShouldThrowWhenUnknownMethod() throws Exception { JsonNode[] nodes = new JsonNode[] { new ObjectNode(new JsonNodeFactory(false)).textNode("unknwonMethod"), new ObjectNode(new JsonNodeFactory(false)).putObject("{\"id\": \"id\"}"), new ObjectNode(new JsonNodeFactory(false)).textNode("#1")}; RequestHandler requestHandler = new RequestHandler(ImmutableSet.of(), jmapRequestParser, jmapResponseWriter); requestHandler.handle(AuthenticatedProtocolRequest.decorate(ProtocolRequest.deserialize(nodes), mockHttpServletRequest)); }
@Test(expected = IllegalArgumentException.class) public void extractJmapRequestShouldThrowWhenNullRequestClass() throws Exception { JsonNode[] nodes = new JsonNode[] { new ObjectNode(new JsonNodeFactory(false)).textNode("unknwonMethod"), new ObjectNode(new JsonNodeFactory(false)).putObject("{\"id\": \"id\"}"), new ObjectNode(new JsonNodeFactory(false)).textNode("#1")}; testee.extractJmapRequest(ProtocolRequest.deserialize(nodes), null); }
@Test(expected = IllegalStateException.class) public void deserializedRequestsShouldThrowWhenNotEnoughElements() throws Exception { JsonNode[] nodes = new JsonNode[] { new ObjectNode(new JsonNodeFactory(false)).textNode("getAccounts"), new ObjectNode(new JsonNodeFactory(false)).putObject("{}")}; ProtocolRequest.deserialize(nodes); }
@Test(expected = IllegalStateException.class) public void deserializedRequestsShouldThrowWhenFirstParameterIsNotString() throws JsonParseException, JsonMappingException, IOException { JsonNode[] nodes = new JsonNode[] { new ObjectNode(new JsonNodeFactory(false)).booleanNode(true), new ObjectNode(new JsonNodeFactory(false)).putObject("{}"), new ObjectNode(new JsonNodeFactory(false)).textNode("#0")}; ProtocolRequest.deserialize(nodes); }
@Test(expected = IllegalStateException.class) public void deserializedRequestsShouldThrowWhenThirdParameterIsNotString() throws JsonParseException, JsonMappingException, IOException { JsonNode[] nodes = new JsonNode[] { new ObjectNode(new JsonNodeFactory(false)).textNode("getAccounts"), new ObjectNode(new JsonNodeFactory(false)).putObject("{}"), new ObjectNode(new JsonNodeFactory(false)).booleanNode(true)}; ProtocolRequest.deserialize(nodes); }