This is an automated email from the ASF dual-hosted git repository.
struberg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/johnzon.git
The following commit(s) were added to refs/heads/master by this push:
new 31b832f7 JOHNZON-420 use JsonBAdapter when converting back from array
31b832f7 is described below
commit 31b832f71b784d8f6605f6fd89fbf19c56bf7367
Author: Mark Struberg <[email protected]>
AuthorDate: Fri Dec 5 11:39:52 2025 +0100
JOHNZON-420 use JsonBAdapter when converting back from array
---
.../java/org/apache/johnzon/jsonb/AdapterTest.java | 24 ++++++++++++++++++++++
.../apache/johnzon/mapper/MappingParserImpl.java | 6 ++++++
2 files changed, 30 insertions(+)
diff --git
a/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/AdapterTest.java
b/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/AdapterTest.java
index 4ee1af5a..ed5bfb63 100644
--- a/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/AdapterTest.java
+++ b/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/AdapterTest.java
@@ -234,6 +234,23 @@ public class AdapterTest {
assertEquals("42", adaptedBazCollection.collection.get(0).value);
}
+ @Test
+ public void testArrayOfClassWithTypeAdapter() {
+ final Jsonb jsonb = JsonbBuilder.create(
+ new JsonbConfig()
+ .setProperty("johnzon.readAttributeBeforeWrite", true)
+
.withPropertyOrderStrategy(PropertyOrderStrategy.LEXICOGRAPHICAL) /*
assertEquals() order */);
+
+ Baz[] bazs = new Baz[]{new Baz("A"), new Baz("B")};
+ final String bazsJson = jsonb.toJson(bazs);
+ assertEquals("[\"A\",\"B\"]", bazsJson);
+
+
+ // and the other way around:
+ final Baz[] bazs2 = jsonb.fromJson(bazsJson, Baz[].class);
+ assertEquals(2, bazs2.length);
+ }
+
public static class BarCollection {
@JsonbTypeAdapter(BarAdapter.class)
public List<Bar> collection;
@@ -336,6 +353,13 @@ public class AdapterTest {
@JsonbTypeAdapter(BazAdapter.class)
public static class Baz {
+ public Baz() {
+ }
+
+ public Baz(String value) {
+ this.value = value;
+ }
+
public String value;
}
diff --git
a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java
b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java
index 2a0a1f4c..f0ce5d76 100644
---
a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java
+++
b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java
@@ -1219,6 +1219,12 @@ public class MappingParserImpl implements MappingParser {
}
return adapter;
}
+
+ final Mappings.ClassMapping classMapping =
mappings.getClassMapping(aClass);
+ if (classMapping != null && classMapping.adapter != null) {
+ return classMapping.adapter;
+ }
+
config.getNoParserAdapterTypes().add(aClass);
return null;
}