org.junit.jupiter
diff --git a/joy-core/src/main/java/org/leadpony/joy/api/JsonGenerator.java b/joy-core/src/main/java/org/leadpony/joy/api/JsonGenerator.java
index a479e0d..dc9167f 100644
--- a/joy-core/src/main/java/org/leadpony/joy/api/JsonGenerator.java
+++ b/joy-core/src/main/java/org/leadpony/joy/api/JsonGenerator.java
@@ -40,8 +40,8 @@ public interface JsonGenerator extends jakarta.json.stream.JsonGenerator {
String INDENTATION_SIZE = "org.leadpony.joy.api.JsonGenerator.indentationSize";
/**
- * Configuration property to use a tab for indentation instead of spaces. The
- * value of the property could be anything.
+ * Configuration property to use a tab for indentation instead of spaces.
+ * The value of the property could be anything.
*
*
* Map<String, Object> config = new HashMap<>();
@@ -53,4 +53,18 @@ public interface JsonGenerator extends jakarta.json.stream.JsonGenerator {
* @since 1.1
*/
String TAB_INDENTATION = "org.leadpony.joy.api.JsonGenerator.tabIndentation";
+
+ /**
+ * Configuration property to indicate that the output of the generator is a
+ * sequence of JSON values. The value of the property could be anything.
+ *
+ *
+ * Map<String, Object> config = new HashMap<>();
+ * config.put(JsonGenerator.VALUE_STREAM, Boolean.TRUE);
+ *
+ *
+ *
+ * @since 1.2
+ */
+ String VALUE_STREAM = "org.leadpony.joy.api.JsonGenerator.valueStream";
}
diff --git a/joy-core/src/main/java/org/leadpony/joy/api/JsonParser.java b/joy-core/src/main/java/org/leadpony/joy/api/JsonParser.java
new file mode 100644
index 0000000..4fb8f64
--- /dev/null
+++ b/joy-core/src/main/java/org/leadpony/joy/api/JsonParser.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2019-2020 the Joy Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.leadpony.joy.api;
+
+/**
+ * An extended {@link JsonParser}.
+ *
+ * @author leadpony
+ */
+public interface JsonParser {
+
+ /**
+ * Configuration property to indicate that the input of the parser is a
+ * sequence of JSON values. The value of the property could be anything.
+ *
+ *
+ * Map<String, Object> config = new HashMap<>();
+ * config.put(JsonParser.VALUE_STREAM, Boolean.TRUE);
+ *
+ *
+ *
+ * @since 1.2
+ */
+ String VALUE_STREAM = "org.leadpony.joy.api.JsonParser.valueStream";
+}
diff --git a/joy-core/src/main/java/org/leadpony/joy/core/AbstractJsonParserFactory.java b/joy-core/src/main/java/org/leadpony/joy/core/AbstractJsonParserFactory.java
index e443020..4b66fe8 100644
--- a/joy-core/src/main/java/org/leadpony/joy/core/AbstractJsonParserFactory.java
+++ b/joy-core/src/main/java/org/leadpony/joy/core/AbstractJsonParserFactory.java
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.leadpony.joy.core;
import static org.leadpony.joy.core.Preconditions.requireNonNull;
@@ -34,12 +33,19 @@
*/
public abstract class AbstractJsonParserFactory extends ConfigurableFactory implements JsonParserFactory {
+ private static final String[] SUPPORTED_PROPERTIES = {
+ org.leadpony.joy.api.JsonParser.VALUE_STREAM
+ };
+
+ final boolean valueStream;
+
protected AbstractJsonParserFactory(Map properties) {
- this(properties, NO_SUPPORTED_PROPERTIES);
+ this(properties, SUPPORTED_PROPERTIES);
}
protected AbstractJsonParserFactory(Map properties, String[] supported) {
super(properties, supported);
+ this.valueStream = containsProperty(org.leadpony.joy.api.JsonParser.VALUE_STREAM);
}
@Override
diff --git a/joy-core/src/main/java/org/leadpony/joy/core/AbstractJsonProvider.java b/joy-core/src/main/java/org/leadpony/joy/core/AbstractJsonProvider.java
index 4c04f89..e69b154 100644
--- a/joy-core/src/main/java/org/leadpony/joy/core/AbstractJsonProvider.java
+++ b/joy-core/src/main/java/org/leadpony/joy/core/AbstractJsonProvider.java
@@ -70,14 +70,14 @@ protected AbstractJsonProvider() {
@Override
public JsonParser createParser(Reader reader) {
requireNonNull(reader, "reader");
- return new BasicJsonParser(reader, bufferFactory);
+ return new BasicJsonParser(reader, bufferFactory, false);
}
@Override
public JsonParser createParser(InputStream in) {
requireNonNull(in, "in");
Reader reader = createStreamReader(in);
- return new BasicJsonParser(reader, bufferFactory);
+ return new BasicJsonParser(reader, bufferFactory, false);
}
@Override
@@ -88,14 +88,14 @@ public JsonParserFactory createParserFactory(Map config) {
@Override
public JsonGenerator createGenerator(Writer writer) {
requireNonNull(writer, "writer");
- return new CompactJsonGenerator(writer, bufferFactory);
+ return new CompactJsonGenerator(writer, bufferFactory, false);
}
@Override
public JsonGenerator createGenerator(OutputStream out) {
requireNonNull(out, "out");
Writer writer = new OutputStreamWriter(out, StandardCharsets.UTF_8);
- return new CompactJsonGenerator(writer, bufferFactory);
+ return new CompactJsonGenerator(writer, bufferFactory, false);
}
@Override
@@ -118,7 +118,7 @@ public JsonReader createReader(InputStream in) {
@Override
public JsonWriter createWriter(Writer writer) {
requireNonNull(writer, "writer");
- JsonGenerator generator = new CompactJsonGenerator(writer, bufferFactory);
+ JsonGenerator generator = new CompactJsonGenerator(writer, bufferFactory, false);
return new JsonWriterImpl(generator);
}
@@ -126,7 +126,7 @@ public JsonWriter createWriter(Writer writer) {
public JsonWriter createWriter(OutputStream out) {
requireNonNull(out, "out");
Writer writer = new OutputStreamWriter(out, StandardCharsets.UTF_8);
- JsonGenerator generator = new CompactJsonGenerator(writer, bufferFactory);
+ JsonGenerator generator = new CompactJsonGenerator(writer, bufferFactory, false);
return new JsonWriterImpl(generator);
}
@@ -202,7 +202,7 @@ public JsonPatch createPatch(JsonArray array) {
* {@inheritDoc}
*
* @throws IllegalArgumentException if the type of {@code target} is not the
- * same as {@code source}.
+ * same as {@code source}.
*/
@Override
public JsonPatch createDiff(JsonStructure source, JsonStructure target) {
diff --git a/joy-core/src/main/java/org/leadpony/joy/core/BasicJsonParser.java b/joy-core/src/main/java/org/leadpony/joy/core/BasicJsonParser.java
index fac11d9..57bb6fa 100644
--- a/joy-core/src/main/java/org/leadpony/joy/core/BasicJsonParser.java
+++ b/joy-core/src/main/java/org/leadpony/joy/core/BasicJsonParser.java
@@ -36,6 +36,8 @@
*/
class BasicJsonParser extends AbstractJsonParser {
+ private final boolean valueStream;
+
private final Reader reader;
private boolean alreadyClosed;
@@ -76,9 +78,10 @@ class BasicJsonParser extends AbstractJsonParser {
private JsonLocation location = BasicJsonLocation.INITIAL;
- BasicJsonParser(Reader reader, CharBufferFactory bufferFactory) {
+ BasicJsonParser(Reader reader, CharBufferFactory bufferFactory, boolean valueStream) {
this.reader = reader;
this.bufferFactory = bufferFactory;
+ this.valueStream = valueStream;
this.lineNumber = 1;
this.readBuffer = bufferFactory.createBuffer();
@@ -87,7 +90,6 @@ class BasicJsonParser extends AbstractJsonParser {
}
/* As a JsonParser */
-
@Override
public boolean hasNext() {
if (readyToNext) {
@@ -188,7 +190,6 @@ public void close() {
}
/* As a DefaultJsonParser */
-
@Override
public final Event getCurrentEvent() {
return currentEvent;
@@ -224,7 +225,6 @@ public boolean isInObject() {
}
/* As a BasicJsonParser */
-
Event processKey() {
consumeChar();
return processKey(peekNonSpaceChar());
@@ -246,43 +246,43 @@ Event processValue() {
Event processValue(int c) {
switch (c) {
- case '[':
- consumeChar();
- pushState(State.ARRAY_FIRST_ITEM);
- return Event.START_ARRAY;
- case '{':
- consumeChar();
- pushState(State.OBJECT_FIRST_KEY);
- return Event.START_OBJECT;
- case 't':
- parseTrue();
- return Event.VALUE_TRUE;
- case 'f':
- parseFalse();
- return Event.VALUE_FALSE;
- case 'n':
- parseNull();
- return Event.VALUE_NULL;
- case '"':
- parseString();
- return Event.VALUE_STRING;
- case '-':
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- parseNumber(c);
- return Event.VALUE_NUMBER;
- case -1:
- throw newUnexpectedEndException(ParserEventSet.VALUES);
- default:
- throw newUnexpectedCharException(c);
+ case '[':
+ consumeChar();
+ pushState(State.ARRAY_FIRST_ITEM);
+ return Event.START_ARRAY;
+ case '{':
+ consumeChar();
+ pushState(State.OBJECT_FIRST_KEY);
+ return Event.START_OBJECT;
+ case 't':
+ parseTrue();
+ return Event.VALUE_TRUE;
+ case 'f':
+ parseFalse();
+ return Event.VALUE_FALSE;
+ case 'n':
+ parseNull();
+ return Event.VALUE_NULL;
+ case '"':
+ parseString();
+ return Event.VALUE_STRING;
+ case '-':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ parseNumber(c);
+ return Event.VALUE_NUMBER;
+ case -1:
+ throw newUnexpectedEndException(ParserEventSet.VALUES);
+ default:
+ throw newUnexpectedCharException(c);
}
}
@@ -519,30 +519,30 @@ private char unescape() {
consumeChar();
int c = peekValueChar();
switch (c) {
- case '"':
- case '\\':
- case '/':
- consumeChar();
- return (char) c;
- case 'b':
- consumeChar();
- return '\b';
- case 'f':
- consumeChar();
- return '\f';
- case 'n':
- consumeChar();
- return '\n';
- case 'r':
- consumeChar();
- return '\r';
- case 't':
- consumeChar();
- return '\t';
- case 'u':
- return unescapeUnicode();
- default:
- throw newUnexpectedCharException(c);
+ case '"':
+ case '\\':
+ case '/':
+ consumeChar();
+ return (char) c;
+ case 'b':
+ consumeChar();
+ return '\b';
+ case 'f':
+ consumeChar();
+ return '\f';
+ case 'n':
+ consumeChar();
+ return '\n';
+ case 'r':
+ consumeChar();
+ return '\r';
+ case 't':
+ consumeChar();
+ return '\t';
+ case 'u':
+ return unescapeUnicode();
+ default:
+ throw newUnexpectedCharException(c);
}
}
@@ -808,11 +808,12 @@ boolean accepts(int c, BasicJsonParser parser) {
@Override
Event process(int c, BasicJsonParser parser) {
- parser.setState(FINISHED);
+ if (!parser.valueStream) {
+ parser.setState(FINISHED);
+ }
return parser.processValue(c);
}
},
-
FINISHED() {
@Override
boolean accepts(int c, BasicJsonParser parser) {
@@ -828,7 +829,6 @@ Event process(int c, BasicJsonParser parser) {
throw parser.newUnexpectedCharException(c);
}
},
-
ARRAY_FIRST_ITEM() {
@Override
Event process(int c, BasicJsonParser parser) {
@@ -845,7 +845,6 @@ boolean isInArray() {
return true;
}
},
-
ARRAY_ITEM() {
@Override
Event process(int c, BasicJsonParser parser) {
@@ -865,7 +864,6 @@ boolean isInArray() {
return true;
}
},
-
OBJECT_FIRST_KEY() {
@Override
Event process(int c, BasicJsonParser parser) {
@@ -882,7 +880,6 @@ boolean isInObject() {
return true;
}
},
-
OBJECT_KEY() {
@Override
Event process(int c, BasicJsonParser parser) {
@@ -902,7 +899,6 @@ boolean isInObject() {
return true;
}
},
-
OBJECT_VALUE() {
@Override
Event process(int c, BasicJsonParser parser) {
diff --git a/joy-core/src/main/java/org/leadpony/joy/core/CompactJsonGenerator.java b/joy-core/src/main/java/org/leadpony/joy/core/CompactJsonGenerator.java
index d63be44..16db1a2 100644
--- a/joy-core/src/main/java/org/leadpony/joy/core/CompactJsonGenerator.java
+++ b/joy-core/src/main/java/org/leadpony/joy/core/CompactJsonGenerator.java
@@ -29,8 +29,8 @@ class CompactJsonGenerator extends SimpleJsonGenerator {
private final CharBufferFactory bufferFactory;
private boolean alreadyClosed;
- CompactJsonGenerator(Writer writer, CharBufferFactory bufferFactory) {
- super(bufferFactory.createBuffer());
+ CompactJsonGenerator(Writer writer, CharBufferFactory bufferFactory, boolean valueStream) {
+ super(bufferFactory.createBuffer(), valueStream);
this.writer = decorateWriter(writer);
this.bufferFactory = bufferFactory;
}
diff --git a/joy-core/src/main/java/org/leadpony/joy/core/JsonGeneratorFactoryImpl.java b/joy-core/src/main/java/org/leadpony/joy/core/JsonGeneratorFactoryImpl.java
index 80a93be..17c77c5 100644
--- a/joy-core/src/main/java/org/leadpony/joy/core/JsonGeneratorFactoryImpl.java
+++ b/joy-core/src/main/java/org/leadpony/joy/core/JsonGeneratorFactoryImpl.java
@@ -38,7 +38,8 @@ class JsonGeneratorFactoryImpl extends ConfigurableFactory implements JsonGenera
private static final String[] SUPPORTED_PROPERTIES = {
JsonGenerator.PRETTY_PRINTING,
JsonGenerator.INDENTATION_SIZE,
- JsonGenerator.TAB_INDENTATION
+ JsonGenerator.TAB_INDENTATION,
+ JsonGenerator.VALUE_STREAM
};
private static final int DEFAULT_INDENTATION_SIZE = 4;
@@ -46,6 +47,7 @@ class JsonGeneratorFactoryImpl extends ConfigurableFactory implements JsonGenera
private final boolean prettyPrinting;
private final char indentationChar;
private final int indentationSize;
+ private final boolean valueStream;
private final CharBufferFactory bufferFactory;
JsonGeneratorFactoryImpl(Map config, CharBufferFactory bufferFactory) {
@@ -59,6 +61,7 @@ class JsonGeneratorFactoryImpl extends ConfigurableFactory implements JsonGenera
this.indentationChar = ' ';
this.indentationSize = getPropertyValue(JsonGenerator.INDENTATION_SIZE, DEFAULT_INDENTATION_SIZE);
}
+ this.valueStream = containsProperty(JsonGenerator.VALUE_STREAM);
}
@Override
@@ -84,9 +87,9 @@ public JsonGenerator createGenerator(OutputStream out, Charset charset) {
private JsonGenerator createConfiguredGenerator(Writer writer) {
if (prettyPrinting) {
- return new PrettyJsonGenerator(writer, bufferFactory, indentationChar, indentationSize);
+ return new PrettyJsonGenerator(writer, bufferFactory, indentationChar, indentationSize, valueStream);
} else {
- return new CompactJsonGenerator(writer, bufferFactory);
+ return new CompactJsonGenerator(writer, bufferFactory, valueStream);
}
}
}
diff --git a/joy-core/src/main/java/org/leadpony/joy/core/JsonParserFactoryImpl.java b/joy-core/src/main/java/org/leadpony/joy/core/JsonParserFactoryImpl.java
index fee36d5..01c53d9 100644
--- a/joy-core/src/main/java/org/leadpony/joy/core/JsonParserFactoryImpl.java
+++ b/joy-core/src/main/java/org/leadpony/joy/core/JsonParserFactoryImpl.java
@@ -43,14 +43,14 @@ class JsonParserFactoryImpl extends AbstractJsonParserFactory {
@Override
public JsonParser createParser(Reader reader) {
requireNonNull(reader, "reader");
- return new BasicJsonParser(reader, bufferFactory);
+ return new BasicJsonParser(reader, bufferFactory, this.valueStream);
}
@Override
public JsonParser createParser(InputStream in) {
requireNonNull(in, "in");
Reader reader = createStreamReader(in);
- return new BasicJsonParser(reader, bufferFactory);
+ return new BasicJsonParser(reader, bufferFactory, this.valueStream);
}
@Override
@@ -58,6 +58,6 @@ public JsonParser createParser(InputStream in, Charset charset) {
requireNonNull(in, "in");
requireNonNull(charset, "charset");
Reader reader = new InputStreamReader(in, charset);
- return new BasicJsonParser(reader, bufferFactory);
+ return new BasicJsonParser(reader, bufferFactory, this.valueStream);
}
}
diff --git a/joy-core/src/main/java/org/leadpony/joy/core/PrettyJsonGenerator.java b/joy-core/src/main/java/org/leadpony/joy/core/PrettyJsonGenerator.java
index 6c6ac00..eee318f 100644
--- a/joy-core/src/main/java/org/leadpony/joy/core/PrettyJsonGenerator.java
+++ b/joy-core/src/main/java/org/leadpony/joy/core/PrettyJsonGenerator.java
@@ -26,8 +26,9 @@ final class PrettyJsonGenerator extends CompactJsonGenerator {
private final int indentationSize;
private int indentationTotal;
- PrettyJsonGenerator(Writer writer, CharBufferFactory bufferFactory, char indentationChar, int indentationSize) {
- super(writer, bufferFactory);
+ PrettyJsonGenerator(Writer writer, CharBufferFactory bufferFactory, char indentationChar, int indentationSize,
+ boolean valueStream) {
+ super(writer, bufferFactory, valueStream);
this.indentationChar = indentationChar;
this.indentationSize = indentationSize;
}
diff --git a/joy-core/src/main/java/org/leadpony/joy/core/SimpleJsonGenerator.java b/joy-core/src/main/java/org/leadpony/joy/core/SimpleJsonGenerator.java
index 8362ec1..9e060b5 100644
--- a/joy-core/src/main/java/org/leadpony/joy/core/SimpleJsonGenerator.java
+++ b/joy-core/src/main/java/org/leadpony/joy/core/SimpleJsonGenerator.java
@@ -32,6 +32,7 @@
import jakarta.json.JsonObject;
import jakarta.json.JsonString;
import jakarta.json.JsonValue;
+import jakarta.json.JsonValue.ValueType;
import jakarta.json.stream.JsonGenerationException;
import org.leadpony.joy.api.JsonGenerator;
@@ -43,14 +44,17 @@ class SimpleJsonGenerator extends JsonStringBuilder implements JsonGenerator {
private final Deque stateStack = new ArrayDeque<>();
private State state;
+ private final boolean valueStream;
SimpleJsonGenerator() {
this.state = State.INITIAL;
+ this.valueStream = false;
}
- SimpleJsonGenerator(char[] buffer) {
+ SimpleJsonGenerator(char[] buffer, boolean valueStream) {
super(buffer);
this.state = State.INITIAL;
+ this.valueStream = valueStream;
}
@Override
@@ -221,8 +225,14 @@ public JsonGenerator writeNull() {
@Override
public void close() {
- if (state != State.FINAL) {
- throw newJsonGenerationException(Message.thatGeneratorIsNotCompleted());
+ if (valueStream) {
+ if (state != State.INITIAL && state != State.NEXT_VALUE) {
+ throw newJsonGenerationException(Message.thatGeneratorIsNotCompleted());
+ }
+ } else {
+ if (state != State.FINAL) {
+ throw newJsonGenerationException(Message.thatGeneratorIsNotCompleted());
+ }
}
}
@@ -247,29 +257,29 @@ final void appendKey(String name) {
final void appendValue(JsonValue value) {
switch (value.getValueType()) {
- case ARRAY:
- appendArray((JsonArray) value);
- break;
- case OBJECT:
- appendObject((JsonObject) value);
- break;
- case STRING:
- appendValue(((JsonString) value).getString());
- break;
- case NUMBER:
- append(value.toString());
- break;
- case TRUE:
- append("true");
- break;
- case FALSE:
- append("false");
- break;
- case NULL:
- appendNull();
- break;
- default:
- break;
+ case ARRAY:
+ appendArray((JsonArray) value);
+ break;
+ case OBJECT:
+ appendObject((JsonObject) value);
+ break;
+ case STRING:
+ appendValue(((JsonString) value).getString());
+ break;
+ case NUMBER:
+ append(value.toString());
+ break;
+ case TRUE:
+ append("true");
+ break;
+ case FALSE:
+ append("false");
+ break;
+ case NULL:
+ appendNull();
+ break;
+ default:
+ break;
}
}
@@ -330,6 +340,10 @@ protected void appendColon() {
append(':');
}
+ protected void appendSpace() {
+ append(' ');
+ }
+
static JsonException newJsonException(String message, IOException e) {
return new JsonException(message, e);
}
@@ -349,75 +363,155 @@ enum State {
@Override
State writeStartObject(SimpleJsonGenerator g) {
g.appendOpeningBracket('{');
- g.pushState(FINAL);
+ g.pushState(g.valueStream ? NEXT_VALUE : FINAL);
return START_OBJECT;
}
@Override
State writeStartArray(SimpleJsonGenerator g) {
g.appendOpeningBracket('[');
- g.pushState(FINAL);
+ g.pushState(g.valueStream ? NEXT_VALUE : FINAL);
return START_ARRAY;
}
@Override
State write(SimpleJsonGenerator g, JsonValue value) {
g.appendValue(value);
- return FINAL;
+ return g.valueStream ? NEXT_VALUE : FINAL;
}
@Override
State write(SimpleJsonGenerator g, String value) {
g.appendValue(value);
- return FINAL;
+ return g.valueStream ? NEXT_VALUE : FINAL;
}
@Override
State write(SimpleJsonGenerator g, BigDecimal value) {
g.append(value);
- return FINAL;
+ return g.valueStream ? NEXT_VALUE : FINAL;
}
@Override
State write(SimpleJsonGenerator g, BigInteger value) {
g.append(value);
- return FINAL;
+ return g.valueStream ? NEXT_VALUE : FINAL;
}
@Override
State write(SimpleJsonGenerator g, int value) {
g.append(value);
- return FINAL;
+ return g.valueStream ? NEXT_VALUE : FINAL;
}
@Override
State write(SimpleJsonGenerator g, long value) {
g.append(value);
- return FINAL;
+ return g.valueStream ? NEXT_VALUE : FINAL;
}
@Override
State write(SimpleJsonGenerator g, double value) {
g.append(value);
- return FINAL;
+ return g.valueStream ? NEXT_VALUE : FINAL;
}
@Override
State write(SimpleJsonGenerator g, boolean value) {
g.append(value);
- return FINAL;
+ return g.valueStream ? NEXT_VALUE : FINAL;
}
@Override
State writeNull(SimpleJsonGenerator g) {
g.appendNull();
- return FINAL;
+ return g.valueStream ? NEXT_VALUE : FINAL;
}
},
+ NEXT_VALUE(Message::thatIllegalGeneratorMethodWasCalledBeforeAll) {
+ @Override
+ State writeStartObject(SimpleJsonGenerator g) {
+ g.appendOpeningBracket('{');
+ g.pushState(NEXT_VALUE);
+ return START_OBJECT;
+ }
+
+ @Override
+ State writeStartArray(SimpleJsonGenerator g) {
+ g.appendOpeningBracket('[');
+ g.pushState(NEXT_VALUE);
+ return START_ARRAY;
+ }
+
+ @Override
+ State write(SimpleJsonGenerator g, JsonValue value) {
+ if (!value.getValueType().equals(ValueType.OBJECT)
+ && !value.getValueType().equals(ValueType.ARRAY)) {
+ g.appendSpace();
+ }
+
+ g.appendValue(value);
+ return NEXT_VALUE;
+ }
+
+ @Override
+ State write(SimpleJsonGenerator g, String value) {
+ g.appendSpace();
+ g.appendValue(value);
+ return NEXT_VALUE;
+ }
+
+ @Override
+ State write(SimpleJsonGenerator g, BigDecimal value) {
+ g.appendSpace();
+ g.append(value);
+ return NEXT_VALUE;
+ }
+
+ @Override
+ State write(SimpleJsonGenerator g, BigInteger value) {
+ g.appendSpace();
+ g.append(value);
+ return NEXT_VALUE;
+ }
+ @Override
+ State write(SimpleJsonGenerator g, int value) {
+ g.appendSpace();
+ g.append(value);
+ return NEXT_VALUE;
+ }
+
+ @Override
+ State write(SimpleJsonGenerator g, long value) {
+ g.appendSpace();
+ g.append(value);
+ return NEXT_VALUE;
+ }
+
+ @Override
+ State write(SimpleJsonGenerator g, double value) {
+ g.appendSpace();
+ g.append(value);
+ return NEXT_VALUE;
+ }
+
+ @Override
+ State write(SimpleJsonGenerator g, boolean value) {
+ g.appendSpace();
+ g.append(value);
+ return NEXT_VALUE;
+ }
+
+ @Override
+ State writeNull(SimpleJsonGenerator g) {
+ g.appendSpace();
+ g.appendNull();
+ return NEXT_VALUE;
+ }
+ },
FINAL(Message::thatIllegalGeneratorMethodWasCalledAfterAll) {
},
-
START_ARRAY(Message::thatIllegalGeneratorMethodWasCalledAfterArrayStart) {
@Override
@@ -505,7 +599,6 @@ State writeEnd(SimpleJsonGenerator g) {
return g.popState();
}
},
-
ARRAY(Message::thatIllegalGeneratorMethodWasCalledAfterArrayItem) {
@Override
@@ -593,7 +686,6 @@ State writeEnd(SimpleJsonGenerator g) {
return g.popState();
}
},
-
START_OBJECT(Message::thatIllegalGeneratorMethodWasCalledAfterObjectStart) {
@Override
@@ -699,7 +791,6 @@ State writeEnd(SimpleJsonGenerator g) {
return g.popState();
}
},
-
KEY_NAME(Message::thatIllegalGeneratorMethodWasCalledAfterPropertyKey) {
@Override
@@ -770,7 +861,6 @@ State writeNull(SimpleJsonGenerator g) {
return OBJECT;
}
},
-
OBJECT(Message::thatIllegalGeneratorMethodWasCalledAfterPropertyValue) {
@Override
State writeStartObject(SimpleJsonGenerator g, String name) {
diff --git a/joy-yaml-tests/pom.xml b/joy-yaml-tests/pom.xml
index 3d93ad0..fff5425 100644
--- a/joy-yaml-tests/pom.xml
+++ b/joy-yaml-tests/pom.xml
@@ -16,7 +16,7 @@
org.leadpony.joy.yaml.tests
- 14
+ 17
@@ -54,13 +54,6 @@
org.apache.maven.plugins
maven-checkstyle-plugin
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
- --enable-preview
-
-
org.apache.maven.plugins
maven-surefire-plugin