diff options
author | Reinier Zwitserloot <r.zwitserloot@projectlombok.org> | 2020-01-18 03:10:07 +0100 |
---|---|---|
committer | Reinier Zwitserloot <r.zwitserloot@projectlombok.org> | 2020-01-28 16:21:39 +0100 |
commit | 91a40b83125808d3684ce07c5cb4a2927d0b979c (patch) | |
tree | ee1105aa16d2db522e26ea16cf11579fee81d893 /src/core/lombok/Singular.java | |
parent | 6cc74e42295b6138629c6b32dd56a99ee8c2c646 (diff) | |
download | lombok-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.java | 64 |
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(); + } } |