From faa0033685573d5f341d9b80f2f24d50094341ff Mon Sep 17 00:00:00 2001 From: Lars Uffmann Date: Wed, 24 Sep 2025 17:11:12 +0200 Subject: [PATCH] - Run test with CONF: lombok.jacksonized.useJackson3 = true, adjust ecj tests. - Validate config options. --- src/core/lombok/eclipse/handlers/HandleJacksonized.java | 4 ++++ src/core/lombok/javac/handlers/HandleJacksonized.java | 7 +++++-- .../resource/after-ecj/JacksonizedBuilderComplex.java | 4 ++-- .../resource/after-ecj/JacksonizedBuilderSimple.java | 4 ++-- .../resource/after-ecj/JacksonizedBuilderSingular.java | 6 +++--- .../resource/after-ecj/JacksonizedSuperBuilderSimple.java | 4 ++-- .../resource/before/JacksonizedBuilderComplex.java | 1 + .../resource/before/JacksonizedBuilderSimple.java | 1 + .../resource/before/JacksonizedBuilderSingular.java | 1 + test/transform/resource/before/JacksonizedOnRecord.java | 1 + .../resource/before/JacksonizedSuperBuilderSimple.java | 1 + 11 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/core/lombok/eclipse/handlers/HandleJacksonized.java b/src/core/lombok/eclipse/handlers/HandleJacksonized.java index bf3e8a91..64cb0e89 100644 --- a/src/core/lombok/eclipse/handlers/HandleJacksonized.java +++ b/src/core/lombok/eclipse/handlers/HandleJacksonized.java @@ -149,6 +149,10 @@ public class HandleJacksonized extends EclipseAnnotationHandler { Boolean useJackson2 = annotationNode.getAst().readConfigurationOr(ConfigurationKeys.JACKSONIZED_USE_JACKSON2, Boolean.TRUE); Boolean useJackson3 = annotationNode.getAst().readConfigurationOr(ConfigurationKeys.JACKSONIZED_USE_JACKSON3, Boolean.FALSE); + if (! (useJackson2 || useJackson3)) { + annotationNode.addError("Usage: lombok.jacksonized.useJackson2, lombok.jacksonized.useJackson3 or both must be true."); + return; + } if (useJackson2) { td.annotations = addAnnotation(td, td.annotations, JACKSON2_JSON_DESERIALIZE_ANNOTATION, builderMvp); diff --git a/src/core/lombok/javac/handlers/HandleJacksonized.java b/src/core/lombok/javac/handlers/HandleJacksonized.java index 9461da6d..4642aaea 100644 --- a/src/core/lombok/javac/handlers/HandleJacksonized.java +++ b/src/core/lombok/javac/handlers/HandleJacksonized.java @@ -174,9 +174,12 @@ public class HandleJacksonized extends JavacAnnotationHandler { } Boolean useJackson2 = annotationNode.getAst().readConfigurationOr(ConfigurationKeys.JACKSONIZED_USE_JACKSON2, Boolean.TRUE); - //FIXME: default for jackson3 should be false, I need to figure out how to use a non default config option in tests. - Boolean useJackson3 = annotationNode.getAst().readConfigurationOr(ConfigurationKeys.JACKSONIZED_USE_JACKSON3, Boolean.TRUE); + Boolean useJackson3 = annotationNode.getAst().readConfigurationOr(ConfigurationKeys.JACKSONIZED_USE_JACKSON3, Boolean.FALSE); + if (! (useJackson2 || useJackson3)) { + annotationNode.addError("Usage: lombok.jacksonized.useJackson2, lombok.jacksonized.useJackson3 or both must be true."); + return; + } if (useJackson2) { JCExpression jsonDeserializeType = chainDots(annotatedNode, "com", "fasterxml", "jackson", "databind", "annotation", "JsonDeserialize"); JCExpression builderClassExpression = namePlusTypeParamsToTypeReference(maker, tdNode, annotationNode.toName(builderClassName), false, List.nil()); diff --git a/test/transform/resource/after-ecj/JacksonizedBuilderComplex.java b/test/transform/resource/after-ecj/JacksonizedBuilderComplex.java index fc2d095f..ad0eb996 100644 --- a/test/transform/resource/after-ecj/JacksonizedBuilderComplex.java +++ b/test/transform/resource/after-ecj/JacksonizedBuilderComplex.java @@ -1,8 +1,8 @@ import java.util.List; import lombok.Builder; import lombok.extern.jackson.Jacksonized; -@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = JacksonizedBuilderComplex.TestVoidName.class) class JacksonizedBuilderComplex { - public static @java.lang.SuppressWarnings("all") @lombok.Generated @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "with",buildMethodName = "execute") class TestVoidName { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = JacksonizedBuilderComplex.TestVoidName.class) @tools.jackson.databind.annotation.JsonDeserialize(builder = JacksonizedBuilderComplex.TestVoidName.class) class JacksonizedBuilderComplex { + public static @java.lang.SuppressWarnings("all") @lombok.Generated @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "with",buildMethodName = "execute") @tools.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "with",buildMethodName = "execute") class TestVoidName { private @java.lang.SuppressWarnings("all") @lombok.Generated T number; private @java.lang.SuppressWarnings("all") @lombok.Generated int arg2; private @java.lang.SuppressWarnings("all") @lombok.Generated String arg3; diff --git a/test/transform/resource/after-ecj/JacksonizedBuilderSimple.java b/test/transform/resource/after-ecj/JacksonizedBuilderSimple.java index cc23c03a..12bb9656 100644 --- a/test/transform/resource/after-ecj/JacksonizedBuilderSimple.java +++ b/test/transform/resource/after-ecj/JacksonizedBuilderSimple.java @@ -1,7 +1,7 @@ import java.util.List; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -@lombok.extern.jackson.Jacksonized @JsonIgnoreProperties(ignoreUnknown = true) @lombok.Builder(access = lombok.AccessLevel.PROTECTED) @com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = JacksonizedBuilderSimple.JacksonizedBuilderSimpleBuilder.class) class JacksonizedBuilderSimple { - protected static @java.lang.SuppressWarnings("all") @lombok.Generated @JsonIgnoreProperties(ignoreUnknown = true) @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "",buildMethodName = "build") class JacksonizedBuilderSimpleBuilder { +@lombok.extern.jackson.Jacksonized @JsonIgnoreProperties(ignoreUnknown = true) @lombok.Builder(access = lombok.AccessLevel.PROTECTED) @com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = JacksonizedBuilderSimple.JacksonizedBuilderSimpleBuilder.class) @tools.jackson.databind.annotation.JsonDeserialize(builder = JacksonizedBuilderSimple.JacksonizedBuilderSimpleBuilder.class) class JacksonizedBuilderSimple { + protected static @java.lang.SuppressWarnings("all") @lombok.Generated @JsonIgnoreProperties(ignoreUnknown = true) @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "",buildMethodName = "build") @tools.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "",buildMethodName = "build") class JacksonizedBuilderSimpleBuilder { private @java.lang.SuppressWarnings("all") @lombok.Generated int yes; private @java.lang.SuppressWarnings("all") @lombok.Generated List also; @java.lang.SuppressWarnings("all") @lombok.Generated JacksonizedBuilderSimpleBuilder() { diff --git a/test/transform/resource/after-ecj/JacksonizedBuilderSingular.java b/test/transform/resource/after-ecj/JacksonizedBuilderSingular.java index 29a28076..00d42a7b 100644 --- a/test/transform/resource/after-ecj/JacksonizedBuilderSingular.java +++ b/test/transform/resource/after-ecj/JacksonizedBuilderSingular.java @@ -7,8 +7,8 @@ import com.google.common.collect.ImmutableMap; import lombok.Builder; import lombok.Singular; import lombok.extern.jackson.Jacksonized; -public @Jacksonized @Builder @com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = JacksonizedBuilderSingular.JacksonizedBuilderSingularBuilder.class) class JacksonizedBuilderSingular { - public static @java.lang.SuppressWarnings("all") @lombok.Generated @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "",buildMethodName = "build") class JacksonizedBuilderSingularBuilder { +public @Jacksonized @Builder @com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = JacksonizedBuilderSingular.JacksonizedBuilderSingularBuilder.class) @tools.jackson.databind.annotation.JsonDeserialize(builder = JacksonizedBuilderSingular.JacksonizedBuilderSingularBuilder.class) class JacksonizedBuilderSingular { + public static @java.lang.SuppressWarnings("all") @lombok.Generated @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "",buildMethodName = "build") @tools.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "",buildMethodName = "build") class JacksonizedBuilderSingularBuilder { private @java.lang.SuppressWarnings("all") @lombok.Generated java.util.ArrayList any$key; private @java.lang.SuppressWarnings("all") @lombok.Generated java.util.ArrayList any$value; private @java.lang.SuppressWarnings("all") @lombok.Generated java.util.ArrayList values; @@ -161,4 +161,4 @@ public @Jacksonized @Builder @com.fasterxml.jackson.databind.annotation.JsonDese public static @java.lang.SuppressWarnings("all") @lombok.Generated JacksonizedBuilderSingular.JacksonizedBuilderSingularBuilder builder() { return new JacksonizedBuilderSingular.JacksonizedBuilderSingularBuilder(); } -} \ No newline at end of file +} diff --git a/test/transform/resource/after-ecj/JacksonizedSuperBuilderSimple.java b/test/transform/resource/after-ecj/JacksonizedSuperBuilderSimple.java index 2d6d7f0b..b9ee4cdd 100644 --- a/test/transform/resource/after-ecj/JacksonizedSuperBuilderSimple.java +++ b/test/transform/resource/after-ecj/JacksonizedSuperBuilderSimple.java @@ -1,5 +1,5 @@ public class JacksonizedSuperBuilderSimple { - public static @lombok.extern.jackson.Jacksonized @lombok.experimental.SuperBuilder @com.fasterxml.jackson.annotation.JsonIgnoreProperties(ignoreUnknown = true) @com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = JacksonizedSuperBuilderSimple.Parent.ParentBuilderImpl.class) class Parent { + public static @lombok.extern.jackson.Jacksonized @lombok.experimental.SuperBuilder @com.fasterxml.jackson.annotation.JsonIgnoreProperties(ignoreUnknown = true) @com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = JacksonizedSuperBuilderSimple.Parent.ParentBuilderImpl.class) @tools.jackson.databind.annotation.JsonDeserialize(builder = JacksonizedSuperBuilderSimple.Parent.ParentBuilderImpl.class) class Parent { public static abstract @java.lang.SuppressWarnings("all") @lombok.Generated class ParentBuilder> { private @java.lang.SuppressWarnings("all") @lombok.Generated int field1; public ParentBuilder() { @@ -18,7 +18,7 @@ public class JacksonizedSuperBuilderSimple { return (("JacksonizedSuperBuilderSimple.Parent.ParentBuilder(field1=" + this.field1) + ")"); } } - static final @java.lang.SuppressWarnings("all") @lombok.Generated @com.fasterxml.jackson.annotation.JsonIgnoreProperties(ignoreUnknown = true) @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "",buildMethodName = "build") class ParentBuilderImpl extends JacksonizedSuperBuilderSimple.Parent.ParentBuilder { + static final @java.lang.SuppressWarnings("all") @lombok.Generated @com.fasterxml.jackson.annotation.JsonIgnoreProperties(ignoreUnknown = true) @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "",buildMethodName = "build") @tools.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "",buildMethodName = "build") class ParentBuilderImpl extends JacksonizedSuperBuilderSimple.Parent.ParentBuilder { private ParentBuilderImpl() { super(); } diff --git a/test/transform/resource/before/JacksonizedBuilderComplex.java b/test/transform/resource/before/JacksonizedBuilderComplex.java index 5942926d..cac9277c 100644 --- a/test/transform/resource/before/JacksonizedBuilderComplex.java +++ b/test/transform/resource/before/JacksonizedBuilderComplex.java @@ -1,5 +1,6 @@ //version 8: Jackson deps are at least Java7+. //CONF: lombok.builder.className = Test*Name +//CONF: lombok.jacksonized.useJackson3 = true import java.util.List; import lombok.Builder; import lombok.extern.jackson.Jacksonized; diff --git a/test/transform/resource/before/JacksonizedBuilderSimple.java b/test/transform/resource/before/JacksonizedBuilderSimple.java index b81a0f5d..b9cb8146 100644 --- a/test/transform/resource/before/JacksonizedBuilderSimple.java +++ b/test/transform/resource/before/JacksonizedBuilderSimple.java @@ -1,4 +1,5 @@ //version 8: Jackson deps are at least Java7+. +//CONF: lombok.jacksonized.useJackson3 = true import java.util.List; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/test/transform/resource/before/JacksonizedBuilderSingular.java b/test/transform/resource/before/JacksonizedBuilderSingular.java index a34ab9c4..858f7479 100644 --- a/test/transform/resource/before/JacksonizedBuilderSingular.java +++ b/test/transform/resource/before/JacksonizedBuilderSingular.java @@ -1,4 +1,5 @@ //version 8: Jackson deps are at least Java7+. +//CONF: lombok.jacksonized.useJackson3 = true import java.util.List; import java.util.Map; diff --git a/test/transform/resource/before/JacksonizedOnRecord.java b/test/transform/resource/before/JacksonizedOnRecord.java index 273e4a84..b3748183 100644 --- a/test/transform/resource/before/JacksonizedOnRecord.java +++ b/test/transform/resource/before/JacksonizedOnRecord.java @@ -1,4 +1,5 @@ //version 14: +//CONF: lombok.jacksonized.useJackson3 = true import java.util.List; import javax.annotation.Nullable; import com.fasterxml.jackson.annotation.JsonAnySetter; diff --git a/test/transform/resource/before/JacksonizedSuperBuilderSimple.java b/test/transform/resource/before/JacksonizedSuperBuilderSimple.java index 23e52c97..9432d70d 100644 --- a/test/transform/resource/before/JacksonizedSuperBuilderSimple.java +++ b/test/transform/resource/before/JacksonizedSuperBuilderSimple.java @@ -1,3 +1,4 @@ +//CONF: lombok.jacksonized.useJackson3 = true //version 8: Jackson deps are at least Java7+. public class JacksonizedSuperBuilderSimple { @lombok.extern.jackson.Jacksonized