mirror of
https://github.com/tiennm99/lombok.git
synced 2026-10-03 09:13:36 +00:00
This commit is contained in:
1 parent
e69a991fcb
commit
42f36e66fe
15 files changed
+209
-18
No files matched your search
@@ -400,6 +400,7 @@ lombok.launch.AnnotationProcessorHider$ClaimingProcessor,isolating</echo>
|
||||
<srcdir dir="test/core/src" test="true" />
|
||||
<srcdir dir="test/bytecode/src" test="true" />
|
||||
<srcdir dir="test/configuration/src" test="true" />
|
||||
<srcdir dir="test/stubs" test="true" />
|
||||
</module>
|
||||
<settings>
|
||||
<url url="https://projectlombok.org/downloads/lombok.intellij.settings" />
|
||||
@@ -432,6 +433,7 @@ lombok.launch.AnnotationProcessorHider$ClaimingProcessor,isolating</echo>
|
||||
<srcdir dir="test/core/src" />
|
||||
<srcdir dir="test/bytecode/src" />
|
||||
<srcdir dir="test/configuration/src" />
|
||||
<srcdir dir="test/stubs" />
|
||||
<conf name="${eclipse.build.configname}" sources="contrib" />
|
||||
<conf name="test" sources="contrib" />
|
||||
<local org="org.projectlombok" name="lombok.patcher" dir="../lombok.patcher" />
|
||||
@@ -551,6 +553,10 @@ ${sourceWarning}</echo>
|
||||
<src path="test/bytecode/src" />
|
||||
<src path="test/configuration/src" />
|
||||
</ivy:compile>
|
||||
<mkdir dir="build/teststubs" />
|
||||
<ivy:compile destdir="build/teststubs" source="1.6" target="1.6" ecj="true" nowarn="true">
|
||||
<src path="test/stubs" />
|
||||
</ivy:compile>
|
||||
</target>
|
||||
|
||||
<target name="test-ecj" depends="dist, contrib, setupJavaOracle8TestEnvironment" unless="tests.skip">
|
||||
@@ -728,6 +734,7 @@ You can also create your own by writing a 'testenvironment.properties' file. The
|
||||
<classpath path="${test.location.javac}" />
|
||||
<classpath path="build/lombok" />
|
||||
<classpath path="build/tests" />
|
||||
<classpath path="build/teststubs" />
|
||||
<batchtest>
|
||||
<fileset dir="test/core/src">
|
||||
<include name="lombok/RunAllTests.java" />
|
||||
@@ -747,6 +754,7 @@ You can also create your own by writing a 'testenvironment.properties' file. The
|
||||
<classpath path="${test.location.javac}" />
|
||||
<classpath path="build/lombok" />
|
||||
<classpath path="build/tests" />
|
||||
<classpath path="build/teststubs" />
|
||||
<batchtest>
|
||||
<fileset dir="test/core/src">
|
||||
<include name="lombok/RunAllTests.java" />
|
||||
|
||||
@@ -6,6 +6,7 @@ Lombok Changelog
|
||||
* FEATURE: You can now suppress generation of the `builder` method when using `@Builder`; usually because you're only interested in the `toBuilder` method. As a convenience we won't emit warnings about missing `@Builder.Default` annotations when you do this. [Issue #2046](https://github.com/rzwitserloot/lombok/issues/2046)
|
||||
* FEATURE: You can now change the access modifier of generated builder classes. [Issue #2083](https://github.com/rzwitserloot/lombok/issues/2083).
|
||||
* FEATURE: When using `@NonNull`, or any other annotation that would result in a null-check, you can configure to generate an assert statement instead. [Issue #2078](https://github.com/rzwitserloot/lombok/issues/2078).
|
||||
* FEATURE: Lombok now knows exactly how to treat `@com.fasterxml.jackson.annotation.JsonProperty` and will copy it to the right places for example when making builders. [Issue #1961](https://github.com/rzwitserloot/lombok/issues/1961) [Issue #1981](https://github.com/rzwitserloot/lombok/issues/1981).
|
||||
* PLATFORM: A few lombok features (most notably delombok) failed on JDK12. [Issue #2082](https://github.com/rzwitserloot/lombok/issues/2082)
|
||||
* BUGFIX: var/val on methods that return an intersection type would now work in Eclipse. [Issue #1986](https://github.com/rzwitserloot/lombok/issues/1986)
|
||||
* BUGFIX: Fix for java6 regression if a field has javadoc. [Issue #2066](https://github.com/rzwitserloot/lombok/issues/2066)
|
||||
|
||||
@@ -76,7 +76,7 @@ public class HandlerUtil {
|
||||
return 43;
|
||||
}
|
||||
|
||||
public static final List<String> NONNULL_ANNOTATIONS, BASE_COPYABLE_ANNOTATIONS;
|
||||
public static final List<String> NONNULL_ANNOTATIONS, BASE_COPYABLE_ANNOTATIONS, COPY_TO_SETTER_ANNOTATIONS;
|
||||
static {
|
||||
NONNULL_ANNOTATIONS = Collections.unmodifiableList(Arrays.asList(new String[] {
|
||||
"android.annotation.NonNull",
|
||||
@@ -92,7 +92,7 @@ public class HandlerUtil {
|
||||
"org.jetbrains.annotations.NotNull",
|
||||
"org.jmlspecs.annotation.NonNull",
|
||||
"org.netbeans.api.annotations.common.NonNull",
|
||||
"org.springframework.lang.NonNull"
|
||||
"org.springframework.lang.NonNull",
|
||||
}));
|
||||
BASE_COPYABLE_ANNOTATIONS = Collections.unmodifiableList(Arrays.asList(new String[] {
|
||||
"android.support.annotation.NonNull",
|
||||
@@ -298,8 +298,11 @@ public class HandlerUtil {
|
||||
"org.jetbrains.annotations.NotNull",
|
||||
"org.jetbrains.annotations.Nullable",
|
||||
"org.springframework.lang.NonNull",
|
||||
"org.springframework.lang.Nullable"
|
||||
"org.springframework.lang.Nullable",
|
||||
}));
|
||||
COPY_TO_SETTER_ANNOTATIONS = Collections.unmodifiableList(Arrays.asList(new String[] {
|
||||
"com.fasterxml.jackson.annotation.JsonProperty",
|
||||
}));
|
||||
}
|
||||
|
||||
/** Checks if the given name is a valid identifier.
|
||||
|
||||
@@ -649,6 +649,15 @@ public class EclipseHandlerUtil {
|
||||
return result == null ? null : result.toArray(new Annotation[0]);
|
||||
}
|
||||
|
||||
public static Annotation[] mergeAnnotations(Annotation[] a, Annotation[] b) {
|
||||
if (a == null || a.length == 0) return (b == null || b.length == 0) ? null : b;
|
||||
if (b == null || b.length == 0) return a.length == 0 ? null : a;
|
||||
Annotation[] c = new Annotation[a.length + b.length];
|
||||
System.arraycopy(a, 0, c, 0, a.length);
|
||||
System.arraycopy(b, 0, c, a.length, b.length);
|
||||
return c;
|
||||
}
|
||||
|
||||
public static boolean hasAnnotation(Class<? extends java.lang.annotation.Annotation> type, EclipseNode node) {
|
||||
if (node == null) return false;
|
||||
if (type == null) return false;
|
||||
@@ -765,6 +774,26 @@ public class EclipseHandlerUtil {
|
||||
return result.toArray(EMPTY_ANNOTATIONS_ARRAY);
|
||||
}
|
||||
|
||||
/**
|
||||
* Searches the given field node for annotations that are specifically intentioned to be copied to the setter.
|
||||
*/
|
||||
public static Annotation[] findCopyableToSetterAnnotations(EclipseNode node) {
|
||||
AbstractVariableDeclaration avd = (AbstractVariableDeclaration) node.get();
|
||||
if (avd.annotations == null) return EMPTY_ANNOTATIONS_ARRAY;
|
||||
List<Annotation> result = new ArrayList<Annotation>();
|
||||
|
||||
for (Annotation annotation : avd.annotations) {
|
||||
TypeReference typeRef = annotation.type;
|
||||
if (typeRef != null && typeRef.getTypeName() != null) {
|
||||
for (String bn : COPY_TO_SETTER_ANNOTATIONS) if (typeMatches(bn, node, typeRef)) {
|
||||
result.add(annotation);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result.toArray(EMPTY_ANNOTATIONS_ARRAY);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the provided annotation type is likely to be the intended type for the given annotation node.
|
||||
*
|
||||
|
||||
@@ -476,7 +476,7 @@ public class HandleBuilder extends EclipseAnnotationHandler<Builder> {
|
||||
}
|
||||
|
||||
for (BuilderFieldData bfd : builderFields) {
|
||||
makeSetterMethodsForBuilder(builderType, bfd, annotationNode, fluent, chain, accessForInners);
|
||||
makeSetterMethodsForBuilder(builderType, bfd, annotationNode, fluent, chain, accessForInners, bfd.originalFieldNode);
|
||||
}
|
||||
|
||||
{
|
||||
@@ -802,16 +802,16 @@ public class HandleBuilder extends EclipseAnnotationHandler<Builder> {
|
||||
|
||||
private static final AbstractMethodDeclaration[] EMPTY = {};
|
||||
|
||||
public void makeSetterMethodsForBuilder(EclipseNode builderType, BuilderFieldData bfd, EclipseNode sourceNode, boolean fluent, boolean chain, AccessLevel access) {
|
||||
public void makeSetterMethodsForBuilder(EclipseNode builderType, BuilderFieldData bfd, EclipseNode sourceNode, boolean fluent, boolean chain, AccessLevel access, EclipseNode originalFieldNode) {
|
||||
boolean deprecate = isFieldDeprecated(bfd.originalFieldNode);
|
||||
if (bfd.singularData == null || bfd.singularData.getSingularizer() == null) {
|
||||
makeSimpleSetterMethodForBuilder(builderType, deprecate, bfd.createdFields.get(0), bfd.nameOfSetFlag, sourceNode, fluent, chain, bfd.annotations, access);
|
||||
makeSimpleSetterMethodForBuilder(builderType, deprecate, bfd.createdFields.get(0), bfd.nameOfSetFlag, sourceNode, fluent, chain, bfd.annotations, access, originalFieldNode);
|
||||
} else {
|
||||
bfd.singularData.getSingularizer().generateMethods(bfd.singularData, deprecate, builderType, fluent, chain, access);
|
||||
}
|
||||
}
|
||||
|
||||
private void makeSimpleSetterMethodForBuilder(EclipseNode builderType, boolean deprecate, EclipseNode fieldNode, char[] nameOfSetFlag, EclipseNode sourceNode, boolean fluent, boolean chain, Annotation[] annotations, AccessLevel access) {
|
||||
private void makeSimpleSetterMethodForBuilder(EclipseNode builderType, boolean deprecate, EclipseNode fieldNode, char[] nameOfSetFlag, EclipseNode sourceNode, boolean fluent, boolean chain, Annotation[] annotations, AccessLevel access, EclipseNode originalFieldNode) {
|
||||
TypeDeclaration td = (TypeDeclaration) builderType.get();
|
||||
AbstractMethodDeclaration[] existing = td.methods;
|
||||
if (existing == null) existing = EMPTY;
|
||||
@@ -827,8 +827,11 @@ public class HandleBuilder extends EclipseAnnotationHandler<Builder> {
|
||||
|
||||
String setterName = fluent ? fieldNode.getName() : HandlerUtil.buildAccessorName("set", fieldNode.getName());
|
||||
|
||||
List<Annotation> methodAnnsList = Collections.<Annotation>emptyList();
|
||||
Annotation[] methodAnns = EclipseHandlerUtil.findCopyableToSetterAnnotations(originalFieldNode);
|
||||
if (methodAnns != null && methodAnns.length > 0) methodAnnsList = Arrays.asList(methodAnns);
|
||||
MethodDeclaration setter = HandleSetter.createSetter(td, deprecate, fieldNode, setterName, nameOfSetFlag, chain, toEclipseModifier(access),
|
||||
sourceNode, Collections.<Annotation>emptyList(), annotations != null ? Arrays.asList(copyAnnotations(sourceNode.get(), annotations)) : Collections.<Annotation>emptyList());
|
||||
sourceNode, methodAnnsList, annotations != null ? Arrays.asList(copyAnnotations(sourceNode.get(), annotations)) : Collections.<Annotation>emptyList());
|
||||
injectMethod(builderType, setter);
|
||||
}
|
||||
|
||||
|
||||
@@ -220,7 +220,7 @@ public class HandleSetter extends EclipseAnnotationHandler<Setter> {
|
||||
if (isFieldDeprecated(fieldNode) || deprecate) {
|
||||
deprecated = new Annotation[] { generateDeprecatedAnnotation(source) };
|
||||
}
|
||||
method.annotations = copyAnnotations(source, onMethod.toArray(new Annotation[0]), deprecated);
|
||||
method.annotations = mergeAnnotations(copyAnnotations(source, onMethod.toArray(new Annotation[0]), deprecated), findCopyableToSetterAnnotations(fieldNode));
|
||||
Argument param = new Argument(field.name, p, copyType(field.type, source), Modifier.FINAL);
|
||||
param.sourceStart = pS; param.sourceEnd = pE;
|
||||
method.arguments = new Argument[] { param };
|
||||
|
||||
@@ -886,13 +886,13 @@ public class HandleSuperBuilder extends EclipseAnnotationHandler<SuperBuilder> {
|
||||
};
|
||||
|
||||
if (bfd.singularData == null || bfd.singularData.getSingularizer() == null) {
|
||||
generateSimpleSetterMethodForBuilder(builderType, deprecate, bfd.createdFields.get(0), bfd.nameOfSetFlag, returnTypeMaker.make(), returnStatementMaker.make(), sourceNode, bfd.annotations);
|
||||
generateSimpleSetterMethodForBuilder(builderType, deprecate, bfd.createdFields.get(0), bfd.nameOfSetFlag, returnTypeMaker.make(), returnStatementMaker.make(), sourceNode, bfd.annotations, bfd.originalFieldNode);
|
||||
} else {
|
||||
bfd.singularData.getSingularizer().generateMethods(bfd.singularData, deprecate, builderType, true, returnTypeMaker, returnStatementMaker, AccessLevel.PUBLIC);
|
||||
}
|
||||
}
|
||||
|
||||
private void generateSimpleSetterMethodForBuilder(EclipseNode builderType, boolean deprecate, EclipseNode fieldNode, char[] nameOfSetFlag, TypeReference returnType, Statement returnStatement, EclipseNode sourceNode, Annotation[] annosOnParam) {
|
||||
private void generateSimpleSetterMethodForBuilder(EclipseNode builderType, boolean deprecate, EclipseNode fieldNode, char[] nameOfSetFlag, TypeReference returnType, Statement returnStatement, EclipseNode sourceNode, Annotation[] annosOnParam, EclipseNode originalFieldNode) {
|
||||
TypeDeclaration td = (TypeDeclaration) builderType.get();
|
||||
AbstractMethodDeclaration[] existing = td.methods;
|
||||
if (existing == null) existing = EMPTY_METHODS;
|
||||
@@ -908,8 +908,11 @@ public class HandleSuperBuilder extends EclipseAnnotationHandler<SuperBuilder> {
|
||||
|
||||
String setterName = fieldNode.getName();
|
||||
|
||||
List<Annotation> methodAnnsList = Collections.<Annotation>emptyList();
|
||||
Annotation[] methodAnns = EclipseHandlerUtil.findCopyableToSetterAnnotations(originalFieldNode);
|
||||
if (methodAnns != null && methodAnns.length > 0) methodAnnsList = Arrays.asList(methodAnns);
|
||||
MethodDeclaration setter = HandleSetter.createSetter(td, deprecate, fieldNode, setterName, nameOfSetFlag, returnType, returnStatement, ClassFileConstants.AccPublic,
|
||||
sourceNode, Collections.<Annotation>emptyList(), annosOnParam != null ? Arrays.asList(copyAnnotations(sourceNode.get(), annosOnParam)) : Collections.<Annotation>emptyList());
|
||||
sourceNode, methodAnnsList, annosOnParam != null ? Arrays.asList(copyAnnotations(sourceNode.get(), annosOnParam)) : Collections.<Annotation>emptyList());
|
||||
injectMethod(builderType, setter);
|
||||
}
|
||||
|
||||
|
||||
@@ -750,10 +750,11 @@ public class HandleBuilder extends JavacAnnotationHandler<Builder> {
|
||||
|
||||
JavacTreeMaker maker = fieldNode.getTreeMaker();
|
||||
|
||||
JCMethodDecl newMethod = HandleSetter.createSetter(toJavacModifier(access), deprecate, fieldNode, maker, setterName, nameOfSetFlag, chain, source, List.<JCAnnotation>nil(), annosOnParam);
|
||||
List<JCAnnotation> methodAnns = JavacHandlerUtil.findCopyableToSetterAnnotations(originalFieldNode);
|
||||
JCMethodDecl newMethod = HandleSetter.createSetter(toJavacModifier(access), deprecate, fieldNode, maker, setterName, nameOfSetFlag, chain, source, methodAnns, annosOnParam);
|
||||
recursiveSetGeneratedBy(newMethod, source.get(), builderType.getContext());
|
||||
copyJavadoc(originalFieldNode, newMethod, CopyJavadoc.SETTER);
|
||||
|
||||
|
||||
injectMethod(builderType, newMethod);
|
||||
}
|
||||
|
||||
|
||||
@@ -261,7 +261,7 @@ public class HandleSetter extends JavacAnnotationHandler<Setter> {
|
||||
List<JCExpression> throwsClauses = List.nil();
|
||||
JCExpression annotationMethodDefaultValue = null;
|
||||
|
||||
List<JCAnnotation> annsOnMethod = copyAnnotations(onMethod);
|
||||
List<JCAnnotation> annsOnMethod = mergeAnnotations(copyAnnotations(onMethod), findCopyableToSetterAnnotations(field));
|
||||
if (isFieldDeprecated(field) || deprecate) {
|
||||
annsOnMethod = annsOnMethod.prepend(treeMaker.Annotation(genJavaLangTypeRef(field, "Deprecated"), List.<JCExpression>nil()));
|
||||
}
|
||||
|
||||
@@ -861,13 +861,13 @@ public class HandleSuperBuilder extends JavacAnnotationHandler<SuperBuilder> {
|
||||
}};
|
||||
|
||||
if (fieldNode.singularData == null || fieldNode.singularData.getSingularizer() == null) {
|
||||
generateSimpleSetterMethodForBuilder(builderType, deprecate, fieldNode.createdFields.get(0), fieldNode.nameOfSetFlag, source, true, returnTypeMaker.make(), returnStatementMaker.make(), fieldNode.annotations);
|
||||
generateSimpleSetterMethodForBuilder(builderType, deprecate, fieldNode.createdFields.get(0), fieldNode.nameOfSetFlag, source, true, returnTypeMaker.make(), returnStatementMaker.make(), fieldNode.annotations, fieldNode.originalFieldNode);
|
||||
} else {
|
||||
fieldNode.singularData.getSingularizer().generateMethods(fieldNode.singularData, deprecate, builderType, source.get(), true, returnTypeMaker, returnStatementMaker, AccessLevel.PUBLIC);
|
||||
}
|
||||
}
|
||||
|
||||
private void generateSimpleSetterMethodForBuilder(JavacNode builderType, boolean deprecate, JavacNode fieldNode, Name nameOfSetFlag, JavacNode source, boolean fluent, JCExpression returnType, JCStatement returnStatement, List<JCAnnotation> annosOnParam) {
|
||||
private void generateSimpleSetterMethodForBuilder(JavacNode builderType, boolean deprecate, JavacNode fieldNode, Name nameOfSetFlag, JavacNode source, boolean fluent, JCExpression returnType, JCStatement returnStatement, List<JCAnnotation> annosOnParam, JavacNode originalFieldNode) {
|
||||
Name fieldName = ((JCVariableDecl) fieldNode.get()).name;
|
||||
|
||||
for (JavacNode child : builderType.down()) {
|
||||
@@ -881,7 +881,8 @@ public class HandleSuperBuilder extends JavacAnnotationHandler<SuperBuilder> {
|
||||
|
||||
JavacTreeMaker maker = fieldNode.getTreeMaker();
|
||||
|
||||
JCMethodDecl newMethod = HandleSetter.createSetter(Flags.PUBLIC, deprecate, fieldNode, maker, setterName, nameOfSetFlag, returnType, returnStatement, source, List.<JCAnnotation>nil(), annosOnParam);
|
||||
List<JCAnnotation> methodAnns = JavacHandlerUtil.findCopyableToSetterAnnotations(originalFieldNode);
|
||||
JCMethodDecl newMethod = HandleSetter.createSetter(Flags.PUBLIC, deprecate, fieldNode, maker, setterName, nameOfSetFlag, returnType, returnStatement, source, methodAnns, annosOnParam);
|
||||
|
||||
injectMethod(builderType, newMethod);
|
||||
}
|
||||
|
||||
@@ -1473,6 +1473,44 @@ public class JavacHandlerUtil {
|
||||
return result.toList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Searches the given field node for annotations that are specifically intentioned to be copied to the setter.
|
||||
*/
|
||||
public static List<JCAnnotation> findCopyableToSetterAnnotations(JavacNode node) {
|
||||
JCAnnotation anno = null;
|
||||
String annoName = null;
|
||||
for (JavacNode child : node.down()) {
|
||||
if (child.getKind() == Kind.ANNOTATION) {
|
||||
if (anno != null) {
|
||||
annoName = "";
|
||||
break;
|
||||
}
|
||||
JCAnnotation annotation = (JCAnnotation) child.get();
|
||||
annoName = annotation.annotationType.toString();
|
||||
anno = annotation;
|
||||
}
|
||||
}
|
||||
|
||||
if (annoName == null) return List.nil();
|
||||
|
||||
if (!annoName.isEmpty()) {
|
||||
for (String bn : COPY_TO_SETTER_ANNOTATIONS) if (typeMatches(bn, node, anno.annotationType)) return List.of(anno);
|
||||
}
|
||||
|
||||
ListBuffer<JCAnnotation> result = new ListBuffer<JCAnnotation>();
|
||||
for (JavacNode child : node.down()) {
|
||||
if (child.getKind() == Kind.ANNOTATION) {
|
||||
JCAnnotation annotation = (JCAnnotation) child.get();
|
||||
boolean match = false;
|
||||
if (!match) for (String bn : COPY_TO_SETTER_ANNOTATIONS) if (typeMatches(bn, node, annotation.annotationType)) {
|
||||
result.append(annotation);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result.toList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a new statement that checks if the given variable is null, and if so, throws a configured exception with the
|
||||
* variable name as message.
|
||||
@@ -1713,6 +1751,15 @@ public class JavacHandlerUtil {
|
||||
return out.toList();
|
||||
}
|
||||
|
||||
static List<JCAnnotation> mergeAnnotations(List<JCAnnotation> a, List<JCAnnotation> b) {
|
||||
if (a == null || a.isEmpty()) return b;
|
||||
if (b == null || b.isEmpty()) return a;
|
||||
ListBuffer<JCAnnotation> out = new ListBuffer<JCAnnotation>();
|
||||
for (JCAnnotation ann : a) out.append(ann);
|
||||
for (JCAnnotation ann : b) out.append(ann);
|
||||
return out.toList();
|
||||
}
|
||||
|
||||
static boolean isClass(JavacNode typeNode) {
|
||||
return isClassAndDoesNotHaveFlags(typeNode, Flags.INTERFACE | Flags.ENUM | Flags.ANNOTATION);
|
||||
}
|
||||
|
||||
@@ -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 JsonProperty {
|
||||
String value();
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
public class JacksonJsonProperty {
|
||||
@JsonProperty("kebab-case-prop")
|
||||
public String kebabCaseProp;
|
||||
@java.lang.SuppressWarnings("all")
|
||||
JacksonJsonProperty(final String kebabCaseProp) {
|
||||
this.kebabCaseProp = kebabCaseProp;
|
||||
}
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public static class JacksonJsonPropertyBuilder {
|
||||
@java.lang.SuppressWarnings("all")
|
||||
private String kebabCaseProp;
|
||||
@java.lang.SuppressWarnings("all")
|
||||
JacksonJsonPropertyBuilder() {
|
||||
}
|
||||
@JsonProperty("kebab-case-prop")
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public JacksonJsonPropertyBuilder kebabCaseProp(final String kebabCaseProp) {
|
||||
this.kebabCaseProp = kebabCaseProp;
|
||||
return this;
|
||||
}
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public JacksonJsonProperty build() {
|
||||
return new JacksonJsonProperty(kebabCaseProp);
|
||||
}
|
||||
@java.lang.Override
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public java.lang.String toString() {
|
||||
return "JacksonJsonProperty.JacksonJsonPropertyBuilder(kebabCaseProp=" + this.kebabCaseProp + ")";
|
||||
}
|
||||
}
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public static JacksonJsonPropertyBuilder builder() {
|
||||
return new JacksonJsonPropertyBuilder();
|
||||
}
|
||||
@JsonProperty("kebab-case-prop")
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public void setKebabCaseProp(final String kebabCaseProp) {
|
||||
this.kebabCaseProp = kebabCaseProp;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Builder;
|
||||
import lombok.Setter;
|
||||
public @Builder class JacksonJsonProperty {
|
||||
public static @java.lang.SuppressWarnings("all") class JacksonJsonPropertyBuilder {
|
||||
private @java.lang.SuppressWarnings("all") String kebabCaseProp;
|
||||
@java.lang.SuppressWarnings("all") JacksonJsonPropertyBuilder() {
|
||||
super();
|
||||
}
|
||||
public @JsonProperty("kebab-case-prop") @java.lang.SuppressWarnings("all") JacksonJsonPropertyBuilder kebabCaseProp(final String kebabCaseProp) {
|
||||
this.kebabCaseProp = kebabCaseProp;
|
||||
return this;
|
||||
}
|
||||
public @java.lang.SuppressWarnings("all") JacksonJsonProperty build() {
|
||||
return new JacksonJsonProperty(kebabCaseProp);
|
||||
}
|
||||
public @java.lang.Override @java.lang.SuppressWarnings("all") java.lang.String toString() {
|
||||
return (("JacksonJsonProperty.JacksonJsonPropertyBuilder(kebabCaseProp=" + this.kebabCaseProp) + ")");
|
||||
}
|
||||
}
|
||||
public @JsonProperty("kebab-case-prop") @Setter String kebabCaseProp;
|
||||
@java.lang.SuppressWarnings("all") JacksonJsonProperty(final String kebabCaseProp) {
|
||||
super();
|
||||
this.kebabCaseProp = kebabCaseProp;
|
||||
}
|
||||
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) {
|
||||
this.kebabCaseProp = kebabCaseProp;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Builder;
|
||||
import lombok.Setter;
|
||||
|
||||
@Builder
|
||||
public class JacksonJsonProperty {
|
||||
@JsonProperty("kebab-case-prop")
|
||||
@Setter
|
||||
public String kebabCaseProp;
|
||||
}
|
||||
Reference in new issue
Block a user