From 2d29a25fc3a0b2c39559405e9c61c8ccabdaea44 Mon Sep 17 00:00:00 2001 From: Josiah Noel <32279667+SentryMan@users.noreply.github.com> Date: Sat, 11 Oct 2025 21:41:43 -0400 Subject: [PATCH 1/3] fix jackson SPI --- jsonb-jackson/pom.xml | 7 +++++++ .../java/io/avaje/jsonb/jackson/JacksonAdapterFactory.java | 2 ++ jsonb-jackson/src/main/java/module-info.java | 4 ++-- .../META-INF/services/io.avaje.jsonb.spi.JsonStreamFactory | 1 - 4 files changed, 11 insertions(+), 3 deletions(-) delete mode 100644 jsonb-jackson/src/main/resources/META-INF/services/io.avaje.jsonb.spi.JsonStreamFactory diff --git a/jsonb-jackson/pom.xml b/jsonb-jackson/pom.xml index ce23118c..5d86fdd8 100644 --- a/jsonb-jackson/pom.xml +++ b/jsonb-jackson/pom.xml @@ -32,6 +32,13 @@ ${project.version} + + io.avaje + avaje-spi-service + ${spi.version} + true + + io.avaje junit diff --git a/jsonb-jackson/src/main/java/io/avaje/jsonb/jackson/JacksonAdapterFactory.java b/jsonb-jackson/src/main/java/io/avaje/jsonb/jackson/JacksonAdapterFactory.java index 508a40d3..215a81b8 100644 --- a/jsonb-jackson/src/main/java/io/avaje/jsonb/jackson/JacksonAdapterFactory.java +++ b/jsonb-jackson/src/main/java/io/avaje/jsonb/jackson/JacksonAdapterFactory.java @@ -2,12 +2,14 @@ import io.avaje.json.stream.JsonStream; import io.avaje.jsonb.spi.JsonStreamFactory; +import io.avaje.spi.ServiceProvider; /** * Jackson Core based adapter. *

* Uses jackson code to do the underlying json parsing and generation. */ +@ServiceProvider public class JacksonAdapterFactory implements JsonStreamFactory { @Override diff --git a/jsonb-jackson/src/main/java/module-info.java b/jsonb-jackson/src/main/java/module-info.java index 9575e2f1..eb8517bf 100644 --- a/jsonb-jackson/src/main/java/module-info.java +++ b/jsonb-jackson/src/main/java/module-info.java @@ -2,8 +2,8 @@ requires transitive io.avaje.jsonb; requires transitive com.fasterxml.jackson.core; + requires static io.avaje.spi; exports io.avaje.jsonb.jackson; - - provides io.avaje.jsonb.spi.JsonStreamFactory with io.avaje.jsonb.jackson.JacksonAdapterFactory; + provides io.avaje.jsonb.spi.JsonbExtension with io.avaje.jsonb.jackson.JacksonAdapterFactory; } diff --git a/jsonb-jackson/src/main/resources/META-INF/services/io.avaje.jsonb.spi.JsonStreamFactory b/jsonb-jackson/src/main/resources/META-INF/services/io.avaje.jsonb.spi.JsonStreamFactory deleted file mode 100644 index 70762b57..00000000 --- a/jsonb-jackson/src/main/resources/META-INF/services/io.avaje.jsonb.spi.JsonStreamFactory +++ /dev/null @@ -1 +0,0 @@ -io.avaje.jsonb.jackson.JacksonAdapterFactory From f4f9477a8c4d45f7226fed6d1a192bbeb80abfb4 Mon Sep 17 00:00:00 2001 From: Josiah Noel <32279667+SentryMan@users.noreply.github.com> Date: Sat, 11 Oct 2025 21:49:34 -0400 Subject: [PATCH 2/3] test --- .../jsonb/jackson/ObjectAdapterTest.java | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/jsonb-jackson/src/test/java/io/avaje/jsonb/jackson/ObjectAdapterTest.java b/jsonb-jackson/src/test/java/io/avaje/jsonb/jackson/ObjectAdapterTest.java index d1a531f9..b717aad3 100644 --- a/jsonb-jackson/src/test/java/io/avaje/jsonb/jackson/ObjectAdapterTest.java +++ b/jsonb-jackson/src/test/java/io/avaje/jsonb/jackson/ObjectAdapterTest.java @@ -1,26 +1,34 @@ package io.avaje.jsonb.jackson; -import io.avaje.json.JsonAdapter; -import io.avaje.json.JsonWriter; -import io.avaje.jsonb.JsonType; -import io.avaje.jsonb.Jsonb; -import org.junit.jupiter.api.Test; +import static org.assertj.core.api.Assertions.assertThat; import java.io.IOException; +import java.io.OutputStream; import java.io.StringWriter; import java.util.List; import java.util.Map; -import static org.assertj.core.api.Assertions.assertThat; +import org.junit.jupiter.api.Test; + +import io.avaje.json.JsonAdapter; +import io.avaje.json.JsonWriter; +import io.avaje.jsonb.JsonType; +import io.avaje.jsonb.Jsonb; class ObjectAdapterTest { - Jsonb jsonb = Jsonb.builder().adapter(new JacksonAdapter()).build(); + Jsonb jsonb = Jsonb.instance(); JsonAdapter objectAdapter = jsonb.adapter(Object.class); JsonType objectType = jsonb.type(Object.class); + @Test + void isJackson() { + assertThat(jsonb.reader("")).isInstanceOf(JacksonReader.class); + assertThat(jsonb.writer(OutputStream.nullOutputStream())).isInstanceOf(JacksonWriter.class); + } + @SuppressWarnings("unchecked") @Test void fromJson_readingMap() throws IOException { From bea597d3f2c03b31dcad41f571621ff8ff1c6aa2 Mon Sep 17 00:00:00 2001 From: Josiah Noel <32279667+SentryMan@users.noreply.github.com> Date: Sat, 11 Oct 2025 21:54:43 -0400 Subject: [PATCH 3/3] move test --- .../jsonb/jackson/JacksonAdapterTest.java | 21 ++++++++++++++----- .../jsonb/jackson/ObjectAdapterTest.java | 7 ------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/jsonb-jackson/src/test/java/io/avaje/jsonb/jackson/JacksonAdapterTest.java b/jsonb-jackson/src/test/java/io/avaje/jsonb/jackson/JacksonAdapterTest.java index 909300d2..7d6b8987 100644 --- a/jsonb-jackson/src/test/java/io/avaje/jsonb/jackson/JacksonAdapterTest.java +++ b/jsonb-jackson/src/test/java/io/avaje/jsonb/jackson/JacksonAdapterTest.java @@ -1,15 +1,19 @@ package io.avaje.jsonb.jackson; +import static org.assertj.core.api.Assertions.assertThat; + +import java.io.OutputStream; + +import org.example.Address; +import org.example.MyComponent; +import org.junit.jupiter.api.Test; + import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.SerializableString; import com.fasterxml.jackson.core.io.CharacterEscapes; -import io.avaje.jsonb.Jsonb; -import org.example.Address; -import org.example.MyComponent; -import org.junit.jupiter.api.Test; -import static org.assertj.core.api.Assertions.assertThat; +import io.avaje.jsonb.Jsonb; class JacksonAdapterTest { @@ -22,6 +26,13 @@ class JacksonAdapterTest { public static final JsonFactory HUMAN_READABLE_JSON_FACTORY = JSON_FACTORY.copy() .setCharacterEscapes(new HumanReadableCharacterEscapes()); + @Test + void isJackson() { + var jsonb = Jsonb.instance(); + assertThat(jsonb.reader("")).isInstanceOf(JacksonReader.class); + assertThat(jsonb.writer(OutputStream.nullOutputStream())).isInstanceOf(JacksonWriter.class); + } + @Test void custom_JsonFactory() { diff --git a/jsonb-jackson/src/test/java/io/avaje/jsonb/jackson/ObjectAdapterTest.java b/jsonb-jackson/src/test/java/io/avaje/jsonb/jackson/ObjectAdapterTest.java index b717aad3..2f5232a1 100644 --- a/jsonb-jackson/src/test/java/io/avaje/jsonb/jackson/ObjectAdapterTest.java +++ b/jsonb-jackson/src/test/java/io/avaje/jsonb/jackson/ObjectAdapterTest.java @@ -3,7 +3,6 @@ import static org.assertj.core.api.Assertions.assertThat; import java.io.IOException; -import java.io.OutputStream; import java.io.StringWriter; import java.util.List; import java.util.Map; @@ -23,12 +22,6 @@ class ObjectAdapterTest { JsonType objectType = jsonb.type(Object.class); - @Test - void isJackson() { - assertThat(jsonb.reader("")).isInstanceOf(JacksonReader.class); - assertThat(jsonb.writer(OutputStream.nullOutputStream())).isInstanceOf(JacksonWriter.class); - } - @SuppressWarnings("unchecked") @Test void fromJson_readingMap() throws IOException {