From b7ef2741b32c19ef094b8322d6f43ccc3e228a5d Mon Sep 17 00:00:00 2001 From: JFronny Date: Sat, 13 Apr 2024 20:41:13 +0200 Subject: [PATCH] feat(serialize-xml): scaffold wrapper --- ...aseXmlReader.java => NativeXmlReader.java} | 11 ++- .../commons/serialize/xml/XmlReader.java | 4 - .../serialize/xml/{impl => }/XmlToken.java | 2 +- .../commons/serialize/xml/XmlTransport.java | 24 ++++- .../commons/serialize/xml/XmlWriter.java | 4 - .../serialize/xml/wrapper/XmlReader.java | 96 +++++++++++++++++++ .../serialize/xml/wrapper/XmlWriter.java | 62 ++++++++++++ .../src/main/java/module-info.java | 1 + .../serialize/xml/test/BaseXmlReaderTest.java | 30 +++--- 9 files changed, 204 insertions(+), 30 deletions(-) rename commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/{impl/BaseXmlReader.java => NativeXmlReader.java} (98%) delete mode 100644 commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/XmlReader.java rename commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/{impl => }/XmlToken.java (69%) delete mode 100644 commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/XmlWriter.java create mode 100644 commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/wrapper/XmlReader.java create mode 100644 commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/wrapper/XmlWriter.java diff --git a/commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/impl/BaseXmlReader.java b/commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/NativeXmlReader.java similarity index 98% rename from commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/impl/BaseXmlReader.java rename to commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/NativeXmlReader.java index cd7991f..050bbe2 100644 --- a/commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/impl/BaseXmlReader.java +++ b/commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/NativeXmlReader.java @@ -1,7 +1,8 @@ -package io.gitlab.jfronny.commons.serialize.xml.impl; +package io.gitlab.jfronny.commons.serialize.xml; import io.gitlab.jfronny.commons.serialize.MalformedDataException; import io.gitlab.jfronny.commons.serialize.StringEscapeUtil; +import io.gitlab.jfronny.commons.serialize.xml.impl.XmlScope; import java.io.Closeable; import java.io.EOFException; @@ -10,7 +11,7 @@ import java.io.Reader; import java.util.Arrays; import java.util.Objects; -public class BaseXmlReader implements Closeable { +public class NativeXmlReader implements Closeable { private static final int PEEKED_NONE = 0; private static final int PEEKED_BEGIN_TAG = 1; private static final int PEEKED_END_TAG = 2; @@ -75,11 +76,11 @@ public class BaseXmlReader implements Closeable { private boolean lenient = false; private boolean skipWhitespace = true; - public BaseXmlReader(Reader in) { + public NativeXmlReader(Reader in) { this.in = Objects.requireNonNull(in, "in == null"); } - public BaseXmlReader setLenient(boolean lenient) { + public NativeXmlReader setLenient(boolean lenient) { this.lenient = lenient; return this; } @@ -88,7 +89,7 @@ public class BaseXmlReader implements Closeable { return lenient; } - public BaseXmlReader setSkipWhitespace(boolean skipWhitespace) { + public NativeXmlReader setSkipWhitespace(boolean skipWhitespace) { this.skipWhitespace = skipWhitespace; return this; } diff --git a/commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/XmlReader.java b/commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/XmlReader.java deleted file mode 100644 index 5fa4ff5..0000000 --- a/commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/XmlReader.java +++ /dev/null @@ -1,4 +0,0 @@ -package io.gitlab.jfronny.commons.serialize.xml; - -public class XmlReader { -} diff --git a/commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/impl/XmlToken.java b/commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/XmlToken.java similarity index 69% rename from commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/impl/XmlToken.java rename to commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/XmlToken.java index cfde4ad..133903b 100644 --- a/commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/impl/XmlToken.java +++ b/commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/XmlToken.java @@ -1,4 +1,4 @@ -package io.gitlab.jfronny.commons.serialize.xml.impl; +package io.gitlab.jfronny.commons.serialize.xml; public enum XmlToken { BEGIN_TAG, diff --git a/commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/XmlTransport.java b/commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/XmlTransport.java index 6dab5f6..70a4c24 100644 --- a/commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/XmlTransport.java +++ b/commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/XmlTransport.java @@ -1,4 +1,26 @@ package io.gitlab.jfronny.commons.serialize.xml; -public class XmlTransport { +import io.gitlab.jfronny.commons.serialize.Transport; +import io.gitlab.jfronny.commons.serialize.xml.wrapper.XmlReader; +import io.gitlab.jfronny.commons.serialize.xml.wrapper.XmlWriter; + +import java.io.IOException; +import java.io.Reader; +import java.io.Writer; + +public class XmlTransport implements Transport { + @Override + public XmlReader createReader(Reader source) throws IOException { + return new XmlReader(source); + } + + @Override + public XmlWriter createWriter(Writer target) throws IOException { + return new XmlWriter(target); + } + + @Override + public String getFormatMime() { + return "application/xml"; + } } diff --git a/commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/XmlWriter.java b/commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/XmlWriter.java deleted file mode 100644 index 569a9af..0000000 --- a/commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/XmlWriter.java +++ /dev/null @@ -1,4 +0,0 @@ -package io.gitlab.jfronny.commons.serialize.xml; - -public class XmlWriter { -} diff --git a/commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/wrapper/XmlReader.java b/commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/wrapper/XmlReader.java new file mode 100644 index 0000000..f52b646 --- /dev/null +++ b/commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/wrapper/XmlReader.java @@ -0,0 +1,96 @@ +package io.gitlab.jfronny.commons.serialize.xml.wrapper; + +import io.gitlab.jfronny.commons.serialize.SerializeReader; +import io.gitlab.jfronny.commons.serialize.Token; +import io.gitlab.jfronny.commons.serialize.xml.NativeXmlReader; + +import java.io.IOException; +import java.io.Reader; +import java.util.Objects; + +public class XmlReader extends SerializeReader { + private final NativeXmlReader reader; + + public XmlReader(NativeXmlReader reader) { + this.reader = Objects.requireNonNull(reader); + } + + public XmlReader(Reader source) { + this(new NativeXmlReader(source)); + } + + @Override + public XmlReader beginArray() throws IOException { + return null; + } + + @Override + public XmlReader endArray() throws IOException { + return null; + } + + @Override + public XmlReader beginObject() throws IOException { + return null; + } + + @Override + public XmlReader endObject() throws IOException { + return null; + } + + @Override + public boolean hasNext() throws IOException { + return false; + } + + @Override + public Token peek() throws IOException { + return null; + } + + @Override + public String nextName() throws IOException { + return ""; + } + + @Override + public String nextString() throws IOException { + return ""; + } + + @Override + public boolean nextBoolean() throws IOException { + return false; + } + + @Override + public void nextNull() throws IOException { + + } + + @Override + public Number nextNumber() throws IOException { + return null; + } + + @Override + public void skipValue() throws IOException { + + } + + @Override + public String getPath() { + return ""; + } + + @Override + public String getPreviousPath() { + return ""; + } + + @Override + public void close() throws Exception { + + } +} diff --git a/commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/wrapper/XmlWriter.java b/commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/wrapper/XmlWriter.java new file mode 100644 index 0000000..52f589e --- /dev/null +++ b/commons-serialize-xml/src/main/java/io/gitlab/jfronny/commons/serialize/xml/wrapper/XmlWriter.java @@ -0,0 +1,62 @@ +package io.gitlab.jfronny.commons.serialize.xml.wrapper; + +import io.gitlab.jfronny.commons.serialize.SerializeWriter; + +import java.io.IOException; +import java.io.Writer; + +public class XmlWriter extends SerializeWriter { + public XmlWriter(Writer target) { + throw new UnsupportedOperationException("Not yet implemented"); + } + + @Override + public XmlWriter beginArray() throws IOException { + throw new UnsupportedOperationException("Not yet implemented"); + } + + @Override + public XmlWriter endArray() throws IOException { + throw new UnsupportedOperationException("Not yet implemented"); + } + + @Override + public XmlWriter beginObject() throws IOException { + throw new UnsupportedOperationException("Not yet implemented"); + } + + @Override + public XmlWriter endObject() throws IOException { + throw new UnsupportedOperationException("Not yet implemented"); + } + + @Override + public XmlWriter comment(String comment) throws IOException { + throw new UnsupportedOperationException("Not yet implemented"); + } + + @Override + public XmlWriter name(String name) throws IOException { + throw new UnsupportedOperationException("Not yet implemented"); + } + + @Override + public XmlWriter value(String value) throws IOException { + throw new UnsupportedOperationException("Not yet implemented"); + } + + @Override + public XmlWriter literalValue(String value) throws IOException { + throw new UnsupportedOperationException("Not yet implemented"); + } + + @Override + public void flush() throws IOException { + throw new UnsupportedOperationException("Not yet implemented"); + } + + @Override + public void close() throws Exception { + throw new UnsupportedOperationException("Not yet implemented"); + } +} diff --git a/commons-serialize-xml/src/main/java/module-info.java b/commons-serialize-xml/src/main/java/module-info.java index a19d42d..16bb99b 100644 --- a/commons-serialize-xml/src/main/java/module-info.java +++ b/commons-serialize-xml/src/main/java/module-info.java @@ -3,4 +3,5 @@ module io.gitlab.jfronny.commons.serialize.xml { requires io.gitlab.jfronny.commons.serialize; requires static org.jetbrains.annotations; exports io.gitlab.jfronny.commons.serialize.xml; + exports io.gitlab.jfronny.commons.serialize.xml.wrapper; } \ No newline at end of file diff --git a/commons-serialize-xml/src/test/java/io/gitlab/jfronny/commons/serialize/xml/test/BaseXmlReaderTest.java b/commons-serialize-xml/src/test/java/io/gitlab/jfronny/commons/serialize/xml/test/BaseXmlReaderTest.java index 62f592b..64cfb48 100644 --- a/commons-serialize-xml/src/test/java/io/gitlab/jfronny/commons/serialize/xml/test/BaseXmlReaderTest.java +++ b/commons-serialize-xml/src/test/java/io/gitlab/jfronny/commons/serialize/xml/test/BaseXmlReaderTest.java @@ -16,8 +16,8 @@ package io.gitlab.jfronny.commons.serialize.xml.test; -import io.gitlab.jfronny.commons.serialize.xml.impl.BaseXmlReader; -import io.gitlab.jfronny.commons.serialize.xml.impl.XmlToken; +import io.gitlab.jfronny.commons.serialize.xml.NativeXmlReader; +import io.gitlab.jfronny.commons.serialize.xml.XmlToken; import org.junit.jupiter.api.Test; import java.io.IOException; @@ -25,7 +25,7 @@ import java.io.Reader; import java.io.StringReader; import static com.google.common.truth.Truth.assertThat; -import static io.gitlab.jfronny.commons.serialize.xml.impl.XmlToken.*; +import static io.gitlab.jfronny.commons.serialize.xml.XmlToken.*; import static org.junit.Assert.assertThrows; import static org.junit.Assert.fail; @@ -44,7 +44,7 @@ public final class BaseXmlReaderTest { + " \"c\"]]>\n" + ""; - BaseXmlReader reader = new BaseXmlReader(reader(json)).setLenient(true); + NativeXmlReader reader = new NativeXmlReader(reader(json)).setLenient(true); assertThat(reader.peek()).isEqualTo(BEGIN_TAG); assertThat(reader.beginTag()).isEqualTo("tag"); assertThat(reader.peek()).isEqualTo(TEXT); @@ -58,14 +58,14 @@ public final class BaseXmlReaderTest { @Test public void testSetLenientTrue() { - BaseXmlReader reader = new BaseXmlReader(reader("")); + NativeXmlReader reader = new NativeXmlReader(reader("")); reader.setLenient(true); assertThat(reader.isLenient()).isEqualTo(true); } @Test public void testSetLenientFalse() { - BaseXmlReader reader = new BaseXmlReader(reader("")); + NativeXmlReader reader = new NativeXmlReader(reader("")); reader.setLenient(false); assertThat(reader.isLenient()).isEqualTo(false); } @@ -73,7 +73,7 @@ public final class BaseXmlReaderTest { @Test public void testStrictModeFailsToParseUnescapedControlCharacter() throws IOException { String json = ""; - BaseXmlReader reader = new BaseXmlReader(reader(json)); + NativeXmlReader reader = new NativeXmlReader(reader(json)); reader.setLenient(false); assertThat(reader.beginTag()).isEqualTo("t"); @@ -84,7 +84,7 @@ public final class BaseXmlReaderTest { .startsWith("Control character in attribute value at line 1 column 7 (char '\\0') path t.a"); json = ""; - reader = new BaseXmlReader(reader(json)); + reader = new NativeXmlReader(reader(json)); reader.setLenient(false); assertThat(reader.beginTag()).isEqualTo("t"); @@ -100,7 +100,7 @@ public final class BaseXmlReaderTest { // JSON specification only forbids control characters U+0000 - U+001F, other control characters // should be allowed String json = "\"\u007F\u009F\""; - BaseXmlReader reader = new BaseXmlReader(reader(json)); + NativeXmlReader reader = new NativeXmlReader(reader(json)); reader.setLenient(false); assertThat(reader.nextText()).isEqualTo("\"\u007F\u009F\""); } @@ -108,13 +108,13 @@ public final class BaseXmlReaderTest { @Test public void testNonStrictModeParsesUnescapedControlCharacter() throws IOException { String json = "\"\t\""; - BaseXmlReader reader = new BaseXmlReader(reader(json)).setLenient(true); + NativeXmlReader reader = new NativeXmlReader(reader(json)).setLenient(true); assertThat(reader.nextText()).isEqualTo("\"\t\""); } @Test public void testReadArray() throws IOException { - BaseXmlReader reader = new BaseXmlReader(reader("")); + NativeXmlReader reader = new NativeXmlReader(reader("")); assertThat(reader.beginTag()).isEqualTo("array"); assertThat(reader.beginTag()).isEqualTo("item"); assertThat(reader.endTag()).isEqualTo("item"); @@ -126,7 +126,7 @@ public final class BaseXmlReaderTest { @Test public void testReadEmptyArray() throws IOException { - BaseXmlReader reader = new BaseXmlReader(reader("")); + NativeXmlReader reader = new NativeXmlReader(reader("")); assertThat(reader.hasNext()).isTrue(); reader.beginTag(); assertThat(reader.hasNext()).isFalse(); @@ -137,7 +137,7 @@ public final class BaseXmlReaderTest { @Test public void testReadEmptyArrayWithWhitespace() throws IOException { - BaseXmlReader reader = new BaseXmlReader(reader(" ")); + NativeXmlReader reader = new NativeXmlReader(reader(" ")); assertThat(reader.hasNext()).isTrue(); reader.beginTag(); assertThat(reader.hasNext()).isFalse(); @@ -148,7 +148,7 @@ public final class BaseXmlReaderTest { @Test public void testReadEmptyArrayWithComment() throws IOException { - BaseXmlReader reader = new BaseXmlReader(reader("")); + NativeXmlReader reader = new NativeXmlReader(reader("")); assertThat(reader.hasNext()).isTrue(); reader.beginTag(); assertThat(reader.hasNext()).isFalse(); @@ -159,7 +159,7 @@ public final class BaseXmlReaderTest { @Test public void testReadConciseEmptyArray() throws IOException { - BaseXmlReader reader = new BaseXmlReader(reader("")); + NativeXmlReader reader = new NativeXmlReader(reader("")); assertThat(reader.hasNext()).isTrue(); reader.beginTag(); assertThat(reader.hasNext()).isFalse();