diff --git a/src/core/lombok/core/handlers/HandlerUtil.java b/src/core/lombok/core/handlers/HandlerUtil.java index 6e28f65dc4..21a3a216f1 100644 --- a/src/core/lombok/core/handlers/HandlerUtil.java +++ b/src/core/lombok/core/handlers/HandlerUtil.java @@ -302,6 +302,7 @@ public static int primeForNull() { })); COPY_TO_SETTER_ANNOTATIONS = Collections.unmodifiableList(Arrays.asList(new String[] { "com.fasterxml.jackson.annotation.JsonProperty", + "com.fasterxml.jackson.annotation.JsonSetter", })); } diff --git a/test/stubs/com/fasterxml/jackson/annotation/JsonSetter.java b/test/stubs/com/fasterxml/jackson/annotation/JsonSetter.java new file mode 100644 index 0000000000..2886a6f447 --- /dev/null +++ b/test/stubs/com/fasterxml/jackson/annotation/JsonSetter.java @@ -0,0 +1,12 @@ +package com.fasterxml.jackson.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target({ElementType.ANNOTATION_TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER}) +@Retention(RetentionPolicy.RUNTIME) +public @interface JsonSetter { + Nulls nulls(); +} diff --git a/test/stubs/com/fasterxml/jackson/annotation/Nulls.java b/test/stubs/com/fasterxml/jackson/annotation/Nulls.java new file mode 100644 index 0000000000..d40bd46dac --- /dev/null +++ b/test/stubs/com/fasterxml/jackson/annotation/Nulls.java @@ -0,0 +1,5 @@ +package com.fasterxml.jackson.annotation; + +public enum Nulls { + SKIP; +} diff --git a/test/transform/resource/after-delombok/JacksonJsonProperty.java b/test/transform/resource/after-delombok/JacksonJsonProperty.java index 842ba29842..16a8039e25 100644 --- a/test/transform/resource/after-delombok/JacksonJsonProperty.java +++ b/test/transform/resource/after-delombok/JacksonJsonProperty.java @@ -1,6 +1,9 @@ import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; public class JacksonJsonProperty { @JsonProperty("kebab-case-prop") + @JsonSetter(nulls = Nulls.SKIP) public String kebabCaseProp; @java.lang.SuppressWarnings("all") JacksonJsonProperty(final String kebabCaseProp) { @@ -14,6 +17,7 @@ public static class JacksonJsonPropertyBuilder { JacksonJsonPropertyBuilder() { } @JsonProperty("kebab-case-prop") + @JsonSetter(nulls = Nulls.SKIP) @java.lang.SuppressWarnings("all") public JacksonJsonPropertyBuilder kebabCaseProp(final String kebabCaseProp) { this.kebabCaseProp = kebabCaseProp; @@ -34,6 +38,7 @@ public static JacksonJsonPropertyBuilder builder() { return new JacksonJsonPropertyBuilder(); } @JsonProperty("kebab-case-prop") + @JsonSetter(nulls = Nulls.SKIP) @java.lang.SuppressWarnings("all") public void setKebabCaseProp(final String kebabCaseProp) { this.kebabCaseProp = kebabCaseProp; diff --git a/test/transform/resource/after-ecj/JacksonJsonProperty.java b/test/transform/resource/after-ecj/JacksonJsonProperty.java index 73049b2af9..c048525113 100644 --- a/test/transform/resource/after-ecj/JacksonJsonProperty.java +++ b/test/transform/resource/after-ecj/JacksonJsonProperty.java @@ -1,4 +1,6 @@ import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import lombok.Builder; import lombok.Setter; public @Builder class JacksonJsonProperty { @@ -7,7 +9,7 @@ @java.lang.SuppressWarnings("all") JacksonJsonPropertyBuilder() { super(); } - public @JsonProperty("kebab-case-prop") @java.lang.SuppressWarnings("all") JacksonJsonPropertyBuilder kebabCaseProp(final String kebabCaseProp) { + public @JsonProperty("kebab-case-prop") @JsonSetter(nulls = Nulls.SKIP) @java.lang.SuppressWarnings("all") JacksonJsonPropertyBuilder kebabCaseProp(final String kebabCaseProp) { this.kebabCaseProp = kebabCaseProp; return this; } @@ -18,7 +20,7 @@ return (("JacksonJsonProperty.JacksonJsonPropertyBuilder(kebabCaseProp=" + this.kebabCaseProp) + ")"); } } - public @JsonProperty("kebab-case-prop") @Setter String kebabCaseProp; + public @JsonProperty("kebab-case-prop") @JsonSetter(nulls = Nulls.SKIP) @Setter String kebabCaseProp; @java.lang.SuppressWarnings("all") JacksonJsonProperty(final String kebabCaseProp) { super(); this.kebabCaseProp = kebabCaseProp; @@ -26,7 +28,7 @@ public static @java.lang.SuppressWarnings("all") JacksonJsonPropertyBuilder builder() { return new JacksonJsonPropertyBuilder(); } - public @JsonProperty("kebab-case-prop") @java.lang.SuppressWarnings("all") void setKebabCaseProp(final String kebabCaseProp) { + public @JsonProperty("kebab-case-prop") @JsonSetter(nulls = Nulls.SKIP) @java.lang.SuppressWarnings("all") void setKebabCaseProp(final String kebabCaseProp) { this.kebabCaseProp = kebabCaseProp; } } \ No newline at end of file diff --git a/test/transform/resource/before/JacksonJsonProperty.java b/test/transform/resource/before/JacksonJsonProperty.java index f002dc4881..f0b7b2f28c 100644 --- a/test/transform/resource/before/JacksonJsonProperty.java +++ b/test/transform/resource/before/JacksonJsonProperty.java @@ -1,10 +1,13 @@ import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import lombok.Builder; import lombok.Setter; @Builder public class JacksonJsonProperty { @JsonProperty("kebab-case-prop") + @JsonSetter(nulls = Nulls.SKIP) @Setter public String kebabCaseProp; }