This is an automated email from the ASF dual-hosted git repository. struberg pushed a commit to branch johnzon-1.2.x in repository https://gitbox.apache.org/repos/asf/johnzon.git
commit 07fe4b5ff1bda597cd470ff2d1dd47ea7c24b839 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 840273f5..0617dd0f 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 @@ -198,6 +198,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; @@ -280,6 +297,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 711453d8..2f9673b7 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 @@ -1208,6 +1208,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; }
