mirror of
https://github.com/tiennm99/lombok.git
synced 2026-10-11 12:19:00 +00:00
add warning when Jacksonized is used on non-fluent accessors
revert unnecessary import changes
This commit is contained in:
1 parent
592882feef
commit
4db804f082
6 files changed
+51
-51
No files matched your search
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -92,23 +92,24 @@ public class HandleJacksonized extends EclipseAnnotationHandler<Jacksonized> {
|
||||
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<Builder> builderAnnotation = builderAnnotationNode != null ? createAnnotation(Builder.class, builderAnnotationNode) : null;
|
||||
AnnotationValues<SuperBuilder> superBuilderAnnotation = superBuilderAnnotationNode != null ? createAnnotation(SuperBuilder.class, superBuilderAnnotationNode) : null;
|
||||
|
||||
@@ -160,7 +161,7 @@ public class HandleJacksonized extends EclipseAnnotationHandler<Jacksonized> {
|
||||
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<Accessors> accessorsAnnotation = accessorsAnnotationNode != null ?
|
||||
createAnnotation(Accessors.class, accessorsAnnotationNode) :
|
||||
null;
|
||||
@@ -168,6 +169,9 @@ public class HandleJacksonized extends EclipseAnnotationHandler<Jacksonized> {
|
||||
|
||||
if (!fluent) {
|
||||
// No changes required for chained-only accessors.
|
||||
if (!jacksonizedBuilder) {
|
||||
annotationNode.addWarning("@Jacksonized only affects fluent accessors (@Accessors(fluent=true)).");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -86,11 +86,11 @@ public class HandleJacksonized extends JavacAnnotationHandler<Jacksonized> {
|
||||
}
|
||||
|
||||
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<Accessors> accessorsAnnotation = accessorsAnnotationNode != null ?
|
||||
createAnnotation(Accessors.class, accessorsAnnotationNode) :
|
||||
null;
|
||||
@@ -98,6 +98,8 @@ public class HandleJacksonized extends JavacAnnotationHandler<Jacksonized> {
|
||||
|
||||
if (!fluent) {
|
||||
// No changes required for chained-only accessors.
|
||||
if (!jacksonizedBuilder)
|
||||
annotationNode.addWarning("@Jacksonized only affects fluent accessors (@Accessors(fluent=true)).");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -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<Setter> {
|
||||
AnnotationValues<Accessors> 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<Setter> {
|
||||
if (isFieldDeprecated(field) || deprecate) {
|
||||
annsOnMethod = annsOnMethod.prepend(treeMaker.Annotation(genJavaLangTypeRef(field, "Deprecated"), List.<JCExpression>nil()));
|
||||
}
|
||||
|
||||
|
||||
if (shouldMakeFinal(field, accessors)) access |= Flags.FINAL;
|
||||
JCMethodDecl methodDef;
|
||||
if (recv != null && treeMaker.hasMethodDefWithRecvParam()) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in new issue
Block a user