From 4c0a16df6f97bc8351451bb4e0ac47c8a30c2cd8 Mon Sep 17 00:00:00 2001 From: bergtwvd Date: Fri, 14 Jan 2022 02:03:34 +0100 Subject: [PATCH] Additions to parse and generate a stream of JSON values. --- joy-classic-tests/pom.xml | 4 - .../org/leadpony/joy/api/JsonGenerator.java | 18 +- .../java/org/leadpony/joy/api/JsonParser.java | 38 ++++ .../joy/core/AbstractJsonParserFactory.java | 10 +- .../joy/core/AbstractJsonProvider.java | 14 +- .../leadpony/joy/core/BasicJsonParser.java | 140 +++++++------- .../joy/core/CompactJsonGenerator.java | 4 +- .../joy/core/JsonGeneratorFactoryImpl.java | 9 +- .../joy/core/JsonParserFactoryImpl.java | 6 +- .../joy/core/PrettyJsonGenerator.java | 5 +- .../joy/core/SimpleJsonGenerator.java | 174 +++++++++++++----- joy-yaml-tests/pom.xml | 9 +- 12 files changed, 284 insertions(+), 147 deletions(-) create mode 100644 joy-core/src/main/java/org/leadpony/joy/api/JsonParser.java diff --git a/joy-classic-tests/pom.xml b/joy-classic-tests/pom.xml index 20af9fb..fa72ea4 100644 --- a/joy-classic-tests/pom.xml +++ b/joy-classic-tests/pom.xml @@ -15,10 +15,6 @@ jar org.leadpony.joy.classic.tests - - 14 - - 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