diff --git a/generators/java/generator-utils/src/main/java/com/fern/java/AbstractGeneratorContext.java b/generators/java/generator-utils/src/main/java/com/fern/java/AbstractGeneratorContext.java index 7319df986cd..f12392e670b 100644 --- a/generators/java/generator-utils/src/main/java/com/fern/java/AbstractGeneratorContext.java +++ b/generators/java/generator-utils/src/main/java/com/fern/java/AbstractGeneratorContext.java @@ -65,6 +65,8 @@ public final U getCustomConfig() { return customConfig; } + public abstract boolean builderNotNullChecks(); + public final T getPoetClassNameFactory() { return poetClassNameFactory; } diff --git a/generators/java/generator-utils/src/main/java/com/fern/java/generators/ObjectGenerator.java b/generators/java/generator-utils/src/main/java/com/fern/java/generators/ObjectGenerator.java index aa7192a2f91..727cef09234 100644 --- a/generators/java/generator-utils/src/main/java/com/fern/java/generators/ObjectGenerator.java +++ b/generators/java/generator-utils/src/main/java/com/fern/java/generators/ObjectGenerator.java @@ -117,7 +117,8 @@ public GeneratedObject generateFile() { generatorContext.getCustomConfig().enablePublicConstructors(), generatorContext.deserializeWithAdditionalProperties(), generatorContext.getCustomConfig().jsonInclude(), - generatorContext.getCustomConfig().disableRequiredPropertyBuilderChecks()); + generatorContext.getCustomConfig().disableRequiredPropertyBuilderChecks(), + generatorContext.builderNotNullChecks()); TypeSpec objectTypeSpec = genericObjectGenerator.generate(); JavaFile javaFile = JavaFile.builder(className.packageName(), objectTypeSpec).build(); diff --git a/generators/java/generator-utils/src/main/java/com/fern/java/generators/object/BuilderGenerator.java b/generators/java/generator-utils/src/main/java/com/fern/java/generators/object/BuilderGenerator.java index 2833b7f7ebe..cef4df2737d 100644 --- a/generators/java/generator-utils/src/main/java/com/fern/java/generators/object/BuilderGenerator.java +++ b/generators/java/generator-utils/src/main/java/com/fern/java/generators/object/BuilderGenerator.java @@ -49,13 +49,15 @@ public final class BuilderGenerator { private final boolean isSerialized; private final boolean supportAdditionalProperties; private final boolean disableRequiredPropertyBuilderChecks; + private final boolean builderNotNullChecks; public BuilderGenerator( ClassName objectClassName, List objectPropertyWithFields, boolean isSerialized, boolean supportAdditionalProperties, - boolean disableRequiredPropertyBuilderChecks) { + boolean disableRequiredPropertyBuilderChecks, + boolean builderNotNullChecks) { this.objectClassName = objectClassName; this.objectPropertyWithFields = objectPropertyWithFields.stream() .map(BuilderGenerator::maybeGetEnrichedObjectPropertyWithField) @@ -74,6 +76,7 @@ public BuilderGenerator( this.nestedBuilderClassName = objectClassName.nestedClass(NESTED_BUILDER_CLASS_NAME); this.isSerialized = isSerialized; this.supportAdditionalProperties = supportAdditionalProperties; + this.builderNotNullChecks = builderNotNullChecks; } public Optional generate() { @@ -294,7 +297,7 @@ private MethodSpec.Builder getRequiredFieldSetter( EnrichedObjectPropertyWithField enrichedObjectProperty, ClassName returnClass) { Builder parameterSpecBuilder = ParameterSpec.builder( enrichedObjectProperty.enrichedObjectProperty.poetTypeName(), enrichedObjectProperty.fieldSpec.name); - if (!enrichedObjectProperty.enrichedObjectProperty.poetTypeName().isPrimitive()) { + if (!enrichedObjectProperty.enrichedObjectProperty.poetTypeName().isPrimitive() && builderNotNullChecks) { parameterSpecBuilder.addAnnotation(ClassName.get("org.jetbrains.annotations", "NotNull")); } return MethodSpec.methodBuilder(enrichedObjectProperty.fieldSpec.name) diff --git a/generators/java/generator-utils/src/main/java/com/fern/java/generators/object/ObjectTypeSpecGenerator.java b/generators/java/generator-utils/src/main/java/com/fern/java/generators/object/ObjectTypeSpecGenerator.java index 5a44b7691a3..327001b56c6 100644 --- a/generators/java/generator-utils/src/main/java/com/fern/java/generators/object/ObjectTypeSpecGenerator.java +++ b/generators/java/generator-utils/src/main/java/com/fern/java/generators/object/ObjectTypeSpecGenerator.java @@ -32,6 +32,7 @@ public final class ObjectTypeSpecGenerator { private final boolean publicConstructorsEnabled; private final boolean supportAdditionalProperties; private final boolean disableRequiredPropertyBuilderChecks; + private final boolean builderNotNullChecks; public ObjectTypeSpecGenerator( ClassName objectClassName, @@ -42,11 +43,13 @@ public ObjectTypeSpecGenerator( boolean publicConstructorsEnabled, boolean supportAdditionalProperties, ICustomConfig.JsonInclude jsonInclude, - Boolean disableRequiredPropertyBuilderChecks) { + Boolean disableRequiredPropertyBuilderChecks, + boolean builderNotNullChecks) { this.objectClassName = objectClassName; this.generatedObjectMapperClassName = generatedObjectMapperClassName; this.interfaces = interfaces; this.jsonInclude = jsonInclude; + this.builderNotNullChecks = builderNotNullChecks; for (ImplementsInterface implementsInterface : interfaces) { allEnrichedProperties.addAll(implementsInterface.interfaceProperties()); } @@ -199,7 +202,8 @@ private Optional generateBuilder() { allEnrichedProperties, isSerialized, supportAdditionalProperties, - disableRequiredPropertyBuilderChecks); + disableRequiredPropertyBuilderChecks, + builderNotNullChecks); return builderGenerator.generate(); } } diff --git a/generators/java/model/src/main/java/com/fern/java/model/ModelGeneratorContext.java b/generators/java/model/src/main/java/com/fern/java/model/ModelGeneratorContext.java index 57dd5deb9f4..d47a946d58e 100644 --- a/generators/java/model/src/main/java/com/fern/java/model/ModelGeneratorContext.java +++ b/generators/java/model/src/main/java/com/fern/java/model/ModelGeneratorContext.java @@ -24,4 +24,9 @@ public ModelGeneratorContext( public final boolean deserializeWithAdditionalProperties() { return false; } + + @Override + public boolean builderNotNullChecks() { + return false; + } } diff --git a/generators/java/sdk/src/main/java/com/fern/java/client/ClientGeneratorContext.java b/generators/java/sdk/src/main/java/com/fern/java/client/ClientGeneratorContext.java index 26b04231208..b68bd6e8411 100644 --- a/generators/java/sdk/src/main/java/com/fern/java/client/ClientGeneratorContext.java +++ b/generators/java/sdk/src/main/java/com/fern/java/client/ClientGeneratorContext.java @@ -22,4 +22,9 @@ public ClientGeneratorContext( public boolean deserializeWithAdditionalProperties() { return true; } + + @Override + public boolean builderNotNullChecks() { + return true; + } } diff --git a/generators/java/spring/src/main/java/com/fern/java/spring/SpringGeneratorContext.java b/generators/java/spring/src/main/java/com/fern/java/spring/SpringGeneratorContext.java index 24cf323d145..5278f191774 100644 --- a/generators/java/spring/src/main/java/com/fern/java/spring/SpringGeneratorContext.java +++ b/generators/java/spring/src/main/java/com/fern/java/spring/SpringGeneratorContext.java @@ -26,4 +26,9 @@ public SpringGeneratorContext( public boolean deserializeWithAdditionalProperties() { return false; } + + @Override + public boolean builderNotNullChecks() { + return true; + } }