@Override void formatAsJSON( final StringBuilder builder, final int indent, final boolean multiLineRequested) { builder.append('{'); final boolean multiLine = multiLineRequested && map.size() > 1; if (multiLine) { indent(builder.append('\n'), indent + 1); } final Iterator<Map.Entry<String, ModelNode>> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { final Map.Entry<String, ModelNode> entry = iterator.next(); builder.append(quote(entry.getKey())); builder.append(" : "); final ModelNode value = entry.getValue(); value.formatAsJSON(builder, multiLine ? indent + 1 : indent, multiLineRequested); if (iterator.hasNext()) { if (multiLine) { indent(builder.append(",\n"), indent + 1); } else { builder.append(", "); } } } if (multiLine) { indent(builder.append('\n'), indent); } builder.append('}'); }
@Test public void testFormatAsJSON() { final StringWriter stringWriter = new StringWriter(); final PrintWriter writer = new PrintWriter(stringWriter, true); node.formatAsJSON(writer, 0, true); final String json = stringWriter.toString(); assertNotNull(json); assertEquals(true, json.contains("\n")); assertEquals(true, json.contains(" ")); assertThat(json, containsString("\"description\" : \"A managable resource\",")); assertThat( json, containsString("\"type\" : {\n \"TYPE_MODEL_VALUE\" : \"OBJECT\"\n },")); assertThat(json, containsString("\"tail-comment-allowed\" : false,")); assertThat(json, containsString("\"attributes\" : {")); assertThat(json, containsString("\"foo\" : \"some description of foo\",")); assertThat(json, containsString("\"bar\" : \"some description of bar\",")); assertThat(json, containsString("\"list\" : [")); assertThat(json, containsString("\"value1\",")); assertThat(json, containsString("\"value2\",")); assertThat(json, containsString("\"value3\"")); assertThat(json, containsString("\"value-type\" : {")); assertThat( json, containsString("\"size\" : {\n \"TYPE_MODEL_VALUE\" : \"INT\"\n },")); assertThat( json, containsString("\"color\" : {\n \"TYPE_MODEL_VALUE\" : \"STRING\"\n }")); assertThat(json, containsString("\"big-decimal-value\" : 10.0,")); assertThat(json, containsString("\"big-integer-value\" : 10,")); assertThat( json, containsString("\"bytes-value\" : {\n \"BYTES_VALUE\" : \"ADc=\"\n },")); assertThat(json, containsString("\"double-value\" : 55.0,")); assertThat(json, containsString("\"max-double-value\" : 1.7976931348623157E308,")); assertThat(json, containsString("\"int-value\" : 12,")); assertThat(json, containsString("\"max-int-value\" : 2147483647,")); assertThat(json, containsString("\"long-value\" : 14")); assertThat(json, containsString("\"max-long-value\" : 9223372036854775807")); assertThat( json, containsString( "\n \"property-value\" : {\n \"property\" : {\n \"TYPE_MODEL_VALUE\" : \"PROPERTY\"\n }\n },")); assertThat( json, containsString( "\"expression-value\" : {\n \"EXPRESSION_VALUE\" : \"$expression\"\n }")); assertThat(json, containsString("\"true-value\" : true")); assertThat(json, containsString("\"false-value\" : false")); assertThat(json, containsString("\n}")); final String compressedJson = node.toJSONString(true); assertNotNull(compressedJson); assertEquals(false, compressedJson.contains("\n")); assertEquals(false, compressedJson.contains(" ")); }