use of com.fasterxml.jackson.annotation.Nulls in project conjure-java by palantir.
the class BeanBuilderGenerator method createSetter.
private MethodSpec createSetter(EnrichedField enriched, Map<com.palantir.conjure.spec.TypeName, TypeDefinition> typesMap, boolean override) {
FieldSpec field = enriched.poetSpec();
Type type = enriched.conjureDef().getType();
AnnotationSpec.Builder annotationBuilder = AnnotationSpec.builder(JsonSetter.class).addMember("value", "$S", enriched.fieldName().get());
if (type.accept(TypeVisitor.IS_OPTIONAL)) {
annotationBuilder.addMember("nulls", "$T.SKIP", Nulls.class);
} else if (isCollectionType(type)) {
annotationBuilder.addMember("nulls", "$T.SKIP", Nulls.class);
if (isOptionalInnerType(type)) {
annotationBuilder.addMember("contentNulls", "$T.AS_EMPTY", Nulls.class);
} else if (options.nonNullCollections()) {
annotationBuilder.addMember("contentNulls", "$T.FAIL", Nulls.class);
}
} else if (type.accept(TypeVisitor.IS_REFERENCE)) {
Type dealiased = TypeFunctions.toConjureTypeWithoutAliases(type, typesMap);
if (dealiased.accept(DefaultableTypeVisitor.INSTANCE)) {
annotationBuilder.addMember("nulls", "$T.AS_EMPTY", Nulls.class);
}
}
boolean shouldClearFirst = true;
MethodSpec.Builder setterBuilder = BeanBuilderAuxiliarySettersUtils.publicSetter(enriched, builderClass).addParameter(Parameters.nonnullParameter(BeanBuilderAuxiliarySettersUtils.widenParameterIfPossible(field.type, type, typeMapper), field.name)).addCode(verifyNotBuilt()).addCode(typeAwareAssignment(enriched, type, shouldClearFirst));
if (enriched.isPrimitive()) {
setterBuilder.addCode("this.$L = true;", deriveFieldInitializedName(enriched));
}
return setterBuilder.addStatement("return this").addAnnotations(ConjureAnnotations.override(override)).addAnnotation(annotationBuilder.build()).build();
}
Aggregations