From 5c2ddc8ddba46863bdd52f8a69e35e31dbd8ea7d Mon Sep 17 00:00:00 2001 From: Jan Rieke Date: Fri, 28 Mar 2025 17:42:09 +0100 Subject: [PATCH] ecj: Jacksonized for accessors --- .../lombok/eclipse/handlers/HandleJacksonized.java | 1 + src/core/lombok/eclipse/handlers/HandleSetter.java | 10 ++++++++++ .../resource/after-ecj/JacksonizedAccessors.java | 4 ++-- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/core/lombok/eclipse/handlers/HandleJacksonized.java b/src/core/lombok/eclipse/handlers/HandleJacksonized.java index abb50fe0..10d5dcbc 100644 --- a/src/core/lombok/eclipse/handlers/HandleJacksonized.java +++ b/src/core/lombok/eclipse/handlers/HandleJacksonized.java @@ -177,6 +177,7 @@ public class HandleJacksonized extends EclipseAnnotationHandler { createJsonPropertyForField(eclipseNode, annotationNode); } } + tdNode.rebuild(); } private void createJsonPropertyForField(EclipseNode fieldNode, EclipseNode annotationNode) { diff --git a/src/core/lombok/eclipse/handlers/HandleSetter.java b/src/core/lombok/eclipse/handlers/HandleSetter.java index 5c372019..c607a6c6 100644 --- a/src/core/lombok/eclipse/handlers/HandleSetter.java +++ b/src/core/lombok/eclipse/handlers/HandleSetter.java @@ -27,6 +27,7 @@ import static lombok.eclipse.handlers.EclipseHandlerUtil.*; import java.lang.reflect.Modifier; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.List; @@ -59,6 +60,8 @@ import org.eclipse.jdt.internal.compiler.ast.TypeReference; import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants; import org.eclipse.jdt.internal.compiler.lookup.TypeIds; +import com.google.common.collect.Lists; + /** * Handles the {@code lombok.Setter} annotation for eclipse. */ @@ -109,6 +112,13 @@ public class HandleSetter extends EclipseAnnotationHandler { //The annotation will make it happen, so we can skip it. return; } + + // If a fluent setter should be generated, force-copy annotations from the field. + AnnotationValues accessorsForField = EclipseHandlerUtil.getAccessorsForField(fieldNode); + Annotation[] copyableToSetterAnnotations = findCopyableToSetterAnnotations(fieldNode, accessorsForField.isExplicit("fluent")); + onMethod = Lists.newArrayList(onMethod); + onMethod.addAll(Arrays.asList(copyableToSetterAnnotations)); + createSetterForField(level, fieldNode, sourceNode, false, onMethod, onParam); } diff --git a/test/transform/resource/after-ecj/JacksonizedAccessors.java b/test/transform/resource/after-ecj/JacksonizedAccessors.java index 83fe581c..dd15a397 100644 --- a/test/transform/resource/after-ecj/JacksonizedAccessors.java +++ b/test/transform/resource/after-ecj/JacksonizedAccessors.java @@ -3,13 +3,13 @@ public @lombok.extern.jackson.Jacksonized @lombok.experimental.Accessors(fluent public JacksonizedAccessors() { super(); } - public @java.lang.SuppressWarnings("all") @lombok.Generated @com.fasterxml.jackson.annotation.JsonProperty("intValue") int intValue() { + public @com.fasterxml.jackson.annotation.JsonProperty("intValue") @java.lang.SuppressWarnings("all") @lombok.Generated int intValue() { return this.intValue; } /** * @return {@code this}. */ - public @java.lang.SuppressWarnings("all") @lombok.Generated @com.fasterxml.jackson.annotation.JsonProperty("intValue") JacksonizedAccessors intValue(final int intValue) { + public @com.fasterxml.jackson.annotation.JsonProperty("intValue") @java.lang.SuppressWarnings("all") @lombok.Generated JacksonizedAccessors intValue(final int intValue) { this.intValue = intValue; return this; }