diff --git a/src/core/lombok/eclipse/handlers/HandleGetter.java b/src/core/lombok/eclipse/handlers/HandleGetter.java index 3e1abcc8..ad528929 100644 --- a/src/core/lombok/eclipse/handlers/HandleGetter.java +++ b/src/core/lombok/eclipse/handlers/HandleGetter.java @@ -21,7 +21,7 @@ */ package lombok.eclipse.handlers; -import static lombok.core.handlers.HandlerUtil.handleFlagUsage; +import static lombok.core.handlers.HandlerUtil.*; import static lombok.eclipse.Eclipse.*; import static lombok.eclipse.handlers.EclipseHandlerUtil.*; @@ -32,6 +32,19 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import lombok.AccessLevel; +import lombok.ConfigurationKeys; +import lombok.experimental.Accessors; +import lombok.experimental.Delegate; +import lombok.spi.Provides; +import lombok.Getter; +import lombok.core.AST.Kind; +import lombok.core.AnnotationValues; +import lombok.core.configuration.CheckerFrameworkVersion; +import lombok.eclipse.EclipseAnnotationHandler; +import lombok.eclipse.EclipseNode; +import lombok.eclipse.agent.PatchDelegate; + import org.eclipse.jdt.internal.compiler.ast.ASTNode; import org.eclipse.jdt.internal.compiler.ast.AllocationExpression; import org.eclipse.jdt.internal.compiler.ast.Annotation; @@ -63,21 +76,6 @@ import org.eclipse.jdt.internal.compiler.ast.TypeReference; import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants; import org.eclipse.jdt.internal.compiler.lookup.TypeConstants; -import lombok.AccessLevel; -import lombok.ConfigurationKeys; -import lombok.Getter; -import lombok.core.AST.Kind; -import lombok.core.AnnotationValues; -import lombok.core.configuration.CheckerFrameworkVersion; -import lombok.core.handlers.HandlerUtil.FieldAccess; -import lombok.eclipse.EclipseAnnotationHandler; -import lombok.eclipse.EclipseNode; -import lombok.eclipse.agent.PatchDelegate; -import lombok.eclipse.handlers.EclipseHandlerUtil.CopyJavadoc; -import lombok.experimental.Accessors; -import lombok.experimental.Delegate; -import lombok.spi.Provides; - /** * Handles the {@code lombok.Getter} annotation for eclipse. */ diff --git a/src/core/lombok/eclipse/handlers/HandleJacksonized.java b/src/core/lombok/eclipse/handlers/HandleJacksonized.java index 10d5dcbc..79015362 100644 --- a/src/core/lombok/eclipse/handlers/HandleJacksonized.java +++ b/src/core/lombok/eclipse/handlers/HandleJacksonized.java @@ -92,23 +92,24 @@ public class HandleJacksonized extends EclipseAnnotationHandler { return; } + boolean jacksonizedBuilder = builderAnnotationNode != null || superBuilderAnnotationNode != null; + if (jacksonizedBuilder) { + handleJacksonizedBuilder(ast, annotationNode, annotatedNode, tdNode, td, builderAnnotationNode, superBuilderAnnotationNode); + } + + if (accessorsAnnotationNode != null) { + handleJacksonizedAccessors(ast, annotationNode, annotatedNode, tdNode, td, accessorsAnnotationNode, jacksonizedBuilder); + } + + } + + private void handleJacksonizedBuilder(Annotation ast, EclipseNode annotationNode, EclipseNode annotatedNode, EclipseNode tdNode, TypeDeclaration td, EclipseNode builderAnnotationNode, EclipseNode superBuilderAnnotationNode) { boolean isAbstract = (td.modifiers & ClassFileConstants.AccAbstract) != 0; if (isAbstract) { annotationNode.addError("Builders on abstract classes cannot be @Jacksonized (the builder would never be used)."); return; } - if (builderAnnotationNode != null || superBuilderAnnotationNode != null) { - handleJacksonizedBuilder(ast, annotationNode, annotatedNode, tdNode, td, builderAnnotationNode, superBuilderAnnotationNode); - } - - if (accessorsAnnotationNode != null) { - handleJacksonizedAccessors(ast, annotationNode, annotatedNode, tdNode, td, accessorsAnnotationNode); - } - - } - - private void handleJacksonizedBuilder(Annotation ast, EclipseNode annotationNode, EclipseNode annotatedNode, EclipseNode tdNode, TypeDeclaration td, EclipseNode builderAnnotationNode, EclipseNode superBuilderAnnotationNode) { AnnotationValues builderAnnotation = builderAnnotationNode != null ? createAnnotation(Builder.class, builderAnnotationNode) : null; AnnotationValues superBuilderAnnotation = superBuilderAnnotationNode != null ? createAnnotation(SuperBuilder.class, superBuilderAnnotationNode) : null; @@ -160,7 +161,7 @@ public class HandleJacksonized extends EclipseAnnotationHandler { builderClass.modifiers = builderClass.modifiers & ~ClassFileConstants.AccPrivate; } - private void handleJacksonizedAccessors(Annotation ast, EclipseNode annotationNode, EclipseNode annotatedNode, EclipseNode tdNode, TypeDeclaration td, EclipseNode accessorsAnnotationNode) { + private void handleJacksonizedAccessors(Annotation ast, EclipseNode annotationNode, EclipseNode annotatedNode, EclipseNode tdNode, TypeDeclaration td, EclipseNode accessorsAnnotationNode, boolean jacksonizedBuilder) { AnnotationValues accessorsAnnotation = accessorsAnnotationNode != null ? createAnnotation(Accessors.class, accessorsAnnotationNode) : null; @@ -168,6 +169,9 @@ public class HandleJacksonized extends EclipseAnnotationHandler { if (!fluent) { // No changes required for chained-only accessors. + if (!jacksonizedBuilder) { + annotationNode.addWarning("@Jacksonized only affects fluent accessors (@Accessors(fluent=true))."); + } return; } diff --git a/src/core/lombok/javac/handlers/HandleJacksonized.java b/src/core/lombok/javac/handlers/HandleJacksonized.java index b6788ac5..c0cff164 100644 --- a/src/core/lombok/javac/handlers/HandleJacksonized.java +++ b/src/core/lombok/javac/handlers/HandleJacksonized.java @@ -86,11 +86,11 @@ public class HandleJacksonized extends JavacAnnotationHandler { } if (accessorsAnnotationNode != null) { - handleJacksonizedAccessors(annotationNode, annotatedNode, tdNode, td, accessorsAnnotationNode); + handleJacksonizedAccessors(annotationNode, annotatedNode, tdNode, td, accessorsAnnotationNode, builderAnnotationNode != null || superBuilderAnnotationNode != null); } } - private void handleJacksonizedAccessors(JavacNode annotationNode, JavacNode annotatedNode, JavacNode tdNode, JCClassDecl td, JavacNode accessorsAnnotationNode) { + private void handleJacksonizedAccessors(JavacNode annotationNode, JavacNode annotatedNode, JavacNode tdNode, JCClassDecl td, JavacNode accessorsAnnotationNode, boolean jacksonizedBuilder) { AnnotationValues accessorsAnnotation = accessorsAnnotationNode != null ? createAnnotation(Accessors.class, accessorsAnnotationNode) : null; @@ -98,6 +98,8 @@ public class HandleJacksonized extends JavacAnnotationHandler { if (!fluent) { // No changes required for chained-only accessors. + if (!jacksonizedBuilder) + annotationNode.addWarning("@Jacksonized only affects fluent accessors (@Accessors(fluent=true))."); return; } diff --git a/src/core/lombok/javac/handlers/HandleSetter.java b/src/core/lombok/javac/handlers/HandleSetter.java index 438e7b8f..d2816b58 100644 --- a/src/core/lombok/javac/handlers/HandleSetter.java +++ b/src/core/lombok/javac/handlers/HandleSetter.java @@ -21,13 +21,24 @@ */ package lombok.javac.handlers; -import static lombok.core.handlers.HandlerUtil.handleFlagUsage; import static lombok.javac.Javac.*; +import static lombok.core.handlers.HandlerUtil.*; import static lombok.javac.handlers.JavacHandlerUtil.*; -import static lombok.javac.handlers.JavacHandlerUtil.isFieldDeprecated; import java.util.Collection; +import lombok.AccessLevel; +import lombok.ConfigurationKeys; +import lombok.Setter; +import lombok.core.AST.Kind; +import lombok.core.AnnotationValues; +import lombok.experimental.Accessors; +import lombok.javac.Javac; +import lombok.javac.JavacAnnotationHandler; +import lombok.javac.JavacNode; +import lombok.javac.JavacTreeMaker; +import lombok.spi.Provides; + import com.sun.tools.javac.code.Flags; import com.sun.tools.javac.tree.JCTree.JCAnnotation; import com.sun.tools.javac.tree.JCTree.JCAssign; @@ -42,20 +53,6 @@ import com.sun.tools.javac.util.List; import com.sun.tools.javac.util.ListBuffer; import com.sun.tools.javac.util.Name; -import lombok.AccessLevel; -import lombok.ConfigurationKeys; -import lombok.Setter; -import lombok.core.AST.Kind; -import lombok.core.AnnotationValues; -import lombok.core.handlers.HandlerUtil.FieldAccess; -import lombok.experimental.Accessors; -import lombok.javac.Javac; -import lombok.javac.JavacAnnotationHandler; -import lombok.javac.JavacNode; -import lombok.javac.JavacTreeMaker; -import lombok.javac.handlers.JavacHandlerUtil.CopyJavadoc; -import lombok.spi.Provides; - /** * Handles the {@code lombok.Setter} annotation for javac. */ @@ -198,7 +195,6 @@ public class HandleSetter extends JavacAnnotationHandler { AnnotationValues accessors = JavacHandlerUtil.getAccessorsForField(field); String setterName = toSetterName(field, accessors); boolean returnThis = shouldReturnThis(field, accessors); - JCMethodDecl setter = createSetter(access, false, field, treeMaker, setterName, null, null, returnThis, source, onMethod, onParam); return setter; } @@ -288,7 +284,7 @@ public class HandleSetter extends JavacAnnotationHandler { if (isFieldDeprecated(field) || deprecate) { annsOnMethod = annsOnMethod.prepend(treeMaker.Annotation(genJavaLangTypeRef(field, "Deprecated"), List.nil())); } - + if (shouldMakeFinal(field, accessors)) access |= Flags.FINAL; JCMethodDecl methodDef; if (recv != null && treeMaker.hasMethodDefWithRecvParam()) { diff --git a/src/core/lombok/javac/handlers/HandleSuperBuilder.java b/src/core/lombok/javac/handlers/HandleSuperBuilder.java index eb18c863..04fa99b8 100644 --- a/src/core/lombok/javac/handlers/HandleSuperBuilder.java +++ b/src/core/lombok/javac/handlers/HandleSuperBuilder.java @@ -21,9 +21,9 @@ */ package lombok.javac.handlers; +import static lombok.javac.handlers.HandleBuilder.*; import static lombok.core.handlers.HandlerUtil.*; import static lombok.javac.Javac.*; -import static lombok.javac.handlers.HandleBuilder.*; import static lombok.javac.handlers.JavacHandlerUtil.*; import java.util.ArrayList; diff --git a/src/core/lombok/javac/handlers/JavacHandlerUtil.java b/src/core/lombok/javac/handlers/JavacHandlerUtil.java index b1f0be1a..acab62f8 100644 --- a/src/core/lombok/javac/handlers/JavacHandlerUtil.java +++ b/src/core/lombok/javac/handlers/JavacHandlerUtil.java @@ -24,7 +24,8 @@ package lombok.javac.handlers; import static com.sun.tools.javac.code.Flags.GENERATEDCONSTR; import static lombok.core.handlers.HandlerUtil.*; import static lombok.javac.Javac.*; -import static lombok.javac.JavacAugments.*; +import static lombok.javac.JavacAugments.JCTree_generatedNode; +import static lombok.javac.JavacAugments.JCTree_keepPosition; import java.lang.annotation.Annotation; import java.lang.reflect.Constructor; @@ -101,7 +102,6 @@ import lombok.core.configuration.NullCheckExceptionType; import lombok.core.configuration.TypeName; import lombok.core.handlers.HandlerUtil; import lombok.core.handlers.HandlerUtil.FieldAccess; -import lombok.core.handlers.HandlerUtil.JavadocTag; import lombok.delombok.LombokOptionsFactory; import lombok.experimental.Accessors; import lombok.experimental.Tolerate;