aboutsummaryrefslogtreecommitdiff
path: root/src/core/lombok/Singular.java
diff options
context:
space:
mode:
authorReinier Zwitserloot <r.zwitserloot@projectlombok.org>2020-01-18 03:10:07 +0100
committerReinier Zwitserloot <r.zwitserloot@projectlombok.org>2020-01-28 16:21:39 +0100
commit91a40b83125808d3684ce07c5cb4a2927d0b979c (patch)
treeee1105aa16d2db522e26ea16cf11579fee81d893 /src/core/lombok/Singular.java
parent6cc74e42295b6138629c6b32dd56a99ee8c2c646 (diff)
downloadlombok-91a40b83125808d3684ce07c5cb4a2927d0b979c.tar.gz
lombok-91a40b83125808d3684ce07c5cb4a2927d0b979c.tar.bz2
lombok-91a40b83125808d3684ce07c5cb4a2927d0b979c.zip
[singular][issue #2221] the plural builder method now nullchecks its argument with configurable results.
Diffstat (limited to 'src/core/lombok/Singular.java')
-rw-r--r--src/core/lombok/Singular.java64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/core/lombok/Singular.java b/src/core/lombok/Singular.java
index 67edab96..f8cf6853 100644
--- a/src/core/lombok/Singular.java
+++ b/src/core/lombok/Singular.java
@@ -27,6 +27,10 @@ import static java.lang.annotation.RetentionPolicy.*;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
+import lombok.core.LombokImmutableList;
+import lombok.core.configuration.ExampleValueString;
+import lombok.core.configuration.NullCheckExceptionType;
+
/**
* The singular annotation is used together with {@code @Builder} to create single element 'add' methods in the builder for collections.
*/
@@ -35,4 +39,64 @@ import java.lang.annotation.Target;
public @interface Singular {
/** @return The singular name of this field. If it's a normal english plural, lombok will figure it out automatically. Otherwise, this parameter is mandatory. */
String value() default "";
+
+ NullCollectionBehavior nullBehavior() default NullCollectionBehavior.NULL_POINTER_EXCEPTION;
+
+ @ExampleValueString("[NullPointerException | IllegalArgumentException | JDK | Guava | Ignore]")
+ public enum NullCollectionBehavior {
+ ILLEGAL_ARGUMENT_EXCEPTION {
+ @Override public String getExceptionType() {
+ return NullCheckExceptionType.ILLEGAL_ARGUMENT_EXCEPTION.getExceptionType();
+ }
+
+ @Override public LombokImmutableList<String> getMethod() {
+ return NullCheckExceptionType.ILLEGAL_ARGUMENT_EXCEPTION.getMethod();
+ }
+ },
+ NULL_POINTER_EXCEPTION {
+ @Override public String getExceptionType() {
+ return NullCheckExceptionType.NULL_POINTER_EXCEPTION.getExceptionType();
+ }
+
+ @Override public LombokImmutableList<String> getMethod() {
+ return NullCheckExceptionType.NULL_POINTER_EXCEPTION.getMethod();
+ }
+ },
+ JDK {
+ @Override public String getExceptionType() {
+ return NullCheckExceptionType.JDK.getExceptionType();
+ }
+
+ @Override public LombokImmutableList<String> getMethod() {
+ return NullCheckExceptionType.JDK.getMethod();
+ }
+ },
+ GUAVA {
+ @Override public String getExceptionType() {
+ return NullCheckExceptionType.GUAVA.getExceptionType();
+ }
+
+ @Override public LombokImmutableList<String> getMethod() {
+ return NullCheckExceptionType.GUAVA.getMethod();
+ }
+ },
+ IGNORE {
+ @Override public String getExceptionType() {
+ return null;
+ }
+
+ @Override public LombokImmutableList<String> getMethod() {
+ return null;
+ }
+ };
+
+
+ public String toExceptionMessage(String fieldName) {
+ return fieldName + " cannot be null";
+ }
+
+ public abstract String getExceptionType();
+
+ public abstract LombokImmutableList<String> getMethod();
+ }
}