Search in sources :

Example 1 with Nulls

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();
}
Also used : MapType(com.palantir.conjure.spec.MapType) OptionalType(com.palantir.conjure.spec.OptionalType) PrimitiveType(com.palantir.conjure.spec.PrimitiveType) ListType(com.palantir.conjure.spec.ListType) Type(com.palantir.conjure.spec.Type) SetType(com.palantir.conjure.spec.SetType) MethodSpec(com.squareup.javapoet.MethodSpec) JsonSetter(com.fasterxml.jackson.annotation.JsonSetter) AnnotationSpec(com.squareup.javapoet.AnnotationSpec) Nulls(com.fasterxml.jackson.annotation.Nulls) FieldSpec(com.squareup.javapoet.FieldSpec)

Aggregations

JsonSetter (com.fasterxml.jackson.annotation.JsonSetter)1 Nulls (com.fasterxml.jackson.annotation.Nulls)1 ListType (com.palantir.conjure.spec.ListType)1 MapType (com.palantir.conjure.spec.MapType)1 OptionalType (com.palantir.conjure.spec.OptionalType)1 PrimitiveType (com.palantir.conjure.spec.PrimitiveType)1 SetType (com.palantir.conjure.spec.SetType)1 Type (com.palantir.conjure.spec.Type)1 AnnotationSpec (com.squareup.javapoet.AnnotationSpec)1 FieldSpec (com.squareup.javapoet.FieldSpec)1 MethodSpec (com.squareup.javapoet.MethodSpec)1