mirror of
https://github.com/tiennm99/lombok.git
synced 2026-10-14 08:18:29 +00:00
Moved NonNull's FLAG_USAGE ConfigurationKey definition to ConfigurationKeys to work around bugs with putting fields in annotation declarations in many versions of JDK7 and all of JDK6's versions.
This commit is contained in:
1 parent
7eccc3b4af
commit
f6da35e4c4
4 files changed
+13
-18
No files matched your search
@@ -30,6 +30,15 @@ import lombok.core.configuration.ConfigurationKey;
|
||||
public class ConfigurationKeys {
|
||||
private ConfigurationKeys() {}
|
||||
|
||||
/**
|
||||
* lombok configuration: {@code lombok.NonNull.flagUsage} = {@code WARNING} | {@code ERROR}.
|
||||
*
|
||||
* <em>Implementation note: This field is supposed to be lombok.NonNull itself, but jdk6 and 7 have bugs where fields in annotations don't work well.</em>
|
||||
*
|
||||
* If set, <em>any</em> usage of {@code @NonNull} results in a warning / error.
|
||||
*/
|
||||
public static final ConfigurationKey<FlagUsageType> NON_NULL_FLAG_USAGE = new ConfigurationKey<FlagUsageType>("lombok.NonNull.flagUsage") {};
|
||||
|
||||
/**
|
||||
* lombok configuration: {@code lombok.AnyConstructor.flagUsage} = {@code WARNING} | {@code ERROR}.
|
||||
*
|
||||
|
||||
@@ -27,9 +27,6 @@ import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import lombok.core.FlagUsageType;
|
||||
import lombok.core.configuration.ConfigurationKey;
|
||||
|
||||
/**
|
||||
* If put on a parameter, lombok will insert a null-check at the start of the method / constructor's body, throwing a
|
||||
* {@code NullPointerException} with the parameter's name as message. If put on a field, any generated method assigning
|
||||
@@ -48,17 +45,4 @@ import lombok.core.configuration.ConfigurationKey;
|
||||
@Retention(RetentionPolicy.CLASS)
|
||||
@Documented
|
||||
public @interface NonNull {
|
||||
/**
|
||||
* lombok configuration: {@code lombok.NonNull.flagUsage} = {@code WARNING} | {@code ERROR}.
|
||||
*
|
||||
* If set, <em>any</em> usage of {@code @NonNull} results in a warning / error.
|
||||
*/
|
||||
ConfigurationKey<FlagUsageType> FLAG_USAGE = new ConfigurationKey<FlagUsageType>("lombok.NonNull.flagUsage") {};
|
||||
|
||||
/**
|
||||
* lombok configuration: {@code lombok.NonNull.noNullChecks} = {@code true} | {@code false}.
|
||||
*
|
||||
* If set, the lombok feature of generating a null-checking if statement for all parameters annotated with {@code @NonNull} is disabled.
|
||||
*/
|
||||
ConfigurationKey<Boolean> NO_NULL_CHECKS = new ConfigurationKey<Boolean>("lombok.NonNull.noNullChecks") {};
|
||||
}
|
||||
@@ -27,6 +27,7 @@ import static lombok.eclipse.handlers.EclipseHandlerUtil.*;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import lombok.ConfigurationKeys;
|
||||
import lombok.NonNull;
|
||||
import lombok.core.AST.Kind;
|
||||
import lombok.core.AnnotationValues;
|
||||
@@ -58,7 +59,7 @@ import org.mangosdk.spi.ProviderFor;
|
||||
@HandlerPriority(value = 512) // 2^9; onParameter=@__(@NonNull) has to run first.
|
||||
public class HandleNonNull extends EclipseAnnotationHandler<NonNull> {
|
||||
@Override public void handle(AnnotationValues<NonNull> annotation, Annotation ast, EclipseNode annotationNode) {
|
||||
handleFlagUsage(annotationNode, NonNull.FLAG_USAGE, "@NonNull");
|
||||
handleFlagUsage(annotationNode, ConfigurationKeys.NON_NULL_FLAG_USAGE, "@NonNull");
|
||||
|
||||
if (annotationNode.up().getKind() == Kind.FIELD) {
|
||||
// This is meaningless unless the field is used to generate a method (@Setter, @RequiredArgsConstructor, etc),
|
||||
|
||||
@@ -43,6 +43,7 @@ import com.sun.tools.javac.tree.JCTree.JCTry;
|
||||
import com.sun.tools.javac.tree.JCTree.JCVariableDecl;
|
||||
import com.sun.tools.javac.util.List;
|
||||
|
||||
import lombok.ConfigurationKeys;
|
||||
import lombok.NonNull;
|
||||
import lombok.core.AnnotationValues;
|
||||
import lombok.core.HandlerPriority;
|
||||
@@ -56,7 +57,7 @@ import static lombok.javac.JavacTreeMaker.TreeTag.*;
|
||||
@HandlerPriority(value = 512) // 2^9; onParameter=@__(@NonNull) has to run first.
|
||||
public class HandleNonNull extends JavacAnnotationHandler<NonNull> {
|
||||
@Override public void handle(AnnotationValues<NonNull> annotation, JCAnnotation ast, JavacNode annotationNode) {
|
||||
handleFlagUsage(annotationNode, NonNull.FLAG_USAGE, "@NonNull");
|
||||
handleFlagUsage(annotationNode, ConfigurationKeys.NON_NULL_FLAG_USAGE, "@NonNull");
|
||||
|
||||
if (annotationNode.up().getKind() == Kind.FIELD) {
|
||||
// This is meaningless unless the field is used to generate a method (@Setter, @RequiredArgsConstructor, etc),
|
||||
|
||||
Reference in new issue
Block a user