From c9fab70cb75c31d6a4b97f5d18467f105e47cf05 Mon Sep 17 00:00:00 2001 From: Josiah Noel <32279667+SentryMan@users.noreply.github.com> Date: Wed, 28 May 2025 19:03:10 -0400 Subject: [PATCH 1/5] fix jackson NCDF error split jackson SPI impl into it's own module --- ebean-core-jackson-plugin/pom.xml | 235 ++++++++++++++++++ .../io/ebeaninternal/json/DJsonService.java | 99 +++----- .../io/ebeaninternal/json/EJsonReader.java | 21 +- .../io/ebeaninternal/json/EJsonWriter.java | 14 +- .../ebeaninternal/json/ModifyAwareFlag.java | 5 +- .../json/ModifyAwareIterator.java | 14 +- .../ebeaninternal/json/ModifyAwareList.java | 20 +- .../json/ModifyAwareListIterator.java | 8 +- .../io/ebeaninternal/json/ModifyAwareMap.java | 21 +- .../io/ebeaninternal/json/ModifyAwareSet.java | 22 +- .../src/main/java/module-info.java | 11 + .../io.ebean.service.BootstrapService | 1 + .../json/ModifyAwareMapTest.java | 0 ebean-core/pom.xml | 6 + ebean-core/src/main/java/module-info.java | 5 +- .../io.ebean.service.BootstrapService | 1 - pom.xml | 1 + 17 files changed, 344 insertions(+), 140 deletions(-) create mode 100644 ebean-core-jackson-plugin/pom.xml rename {ebean-core => ebean-core-jackson-plugin}/src/main/java/io/ebeaninternal/json/DJsonService.java (70%) rename {ebean-core => ebean-core-jackson-plugin}/src/main/java/io/ebeaninternal/json/EJsonReader.java (97%) rename {ebean-core => ebean-core-jackson-plugin}/src/main/java/io/ebeaninternal/json/EJsonWriter.java (97%) rename {ebean-core => ebean-core-jackson-plugin}/src/main/java/io/ebeaninternal/json/ModifyAwareFlag.java (99%) rename {ebean-core => ebean-core-jackson-plugin}/src/main/java/io/ebeaninternal/json/ModifyAwareIterator.java (82%) rename {ebean-core => ebean-core-jackson-plugin}/src/main/java/io/ebeaninternal/json/ModifyAwareList.java (93%) rename {ebean-core => ebean-core-jackson-plugin}/src/main/java/io/ebeaninternal/json/ModifyAwareListIterator.java (95%) rename {ebean-core => ebean-core-jackson-plugin}/src/main/java/io/ebeaninternal/json/ModifyAwareMap.java (88%) rename {ebean-core => ebean-core-jackson-plugin}/src/main/java/io/ebeaninternal/json/ModifyAwareSet.java (89%) create mode 100644 ebean-core-jackson-plugin/src/main/java/module-info.java create mode 100644 ebean-core-jackson-plugin/src/main/resources/META-INF/services/io.ebean.service.BootstrapService rename {ebean-core => ebean-core-jackson-plugin}/src/test/java/io/ebeaninternal/json/ModifyAwareMapTest.java (100%) diff --git a/ebean-core-jackson-plugin/pom.xml b/ebean-core-jackson-plugin/pom.xml new file mode 100644 index 0000000000..75f349773c --- /dev/null +++ b/ebean-core-jackson-plugin/pom.xml @@ -0,0 +1,235 @@ + + 4.0.0 + + io.ebean + ebean-parent + 16.0.0-RC3 + + ebean-core-jackson-plugin + + scm:git:git@github.com:ebean-orm/ebean.git + HEAD + + + + + io.ebean + ebean-api + 16.0.0-RC3 + + + + io.ebean + ebean-ddl-runner + ${ebean-ddl-runner.version} + + + + io.avaje + classpath-scanner + 7.1 + + + + io.ebean + ebean-migration-auto + ${ebean-migration-auto.version} + + + + io.ebean + ebean-core-type + 16.0.0-RC3 + + + + io.ebean + ebean-externalmapping-api + 14.0.0 + + + + org.antlr + antlr4-runtime + 4.13.1 + + + + + io.avaje + avaje-jsr305-x + 1.1 + provided + + + + + com.h2database + h2 + ${h2database.version} + provided + + + + + + jakarta.transaction + jakarta.transaction-api + 2.0.1 + provided + + + jakarta.enterprise + jakarta.enterprise.cdi-api + 4.0.1 + provided + + + + + + javax.validation + validation-api + 2.0.1.Final + true + + + jakarta.validation + jakarta.validation-api + 3.0.0 + true + + + + joda-time + joda-time + 2.11.1 + true + + + + + + + + + + + + com.fasterxml.jackson.core + jackson-core + ${jackson.version} + true + + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + true + + + + + org.postgresql + postgresql + 42.7.2 + true + + + + + io.ebean + ebean-platform-h2 + 16.0.0-RC3 + test + + + + io.ebean + ebean-platform-postgres + 16.0.0-RC3 + test + + + + io.ebean + ebean-platform-sqlserver + 16.0.0-RC3 + test + + + + io.ebean + ebean-datasource + ${ebean-datasource.version} + test + + + + + + + + + io.ebean + ebean-maven-plugin + ${ebean-maven-plugin.version} + + + test + process-test-classes + + debug=0 + + + testEnhance + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + -Dnet.bytebuddy.experimental=true + false + false + false + + **/Test*.java + **/*Test.java + **/*Tests.java + + + + + datasource.default + ${datasource.default} + + + + dbClockDelta + ${dbClockDelta} + + + + + + + + + + diff --git a/ebean-core/src/main/java/io/ebeaninternal/json/DJsonService.java b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/DJsonService.java similarity index 70% rename from ebean-core/src/main/java/io/ebeaninternal/json/DJsonService.java rename to ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/DJsonService.java index aa3443ced1..0a514a9fe3 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/json/DJsonService.java +++ b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/DJsonService.java @@ -1,10 +1,5 @@ package io.ebeaninternal.json; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonToken; -import io.ebean.service.SpiJsonService; - import java.io.IOException; import java.io.Reader; import java.io.Writer; @@ -14,79 +9,68 @@ import java.util.Map; import java.util.Set; -/** - * Utility that converts between JSON content and simple java Maps/Lists. - */ +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonToken; + +import io.ebean.service.SpiJsonService; + +/** Utility that converts between JSON content and simple java Maps/Lists. */ public final class DJsonService implements SpiJsonService { - /** - * Write the nested Map/List as json. - */ + /** Write the nested Map/List as json. */ @Override public String write(Object object) throws IOException { return EJsonWriter.write(object); } - /** - * Write the nested Map/List as json to the writer. - */ + /** Write the nested Map/List as json to the writer. */ @Override public void write(Object object, Writer writer) throws IOException { EJsonWriter.write(object, writer); } - /** - * Write the nested Map/List as json to the jsonGenerator. - */ + /** Write the nested Map/List as json to the jsonGenerator. */ @Override public void write(Object object, JsonGenerator jsonGenerator) throws IOException { EJsonWriter.write(object, jsonGenerator); } - /** - * Write the collection as json array to the jsonGenerator. - */ + /** Write the collection as json array to the jsonGenerator. */ @Override - public void writeCollection(Collection collection, JsonGenerator jsonGenerator) throws IOException { + public void writeCollection(Collection collection, JsonGenerator jsonGenerator) + throws IOException { EJsonWriter.writeCollection(collection, jsonGenerator); } /** - * Parse the json and return as a Map additionally specifying if the returned map should - * be modify aware meaning that it can detect when it has been modified. + * Parse the json and return as a Map additionally specifying if the returned map should be modify + * aware meaning that it can detect when it has been modified. */ @Override public Map parseObject(String json, boolean modifyAware) throws IOException { return EJsonReader.parseObject(json, modifyAware); } - /** - * Parse the json and return as a Map. - */ + /** Parse the json and return as a Map. */ @Override public Map parseObject(String json) throws IOException { return EJsonReader.parseObject(json); } - /** - * Parse the json and return as a Map taking a reader. - */ + /** Parse the json and return as a Map taking a reader. */ @Override public Map parseObject(Reader reader, boolean modifyAware) throws IOException { return EJsonReader.parseObject(reader, modifyAware); } - /** - * Parse the json and return as a Map taking a reader. - */ + /** Parse the json and return as a Map taking a reader. */ @Override public Map parseObject(Reader reader) throws IOException { return EJsonReader.parseObject(reader); } - /** - * Parse the json and return as a Map taking a JsonParser. - */ + /** Parse the json and return as a Map taking a JsonParser. */ @Override public Map parseObject(JsonParser parser) throws IOException { return EJsonReader.parseObject(parser); @@ -94,83 +78,64 @@ public Map parseObject(JsonParser parser) throws IOException { /** * Parse the json and return as a Map taking a JsonParser and a starting token. - *

- * Used when the first token is checked to see if the value is null prior to calling this. - *

+ * + *

Used when the first token is checked to see if the value is null prior to calling this. */ @Override public Map parseObject(JsonParser parser, JsonToken token) throws IOException { return EJsonReader.parseObject(parser, token); } - /** - * Parse the json and return as a modify aware List. - */ + /** Parse the json and return as a modify aware List. */ @Override public List parseList(String json, boolean modifyAware) throws IOException { return EJsonReader.parseList(json, modifyAware); } - /** - * Parse the json and return as a List. - */ + /** Parse the json and return as a List. */ @Override public List parseList(String json) throws IOException { return EJsonReader.parseList(json); } - /** - * Parse the json and return as a List taking a Reader. - */ + /** Parse the json and return as a List taking a Reader. */ @Override public List parseList(Reader reader) throws IOException { return EJsonReader.parseList(reader); } - /** - * Parse the json and return as a List taking a JsonParser. - */ + /** Parse the json and return as a List taking a JsonParser. */ @Override public List parseList(JsonParser parser) throws IOException { return EJsonReader.parseList(parser, false); } - /** - * Parse the json returning as a List taking into account the current token. - */ + /** Parse the json returning as a List taking into account the current token. */ @Override @SuppressWarnings("unchecked") public List parseList(JsonParser parser, JsonToken currentToken) throws IOException { return (List) EJsonReader.parse(parser, currentToken, false); } - /** - * Parse the json and return as a List or Map. - */ + /** Parse the json and return as a List or Map. */ @Override public Object parse(String json) throws IOException { return EJsonReader.parse(json); } - /** - * Parse the json and return as a List or Map. - */ + /** Parse the json and return as a List or Map. */ @Override public Object parse(Reader reader) throws IOException { return EJsonReader.parse(reader); } - /** - * Parse the json and return as a List or Map. - */ + /** Parse the json and return as a List or Map. */ @Override public Object parse(JsonParser parser) throws IOException { return EJsonReader.parse(parser); } - /** - * Parse the json returning a Set that might be modify aware. - */ + /** Parse the json returning a Set that might be modify aware. */ @Override public Set parseSet(String json, boolean modifyAware) throws IOException { List list = parseList(json, modifyAware); @@ -185,9 +150,7 @@ public Set parseSet(String json, boolean modifyAware) throws IOException } } - /** - * Parse the json returning as a Set taking into account the current token. - */ + /** Parse the json returning as a Set taking into account the current token. */ @Override public Set parseSet(JsonParser parser, JsonToken currentToken) throws IOException { return new LinkedHashSet<>(parseList(parser, currentToken)); diff --git a/ebean-core/src/main/java/io/ebeaninternal/json/EJsonReader.java b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/EJsonReader.java similarity index 97% rename from ebean-core/src/main/java/io/ebeaninternal/json/EJsonReader.java rename to ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/EJsonReader.java index 938f7f5a99..1f239140d1 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/json/EJsonReader.java +++ b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/EJsonReader.java @@ -1,10 +1,5 @@ package io.ebeaninternal.json; -import com.fasterxml.jackson.core.JsonFactory; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonToken; -import io.ebean.ModifyAwareType; - import java.io.IOException; import java.io.Reader; import java.io.StringReader; @@ -14,6 +9,12 @@ import java.util.Map; import java.util.NoSuchElementException; +import com.fasterxml.jackson.core.JsonFactory; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonToken; + +import io.ebean.ModifyAwareType; + final class EJsonReader { static final JsonFactory json = new JsonFactory(); @@ -117,7 +118,7 @@ static Object parse(JsonParser parser, JsonToken token, boolean modifyAware) thr EJsonReader(JsonParser parser, boolean modifyAware) { this.parser = parser; this.modifyAware = modifyAware; - this.modifyAwareOwner = (modifyAware) ? new ModifyAwareFlag() : null; + this.modifyAwareOwner = modifyAware ? new ModifyAwareFlag() : null; } private void startArray() { @@ -192,12 +193,9 @@ private Object parseJson(JsonToken token) throws IOException { return currentContext.getValue(); } - /** - * Process the JsonToken for objects and arrays. - */ + /** Process the JsonToken for objects and arrays. */ private void processJsonToken(JsonToken token) throws IOException { switch (token) { - case START_ARRAY: startArray(); break; @@ -273,7 +271,7 @@ private boolean isEmpty() { } } - private static abstract class Context { + private abstract static class Context { Context next; abstract void popContext(Context temp); @@ -364,5 +362,4 @@ void setKey(String key) { // not expected } } - } diff --git a/ebean-core/src/main/java/io/ebeaninternal/json/EJsonWriter.java b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/EJsonWriter.java similarity index 97% rename from ebean-core/src/main/java/io/ebeaninternal/json/EJsonWriter.java rename to ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/EJsonWriter.java index 2a05f306d8..e8518800ad 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/json/EJsonWriter.java +++ b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/EJsonWriter.java @@ -1,8 +1,5 @@ package io.ebeaninternal.json; -import com.fasterxml.jackson.core.JsonFactory; -import com.fasterxml.jackson.core.JsonGenerator; - import java.io.IOException; import java.io.StringWriter; import java.io.Writer; @@ -14,11 +11,12 @@ import java.util.Map.Entry; import java.util.Set; +import com.fasterxml.jackson.core.JsonFactory; +import com.fasterxml.jackson.core.JsonGenerator; + final class EJsonWriter { - /** - * Base jsonFactory implementation used when it is not passed in. - */ + /** Base jsonFactory implementation used when it is not passed in. */ static final JsonFactory jsonFactory = new JsonFactory(); static String write(Object object) throws IOException { @@ -38,7 +36,8 @@ static void write(Object object, JsonGenerator jsonGenerator) { new EJsonWriter(jsonGenerator).writeJson(object); } - static void writeCollection(Collection collection, JsonGenerator jsonGenerator) throws IOException { + static void writeCollection(Collection collection, JsonGenerator jsonGenerator) + throws IOException { new EJsonWriter(jsonGenerator).writeCollection(null, collection); } @@ -210,5 +209,4 @@ private void writeMap(String name, Map map) throws IOException { } jsonGenerator.writeEndObject(); } - } diff --git a/ebean-core/src/main/java/io/ebeaninternal/json/ModifyAwareFlag.java b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareFlag.java similarity index 99% rename from ebean-core/src/main/java/io/ebeaninternal/json/ModifyAwareFlag.java rename to ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareFlag.java index 08cdb273eb..ea32fe5890 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/json/ModifyAwareFlag.java +++ b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareFlag.java @@ -1,9 +1,9 @@ package io.ebeaninternal.json; -import io.ebean.ModifyAwareType; - import java.io.Serializable; +import io.ebean.ModifyAwareType; + /** * Detects when content has been modified and as such needs to be persisted (included in an update). */ @@ -22,5 +22,4 @@ public boolean isMarkedDirty() { public void setMarkedDirty(boolean markedDirty) { this.markedDirty = markedDirty; } - } diff --git a/ebean-core/src/main/java/io/ebeaninternal/json/ModifyAwareIterator.java b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareIterator.java similarity index 82% rename from ebean-core/src/main/java/io/ebeaninternal/json/ModifyAwareIterator.java rename to ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareIterator.java index fb57f34474..749e922716 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/json/ModifyAwareIterator.java +++ b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareIterator.java @@ -1,12 +1,10 @@ package io.ebeaninternal.json; -import io.ebean.ModifyAwareType; - import java.util.Iterator; -/** - * Wraps an iterator for the purposes of detecting modifications. - */ +import io.ebean.ModifyAwareType; + +/** Wraps an iterator for the purposes of detecting modifications. */ public final class ModifyAwareIterator implements Iterator { private final ModifyAwareType owner; @@ -14,9 +12,8 @@ public final class ModifyAwareIterator implements Iterator { /** * Create with an Owner and the underlying Iterator this wraps. - *

- * The owner is notified of the removals. - *

+ * + *

The owner is notified of the removals. */ public ModifyAwareIterator(ModifyAwareType owner, Iterator it) { this.owner = owner; @@ -38,5 +35,4 @@ public void remove() { owner.setMarkedDirty(true); it.remove(); } - } diff --git a/ebean-core/src/main/java/io/ebeaninternal/json/ModifyAwareList.java b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareList.java similarity index 93% rename from ebean-core/src/main/java/io/ebeaninternal/json/ModifyAwareList.java rename to ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareList.java index 0977042022..ee00c53e14 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/json/ModifyAwareList.java +++ b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareList.java @@ -1,13 +1,17 @@ package io.ebeaninternal.json; -import io.ebean.ModifyAwareType; - import java.io.Serializable; -import java.util.*; +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.ListIterator; +import java.util.Objects; + +import io.ebean.ModifyAwareType; -/** - * Modify aware wrapper of a list. - */ +/** Modify aware wrapper of a list. */ public final class ModifyAwareList implements List, ModifyAwareType, Serializable { private static final long serialVersionUID = 1; @@ -192,9 +196,7 @@ public List subList(int fromIndex, int toIndex) { return new ModifyAwareList<>(owner, list.subList(fromIndex, toIndex)); } - /** - * Create an return a modify aware Set. - */ + /** Create an return a modify aware Set. */ public ModifyAwareSet asSet() { return new ModifyAwareSet<>(owner, new LinkedHashSet<>(list)); } diff --git a/ebean-core/src/main/java/io/ebeaninternal/json/ModifyAwareListIterator.java b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareListIterator.java similarity index 95% rename from ebean-core/src/main/java/io/ebeaninternal/json/ModifyAwareListIterator.java rename to ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareListIterator.java index 974e887007..1e3ca9966b 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/json/ModifyAwareListIterator.java +++ b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareListIterator.java @@ -1,12 +1,10 @@ package io.ebeaninternal.json; -import io.ebean.ModifyAwareType; - import java.util.ListIterator; -/** - * Modify aware wrapper of a ListIterator. - */ +import io.ebean.ModifyAwareType; + +/** Modify aware wrapper of a ListIterator. */ public final class ModifyAwareListIterator implements ListIterator { final ModifyAwareType owner; diff --git a/ebean-core/src/main/java/io/ebeaninternal/json/ModifyAwareMap.java b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareMap.java similarity index 88% rename from ebean-core/src/main/java/io/ebeaninternal/json/ModifyAwareMap.java rename to ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareMap.java index 3f96979050..ce1c7b5179 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/json/ModifyAwareMap.java +++ b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareMap.java @@ -1,13 +1,16 @@ package io.ebeaninternal.json; -import io.ebean.ModifyAwareType; - import java.io.Serializable; -import java.util.*; +import java.util.Collection; +import java.util.Collections; +import java.util.LinkedHashSet; +import java.util.Map; +import java.util.Objects; +import java.util.Set; + +import io.ebean.ModifyAwareType; -/** - * Map that is wraps an underlying map for the purpose of detecting changes. - */ +/** Map that is wraps an underlying map for the purpose of detecting changes. */ public final class ModifyAwareMap implements Map, ModifyAwareType, Serializable { private static final long serialVersionUID = 1; @@ -34,11 +37,11 @@ public String toString() { public boolean equals(Object o) { if (this == o) return true; if (o instanceof ModifyAwareMap) { - ModifyAwareMap that = (ModifyAwareMap) o; + ModifyAwareMap that = (ModifyAwareMap) o; return Objects.equals(map, that.map); } if (!(o instanceof Map)) return false; - Map that = (Map) o; + Map that = (Map) o; return Objects.equals(map, that); } @@ -112,7 +115,6 @@ public void putAll(Map m) { map.putAll(m); } - @Override public void clear() { if (!map.isEmpty()) { @@ -135,5 +137,4 @@ public Collection values() { public Set> entrySet() { return new ModifyAwareSet<>(this, map.entrySet()); } - } diff --git a/ebean-core/src/main/java/io/ebeaninternal/json/ModifyAwareSet.java b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareSet.java similarity index 89% rename from ebean-core/src/main/java/io/ebeaninternal/json/ModifyAwareSet.java rename to ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareSet.java index 11d9fc5d8e..4fc5749a98 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/json/ModifyAwareSet.java +++ b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareSet.java @@ -1,13 +1,15 @@ package io.ebeaninternal.json; -import io.ebean.ModifyAwareType; - import java.io.Serializable; -import java.util.*; +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.Objects; +import java.util.Set; + +import io.ebean.ModifyAwareType; -/** - * Wraps a Set for the purposes of detecting modifications. - */ +/** Wraps a Set for the purposes of detecting modifications. */ public final class ModifyAwareSet implements Set, ModifyAwareType, Serializable { private static final long serialVersionUID = 1; @@ -15,16 +17,12 @@ public final class ModifyAwareSet implements Set, ModifyAwareType, Seriali private final ModifyAwareType owner; private final Set set; - /** - * Create as top level with it's own ModifyAwareOwner instance wrapping the given Set. - */ + /** Create as top level with it's own ModifyAwareOwner instance wrapping the given Set. */ public ModifyAwareSet(Set underlying) { this(new ModifyAwareFlag(), underlying); } - /** - * Create with an Owner that is notified of modifications. - */ + /** Create with an Owner that is notified of modifications. */ public ModifyAwareSet(ModifyAwareType owner, Set underlying) { this.owner = owner; this.set = underlying; diff --git a/ebean-core-jackson-plugin/src/main/java/module-info.java b/ebean-core-jackson-plugin/src/main/java/module-info.java new file mode 100644 index 0000000000..e91296157f --- /dev/null +++ b/ebean-core-jackson-plugin/src/main/java/module-info.java @@ -0,0 +1,11 @@ +module io.ebean.core.internal.jackson { + +requires io.ebean.api; + + requires transitive com.fasterxml.jackson.databind; + exports io.ebeaninternal.json to io.ebean.test,io.ebean.core; + + provides io.ebean.service.BootstrapService with + io.ebeaninternal.json.DJsonService; + +} diff --git a/ebean-core-jackson-plugin/src/main/resources/META-INF/services/io.ebean.service.BootstrapService b/ebean-core-jackson-plugin/src/main/resources/META-INF/services/io.ebean.service.BootstrapService new file mode 100644 index 0000000000..c9a07a220f --- /dev/null +++ b/ebean-core-jackson-plugin/src/main/resources/META-INF/services/io.ebean.service.BootstrapService @@ -0,0 +1 @@ +io.ebeaninternal.json.DJsonService \ No newline at end of file diff --git a/ebean-core/src/test/java/io/ebeaninternal/json/ModifyAwareMapTest.java b/ebean-core-jackson-plugin/src/test/java/io/ebeaninternal/json/ModifyAwareMapTest.java similarity index 100% rename from ebean-core/src/test/java/io/ebeaninternal/json/ModifyAwareMapTest.java rename to ebean-core-jackson-plugin/src/test/java/io/ebeaninternal/json/ModifyAwareMapTest.java diff --git a/ebean-core/pom.xml b/ebean-core/pom.xml index 01a7ab26d0..654cf8f95e 100644 --- a/ebean-core/pom.xml +++ b/ebean-core/pom.xml @@ -25,6 +25,12 @@ 16.0.0-RC3 + + io.ebean + ebean-core-jackson-plugin + 16.0.0-RC3 + + io.ebean ebean-ddl-runner diff --git a/ebean-core/src/main/java/module-info.java b/ebean-core/src/main/java/module-info.java index 06977eec02..f09028a4dd 100644 --- a/ebean-core/src/main/java/module-info.java +++ b/ebean-core/src/main/java/module-info.java @@ -31,6 +31,7 @@ requires io.ebean.types; requires static io.avaje.jsr305x; + requires static io.ebean.core.internal.jackson; requires static com.fasterxml.jackson.annotation; requires static com.fasterxml.jackson.core; requires static com.fasterxml.jackson.databind; @@ -49,7 +50,6 @@ exports io.ebeaninternal.api to io.ebean.ddl.generator, io.ebean.querybean, io.ebean.autotune, io.ebean.postgis, io.ebean.test, io.ebean.elastic, io.ebean.spring.txn, io.ebean.postgis.types; exports io.ebeaninternal.api.json to io.ebean.test; - exports io.ebeaninternal.json to io.ebean.test; exports io.ebeaninternal.server.autotune to io.ebean.autotune; exports io.ebeaninternal.server.core to io.ebean.test, io.ebean.elastic; exports io.ebeaninternal.server.core.bootup to io.ebean.test; @@ -78,7 +78,6 @@ io.ebeaninternal.server.query.DFetchGroupService, io.ebeaninternal.server.profile.DProfileLocationFactory, io.ebeaninternal.server.rawsql.DRawSqlService, - io.ebeaninternal.server.profile.DMetricFactory, - io.ebeaninternal.json.DJsonService; + io.ebeaninternal.server.profile.DMetricFactory; } diff --git a/ebean-core/src/main/resources/META-INF/services/io.ebean.service.BootstrapService b/ebean-core/src/main/resources/META-INF/services/io.ebean.service.BootstrapService index 6382832f83..5a674c9122 100644 --- a/ebean-core/src/main/resources/META-INF/services/io.ebean.service.BootstrapService +++ b/ebean-core/src/main/resources/META-INF/services/io.ebean.service.BootstrapService @@ -3,4 +3,3 @@ io.ebeaninternal.server.rawsql.DRawSqlService io.ebeaninternal.server.query.DFetchGroupService io.ebeaninternal.server.profile.DProfileLocationFactory io.ebeaninternal.server.profile.DMetricFactory -io.ebeaninternal.json.DJsonService diff --git a/pom.xml b/pom.xml index 09ec67c930..679252d59a 100644 --- a/pom.xml +++ b/pom.xml @@ -97,6 +97,7 @@ ebean-jackson-mapper ebean-spring-txn kotlin-querybean-generator + ebean-core-jackson-plugin From 7f55d40eac97bda9715332ef2de4ffacd7928db2 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Fri, 11 Jul 2025 20:31:24 +1200 Subject: [PATCH 2/5] Restore format --- .../io/ebeaninternal/json/DJsonService.java | 93 +++++++++++++------ 1 file changed, 63 insertions(+), 30 deletions(-) diff --git a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/DJsonService.java b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/DJsonService.java index 0a514a9fe3..d1532c57a7 100644 --- a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/DJsonService.java +++ b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/DJsonService.java @@ -1,45 +1,50 @@ package io.ebeaninternal.json; -import java.io.IOException; -import java.io.Reader; -import java.io.Writer; -import java.util.Collection; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; - import io.ebean.service.SpiJsonService; -/** Utility that converts between JSON content and simple java Maps/Lists. */ +import java.io.IOException; +import java.io.Reader; +import java.io.Writer; +import java.util.*; + +/** + * Utility that converts between JSON content and simple java Maps/Lists. + */ public final class DJsonService implements SpiJsonService { - /** Write the nested Map/List as json. */ + /** + * Write the nested Map/List as json. + */ @Override public String write(Object object) throws IOException { return EJsonWriter.write(object); } - /** Write the nested Map/List as json to the writer. */ + /** + * Write the nested Map/List as json to the writer. + */ @Override public void write(Object object, Writer writer) throws IOException { EJsonWriter.write(object, writer); } - /** Write the nested Map/List as json to the jsonGenerator. */ + /** + * Write the nested Map/List as json to the jsonGenerator. + */ @Override public void write(Object object, JsonGenerator jsonGenerator) throws IOException { EJsonWriter.write(object, jsonGenerator); } - /** Write the collection as json array to the jsonGenerator. */ + /** + * Write the collection as json array to the jsonGenerator. + */ @Override public void writeCollection(Collection collection, JsonGenerator jsonGenerator) - throws IOException { + throws IOException { EJsonWriter.writeCollection(collection, jsonGenerator); } @@ -52,25 +57,33 @@ public Map parseObject(String json, boolean modifyAware) throws return EJsonReader.parseObject(json, modifyAware); } - /** Parse the json and return as a Map. */ + /** + * Parse the json and return as a Map. + */ @Override public Map parseObject(String json) throws IOException { return EJsonReader.parseObject(json); } - /** Parse the json and return as a Map taking a reader. */ + /** + * Parse the json and return as a Map taking a reader. + */ @Override public Map parseObject(Reader reader, boolean modifyAware) throws IOException { return EJsonReader.parseObject(reader, modifyAware); } - /** Parse the json and return as a Map taking a reader. */ + /** + * Parse the json and return as a Map taking a reader. + */ @Override public Map parseObject(Reader reader) throws IOException { return EJsonReader.parseObject(reader); } - /** Parse the json and return as a Map taking a JsonParser. */ + /** + * Parse the json and return as a Map taking a JsonParser. + */ @Override public Map parseObject(JsonParser parser) throws IOException { return EJsonReader.parseObject(parser); @@ -86,56 +99,74 @@ public Map parseObject(JsonParser parser, JsonToken token) throw return EJsonReader.parseObject(parser, token); } - /** Parse the json and return as a modify aware List. */ + /** + * Parse the json and return as a modify aware List. + */ @Override public List parseList(String json, boolean modifyAware) throws IOException { return EJsonReader.parseList(json, modifyAware); } - /** Parse the json and return as a List. */ + /** + * Parse the json and return as a List. + */ @Override public List parseList(String json) throws IOException { return EJsonReader.parseList(json); } - /** Parse the json and return as a List taking a Reader. */ + /** + * Parse the json and return as a List taking a Reader. + */ @Override public List parseList(Reader reader) throws IOException { return EJsonReader.parseList(reader); } - /** Parse the json and return as a List taking a JsonParser. */ + /** + * Parse the json and return as a List taking a JsonParser. + */ @Override public List parseList(JsonParser parser) throws IOException { return EJsonReader.parseList(parser, false); } - /** Parse the json returning as a List taking into account the current token. */ + /** + * Parse the json returning as a List taking into account the current token. + */ @Override @SuppressWarnings("unchecked") public List parseList(JsonParser parser, JsonToken currentToken) throws IOException { return (List) EJsonReader.parse(parser, currentToken, false); } - /** Parse the json and return as a List or Map. */ + /** + * Parse the json and return as a List or Map. + */ @Override public Object parse(String json) throws IOException { return EJsonReader.parse(json); } - /** Parse the json and return as a List or Map. */ + /** + * Parse the json and return as a List or Map. + */ @Override public Object parse(Reader reader) throws IOException { return EJsonReader.parse(reader); } - /** Parse the json and return as a List or Map. */ + /** + * Parse the json and return as a List or Map. + */ @Override public Object parse(JsonParser parser) throws IOException { return EJsonReader.parse(parser); } - /** Parse the json returning a Set that might be modify aware. */ + /** + * Parse the json returning a Set that might be modify aware. + */ @Override public Set parseSet(String json, boolean modifyAware) throws IOException { List list = parseList(json, modifyAware); @@ -150,7 +181,9 @@ public Set parseSet(String json, boolean modifyAware) throws IOException } } - /** Parse the json returning as a Set taking into account the current token. */ + /** + * Parse the json returning as a Set taking into account the current token. + */ @Override public Set parseSet(JsonParser parser, JsonToken currentToken) throws IOException { return new LinkedHashSet<>(parseList(parser, currentToken)); From 314d437fd67c511676639391e1b8b0d1d6f22f52 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Fri, 11 Jul 2025 20:35:06 +1200 Subject: [PATCH 3/5] Restore format --- .../io/ebeaninternal/json/DJsonService.java | 3 +- .../io/ebeaninternal/json/EJsonReader.java | 61 ++++++++----------- .../io/ebeaninternal/json/EJsonWriter.java | 24 ++++---- .../ebeaninternal/json/ModifyAwareFlag.java | 4 +- .../json/ModifyAwareIterator.java | 8 ++- .../ebeaninternal/json/ModifyAwareList.java | 20 +++--- .../json/ModifyAwareListIterator.java | 8 ++- .../io/ebeaninternal/json/ModifyAwareMap.java | 15 ++--- .../io/ebeaninternal/json/ModifyAwareSet.java | 22 ++++--- 9 files changed, 78 insertions(+), 87 deletions(-) diff --git a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/DJsonService.java b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/DJsonService.java index d1532c57a7..f286bae4df 100644 --- a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/DJsonService.java +++ b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/DJsonService.java @@ -43,8 +43,7 @@ public void write(Object object, JsonGenerator jsonGenerator) throws IOException * Write the collection as json array to the jsonGenerator. */ @Override - public void writeCollection(Collection collection, JsonGenerator jsonGenerator) - throws IOException { + public void writeCollection(Collection collection, JsonGenerator jsonGenerator) throws IOException { EJsonWriter.writeCollection(collection, jsonGenerator); } diff --git a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/EJsonReader.java b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/EJsonReader.java index 1f239140d1..7c808979f9 100644 --- a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/EJsonReader.java +++ b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/EJsonReader.java @@ -1,23 +1,30 @@ package io.ebeaninternal.json; -import java.io.IOException; -import java.io.Reader; -import java.io.StringReader; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.NoSuchElementException; - import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; - import io.ebean.ModifyAwareType; +import java.io.IOException; +import java.io.Reader; +import java.io.StringReader; +import java.util.*; + final class EJsonReader { static final JsonFactory json = new JsonFactory(); + private final JsonParser parser; + private final boolean modifyAware; + private final ModifyAwareFlag modifyAwareOwner; + private int depth; + private Stack stack; + private Context currentContext; + + EJsonReader(JsonParser parser, boolean modifyAware) { + this.parser = parser; + this.modifyAware = modifyAware; + this.modifyAwareOwner = modifyAware ? new ModifyAwareFlag() : null; + } @SuppressWarnings("unchecked") static Map parseObject(String json, boolean modifyAware) throws IOException { @@ -103,24 +110,6 @@ static Object parse(JsonParser parser, JsonToken token, boolean modifyAware) thr return new EJsonReader(parser, modifyAware).parseJson(token); } - private final JsonParser parser; - - private final boolean modifyAware; - - private final ModifyAwareFlag modifyAwareOwner; - - private int depth; - - private Stack stack; - - private Context currentContext; - - EJsonReader(JsonParser parser, boolean modifyAware) { - this.parser = parser; - this.modifyAware = modifyAware; - this.modifyAwareOwner = modifyAware ? new ModifyAwareFlag() : null; - } - private void startArray() { depth++; stack.push(currentContext); @@ -193,7 +182,9 @@ private Object parseJson(JsonToken token) throws IOException { return currentContext.getValue(); } - /** Process the JsonToken for objects and arrays. */ + /** + * Process the JsonToken for objects and arrays. + */ private void processJsonToken(JsonToken token) throws IOException { switch (token) { case START_ARRAY: @@ -278,10 +269,10 @@ private abstract static class Context { abstract Object getValue(); - abstract void setKey(String key); - abstract void setValue(Object value); + abstract void setKey(String key); + abstract void setValueNull(); } @@ -310,13 +301,13 @@ Object getValue() { } @Override - void setKey(String key) { - this.key = key; + void setValue(Object value) { + map.put(key, value); } @Override - void setValue(Object value) { - map.put(key, value); + void setKey(String key) { + this.key = key; } @Override diff --git a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/EJsonWriter.java b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/EJsonWriter.java index e8518800ad..ff73de8f99 100644 --- a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/EJsonWriter.java +++ b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/EJsonWriter.java @@ -1,5 +1,8 @@ package io.ebeaninternal.json; +import com.fasterxml.jackson.core.JsonFactory; +import com.fasterxml.jackson.core.JsonGenerator; + import java.io.IOException; import java.io.StringWriter; import java.io.Writer; @@ -11,13 +14,17 @@ import java.util.Map.Entry; import java.util.Set; -import com.fasterxml.jackson.core.JsonFactory; -import com.fasterxml.jackson.core.JsonGenerator; - final class EJsonWriter { - /** Base jsonFactory implementation used when it is not passed in. */ + /** + * Base jsonFactory implementation used when it is not passed in. + */ static final JsonFactory jsonFactory = new JsonFactory(); + private final JsonGenerator jsonGenerator; + + private EJsonWriter(JsonGenerator jsonGenerator) { + this.jsonGenerator = jsonGenerator; + } static String write(Object object) throws IOException { StringWriter writer = new StringWriter(200); @@ -36,17 +43,10 @@ static void write(Object object, JsonGenerator jsonGenerator) { new EJsonWriter(jsonGenerator).writeJson(object); } - static void writeCollection(Collection collection, JsonGenerator jsonGenerator) - throws IOException { + static void writeCollection(Collection collection, JsonGenerator jsonGenerator) throws IOException { new EJsonWriter(jsonGenerator).writeCollection(null, collection); } - private final JsonGenerator jsonGenerator; - - private EJsonWriter(JsonGenerator jsonGenerator) { - this.jsonGenerator = jsonGenerator; - } - private void writeJson(Object object) { writeJson(null, object); } diff --git a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareFlag.java b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareFlag.java index ea32fe5890..f744470930 100644 --- a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareFlag.java +++ b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareFlag.java @@ -1,9 +1,9 @@ package io.ebeaninternal.json; -import java.io.Serializable; - import io.ebean.ModifyAwareType; +import java.io.Serializable; + /** * Detects when content has been modified and as such needs to be persisted (included in an update). */ diff --git a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareIterator.java b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareIterator.java index 749e922716..25dfb1860a 100644 --- a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareIterator.java +++ b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareIterator.java @@ -1,10 +1,12 @@ package io.ebeaninternal.json; -import java.util.Iterator; - import io.ebean.ModifyAwareType; -/** Wraps an iterator for the purposes of detecting modifications. */ +import java.util.Iterator; + +/** + * Wraps an iterator for the purposes of detecting modifications. + */ public final class ModifyAwareIterator implements Iterator { private final ModifyAwareType owner; diff --git a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareList.java b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareList.java index ee00c53e14..0977042022 100644 --- a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareList.java +++ b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareList.java @@ -1,17 +1,13 @@ package io.ebeaninternal.json; -import java.io.Serializable; -import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.ListIterator; -import java.util.Objects; - import io.ebean.ModifyAwareType; -/** Modify aware wrapper of a list. */ +import java.io.Serializable; +import java.util.*; + +/** + * Modify aware wrapper of a list. + */ public final class ModifyAwareList implements List, ModifyAwareType, Serializable { private static final long serialVersionUID = 1; @@ -196,7 +192,9 @@ public List subList(int fromIndex, int toIndex) { return new ModifyAwareList<>(owner, list.subList(fromIndex, toIndex)); } - /** Create an return a modify aware Set. */ + /** + * Create an return a modify aware Set. + */ public ModifyAwareSet asSet() { return new ModifyAwareSet<>(owner, new LinkedHashSet<>(list)); } diff --git a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareListIterator.java b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareListIterator.java index 1e3ca9966b..974e887007 100644 --- a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareListIterator.java +++ b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareListIterator.java @@ -1,10 +1,12 @@ package io.ebeaninternal.json; -import java.util.ListIterator; - import io.ebean.ModifyAwareType; -/** Modify aware wrapper of a ListIterator. */ +import java.util.ListIterator; + +/** + * Modify aware wrapper of a ListIterator. + */ public final class ModifyAwareListIterator implements ListIterator { final ModifyAwareType owner; diff --git a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareMap.java b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareMap.java index ce1c7b5179..8a81df295b 100644 --- a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareMap.java +++ b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareMap.java @@ -1,16 +1,13 @@ package io.ebeaninternal.json; -import java.io.Serializable; -import java.util.Collection; -import java.util.Collections; -import java.util.LinkedHashSet; -import java.util.Map; -import java.util.Objects; -import java.util.Set; - import io.ebean.ModifyAwareType; -/** Map that is wraps an underlying map for the purpose of detecting changes. */ +import java.io.Serializable; +import java.util.*; + +/** + * Map that is wraps an underlying map for the purpose of detecting changes. + */ public final class ModifyAwareMap implements Map, ModifyAwareType, Serializable { private static final long serialVersionUID = 1; diff --git a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareSet.java b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareSet.java index 4fc5749a98..11d9fc5d8e 100644 --- a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareSet.java +++ b/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareSet.java @@ -1,15 +1,13 @@ package io.ebeaninternal.json; -import java.io.Serializable; -import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; -import java.util.Objects; -import java.util.Set; - import io.ebean.ModifyAwareType; -/** Wraps a Set for the purposes of detecting modifications. */ +import java.io.Serializable; +import java.util.*; + +/** + * Wraps a Set for the purposes of detecting modifications. + */ public final class ModifyAwareSet implements Set, ModifyAwareType, Serializable { private static final long serialVersionUID = 1; @@ -17,12 +15,16 @@ public final class ModifyAwareSet implements Set, ModifyAwareType, Seriali private final ModifyAwareType owner; private final Set set; - /** Create as top level with it's own ModifyAwareOwner instance wrapping the given Set. */ + /** + * Create as top level with it's own ModifyAwareOwner instance wrapping the given Set. + */ public ModifyAwareSet(Set underlying) { this(new ModifyAwareFlag(), underlying); } - /** Create with an Owner that is notified of modifications. */ + /** + * Create with an Owner that is notified of modifications. + */ public ModifyAwareSet(ModifyAwareType owner, Set underlying) { this.owner = owner; this.set = underlying; From a04b889155cf20f93184ebb7af156c85bb9b3bef Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Fri, 11 Jul 2025 20:43:26 +1200 Subject: [PATCH 4/5] Trim up dependencies --- ebean-core-jackson-plugin/pom.xml | 204 ------------------ .../src/main/java/module-info.java | 6 +- 2 files changed, 2 insertions(+), 208 deletions(-) diff --git a/ebean-core-jackson-plugin/pom.xml b/ebean-core-jackson-plugin/pom.xml index 75f349773c..9b01f6eddb 100644 --- a/ebean-core-jackson-plugin/pom.xml +++ b/ebean-core-jackson-plugin/pom.xml @@ -18,113 +18,6 @@ 16.0.0-RC3 - - io.ebean - ebean-ddl-runner - ${ebean-ddl-runner.version} - - - - io.avaje - classpath-scanner - 7.1 - - - - io.ebean - ebean-migration-auto - ${ebean-migration-auto.version} - - - - io.ebean - ebean-core-type - 16.0.0-RC3 - - - - io.ebean - ebean-externalmapping-api - 14.0.0 - - - - org.antlr - antlr4-runtime - 4.13.1 - - - - - io.avaje - avaje-jsr305-x - 1.1 - provided - - - - - com.h2database - h2 - ${h2database.version} - provided - - - - - - jakarta.transaction - jakarta.transaction-api - 2.0.1 - provided - - - jakarta.enterprise - jakarta.enterprise.cdi-api - 4.0.1 - provided - - - - - - javax.validation - validation-api - 2.0.1.Final - true - - - jakarta.validation - jakarta.validation-api - 3.0.0 - true - - - - joda-time - joda-time - 2.11.1 - true - - - - - - - - - com.fasterxml.jackson.core @@ -133,103 +26,6 @@ true - - com.fasterxml.jackson.core - jackson-databind - ${jackson.version} - true - - - - - org.postgresql - postgresql - 42.7.2 - true - - - - - io.ebean - ebean-platform-h2 - 16.0.0-RC3 - test - - - - io.ebean - ebean-platform-postgres - 16.0.0-RC3 - test - - - - io.ebean - ebean-platform-sqlserver - 16.0.0-RC3 - test - - - - io.ebean - ebean-datasource - ${ebean-datasource.version} - test - - - - - - - io.ebean - ebean-maven-plugin - ${ebean-maven-plugin.version} - - - test - process-test-classes - - debug=0 - - - testEnhance - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - - -Dnet.bytebuddy.experimental=true - false - false - false - - **/Test*.java - **/*Test.java - **/*Tests.java - - - - - datasource.default - ${datasource.default} - - - - dbClockDelta - ${dbClockDelta} - - - - - - - - - diff --git a/ebean-core-jackson-plugin/src/main/java/module-info.java b/ebean-core-jackson-plugin/src/main/java/module-info.java index e91296157f..a71965d282 100644 --- a/ebean-core-jackson-plugin/src/main/java/module-info.java +++ b/ebean-core-jackson-plugin/src/main/java/module-info.java @@ -2,10 +2,8 @@ requires io.ebean.api; - requires transitive com.fasterxml.jackson.databind; + requires transitive com.fasterxml.jackson.core; exports io.ebeaninternal.json to io.ebean.test,io.ebean.core; - provides io.ebean.service.BootstrapService with - io.ebeaninternal.json.DJsonService; - + provides io.ebean.service.BootstrapService with io.ebeaninternal.json.DJsonService; } From 55c8f24ff70b1cd42aa1d807e2b27812bd131ad0 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Fri, 11 Jul 2025 20:50:21 +1200 Subject: [PATCH 5/5] Rename module to ebean-core-json --- {ebean-core-jackson-plugin => ebean-core-json}/pom.xml | 2 +- .../src/main/java/io/ebeaninternal/json/DJsonService.java | 0 .../src/main/java/io/ebeaninternal/json/EJsonReader.java | 0 .../src/main/java/io/ebeaninternal/json/EJsonWriter.java | 0 .../main/java/io/ebeaninternal/json/ModifyAwareFlag.java | 0 .../java/io/ebeaninternal/json/ModifyAwareIterator.java | 0 .../main/java/io/ebeaninternal/json/ModifyAwareList.java | 0 .../java/io/ebeaninternal/json/ModifyAwareListIterator.java | 0 .../src/main/java/io/ebeaninternal/json/ModifyAwareMap.java | 0 .../src/main/java/io/ebeaninternal/json/ModifyAwareSet.java | 0 .../src/main/java/module-info.java | 6 +++--- .../META-INF/services/io.ebean.service.BootstrapService | 0 .../test/java/io/ebeaninternal/json/ModifyAwareMapTest.java | 0 ebean-core/pom.xml | 2 +- ebean-core/src/main/java/module-info.java | 2 +- pom.xml | 2 +- 16 files changed, 7 insertions(+), 7 deletions(-) rename {ebean-core-jackson-plugin => ebean-core-json}/pom.xml (94%) rename {ebean-core-jackson-plugin => ebean-core-json}/src/main/java/io/ebeaninternal/json/DJsonService.java (100%) rename {ebean-core-jackson-plugin => ebean-core-json}/src/main/java/io/ebeaninternal/json/EJsonReader.java (100%) rename {ebean-core-jackson-plugin => ebean-core-json}/src/main/java/io/ebeaninternal/json/EJsonWriter.java (100%) rename {ebean-core-jackson-plugin => ebean-core-json}/src/main/java/io/ebeaninternal/json/ModifyAwareFlag.java (100%) rename {ebean-core-jackson-plugin => ebean-core-json}/src/main/java/io/ebeaninternal/json/ModifyAwareIterator.java (100%) rename {ebean-core-jackson-plugin => ebean-core-json}/src/main/java/io/ebeaninternal/json/ModifyAwareList.java (100%) rename {ebean-core-jackson-plugin => ebean-core-json}/src/main/java/io/ebeaninternal/json/ModifyAwareListIterator.java (100%) rename {ebean-core-jackson-plugin => ebean-core-json}/src/main/java/io/ebeaninternal/json/ModifyAwareMap.java (100%) rename {ebean-core-jackson-plugin => ebean-core-json}/src/main/java/io/ebeaninternal/json/ModifyAwareSet.java (100%) rename {ebean-core-jackson-plugin => ebean-core-json}/src/main/java/module-info.java (52%) rename {ebean-core-jackson-plugin => ebean-core-json}/src/main/resources/META-INF/services/io.ebean.service.BootstrapService (100%) rename {ebean-core-jackson-plugin => ebean-core-json}/src/test/java/io/ebeaninternal/json/ModifyAwareMapTest.java (100%) diff --git a/ebean-core-jackson-plugin/pom.xml b/ebean-core-json/pom.xml similarity index 94% rename from ebean-core-jackson-plugin/pom.xml rename to ebean-core-json/pom.xml index 9b01f6eddb..2a46279977 100644 --- a/ebean-core-jackson-plugin/pom.xml +++ b/ebean-core-json/pom.xml @@ -5,7 +5,7 @@ ebean-parent 16.0.0-RC3 - ebean-core-jackson-plugin + ebean-core-json scm:git:git@github.com:ebean-orm/ebean.git HEAD diff --git a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/DJsonService.java b/ebean-core-json/src/main/java/io/ebeaninternal/json/DJsonService.java similarity index 100% rename from ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/DJsonService.java rename to ebean-core-json/src/main/java/io/ebeaninternal/json/DJsonService.java diff --git a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/EJsonReader.java b/ebean-core-json/src/main/java/io/ebeaninternal/json/EJsonReader.java similarity index 100% rename from ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/EJsonReader.java rename to ebean-core-json/src/main/java/io/ebeaninternal/json/EJsonReader.java diff --git a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/EJsonWriter.java b/ebean-core-json/src/main/java/io/ebeaninternal/json/EJsonWriter.java similarity index 100% rename from ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/EJsonWriter.java rename to ebean-core-json/src/main/java/io/ebeaninternal/json/EJsonWriter.java diff --git a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareFlag.java b/ebean-core-json/src/main/java/io/ebeaninternal/json/ModifyAwareFlag.java similarity index 100% rename from ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareFlag.java rename to ebean-core-json/src/main/java/io/ebeaninternal/json/ModifyAwareFlag.java diff --git a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareIterator.java b/ebean-core-json/src/main/java/io/ebeaninternal/json/ModifyAwareIterator.java similarity index 100% rename from ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareIterator.java rename to ebean-core-json/src/main/java/io/ebeaninternal/json/ModifyAwareIterator.java diff --git a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareList.java b/ebean-core-json/src/main/java/io/ebeaninternal/json/ModifyAwareList.java similarity index 100% rename from ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareList.java rename to ebean-core-json/src/main/java/io/ebeaninternal/json/ModifyAwareList.java diff --git a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareListIterator.java b/ebean-core-json/src/main/java/io/ebeaninternal/json/ModifyAwareListIterator.java similarity index 100% rename from ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareListIterator.java rename to ebean-core-json/src/main/java/io/ebeaninternal/json/ModifyAwareListIterator.java diff --git a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareMap.java b/ebean-core-json/src/main/java/io/ebeaninternal/json/ModifyAwareMap.java similarity index 100% rename from ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareMap.java rename to ebean-core-json/src/main/java/io/ebeaninternal/json/ModifyAwareMap.java diff --git a/ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareSet.java b/ebean-core-json/src/main/java/io/ebeaninternal/json/ModifyAwareSet.java similarity index 100% rename from ebean-core-jackson-plugin/src/main/java/io/ebeaninternal/json/ModifyAwareSet.java rename to ebean-core-json/src/main/java/io/ebeaninternal/json/ModifyAwareSet.java diff --git a/ebean-core-jackson-plugin/src/main/java/module-info.java b/ebean-core-json/src/main/java/module-info.java similarity index 52% rename from ebean-core-jackson-plugin/src/main/java/module-info.java rename to ebean-core-json/src/main/java/module-info.java index a71965d282..b7561ed62c 100644 --- a/ebean-core-jackson-plugin/src/main/java/module-info.java +++ b/ebean-core-json/src/main/java/module-info.java @@ -1,9 +1,9 @@ -module io.ebean.core.internal.jackson { +module io.ebean.core.json { -requires io.ebean.api; + requires io.ebean.api; requires transitive com.fasterxml.jackson.core; - exports io.ebeaninternal.json to io.ebean.test,io.ebean.core; + exports io.ebeaninternal.json to io.ebean.test, io.ebean.core; provides io.ebean.service.BootstrapService with io.ebeaninternal.json.DJsonService; } diff --git a/ebean-core-jackson-plugin/src/main/resources/META-INF/services/io.ebean.service.BootstrapService b/ebean-core-json/src/main/resources/META-INF/services/io.ebean.service.BootstrapService similarity index 100% rename from ebean-core-jackson-plugin/src/main/resources/META-INF/services/io.ebean.service.BootstrapService rename to ebean-core-json/src/main/resources/META-INF/services/io.ebean.service.BootstrapService diff --git a/ebean-core-jackson-plugin/src/test/java/io/ebeaninternal/json/ModifyAwareMapTest.java b/ebean-core-json/src/test/java/io/ebeaninternal/json/ModifyAwareMapTest.java similarity index 100% rename from ebean-core-jackson-plugin/src/test/java/io/ebeaninternal/json/ModifyAwareMapTest.java rename to ebean-core-json/src/test/java/io/ebeaninternal/json/ModifyAwareMapTest.java diff --git a/ebean-core/pom.xml b/ebean-core/pom.xml index 654cf8f95e..605ec14309 100644 --- a/ebean-core/pom.xml +++ b/ebean-core/pom.xml @@ -27,7 +27,7 @@ io.ebean - ebean-core-jackson-plugin + ebean-core-json 16.0.0-RC3 diff --git a/ebean-core/src/main/java/module-info.java b/ebean-core/src/main/java/module-info.java index f09028a4dd..47f425cb6d 100644 --- a/ebean-core/src/main/java/module-info.java +++ b/ebean-core/src/main/java/module-info.java @@ -31,7 +31,7 @@ requires io.ebean.types; requires static io.avaje.jsr305x; - requires static io.ebean.core.internal.jackson; + requires static io.ebean.core.json; requires static com.fasterxml.jackson.annotation; requires static com.fasterxml.jackson.core; requires static com.fasterxml.jackson.databind; diff --git a/pom.xml b/pom.xml index 679252d59a..7ba50447e3 100644 --- a/pom.xml +++ b/pom.xml @@ -97,7 +97,7 @@ ebean-jackson-mapper ebean-spring-txn kotlin-querybean-generator - ebean-core-jackson-plugin + ebean-core-json