diff --git a/pom.xml b/pom.xml
index c6b418b..3924155 100644
--- a/pom.xml
+++ b/pom.xml
@@ -169,7 +169,7 @@
it.cavallium
data-generator-runtime
- 1.0.62
+ 1.0.63
diff --git a/src/main/java/it/cavallium/data/generator/SourcesGenerator.java b/src/main/java/it/cavallium/data/generator/SourcesGenerator.java
index f91b496..7632169 100644
--- a/src/main/java/it/cavallium/data/generator/SourcesGenerator.java
+++ b/src/main/java/it/cavallium/data/generator/SourcesGenerator.java
@@ -66,6 +66,7 @@ import org.yaml.snakeyaml.Yaml;
public class SourcesGenerator {
private static final Logger logger = LoggerFactory.getLogger(SourcesGenerator.class);
+ private static final boolean OVERRIDE_ALL_NULLABLE_METHODS = false;
private final SourcesGeneratorConfiguration configuration;
@@ -913,71 +914,73 @@ public class SourcesGenerator {
emptyMethod.returns(nullableClassType);
emptyMethod.addStatement("return NULL");
nullableTypeClass.addMethod(emptyMethod.build());
- var isEmptyMethod = MethodSpec.methodBuilder("isEmpty");
- isEmptyMethod.addModifiers(Modifier.PUBLIC);
- isEmptyMethod.addModifiers(Modifier.FINAL);
- isEmptyMethod.addAnnotation(Override.class);
- isEmptyMethod.returns(TypeName.BOOLEAN);
- isEmptyMethod.addStatement("return value == null");
- nullableTypeClass.addMethod(isEmptyMethod.build());
- var isPresentMethod = MethodSpec.methodBuilder("isPresent");
- isPresentMethod.addModifiers(Modifier.PUBLIC);
- isPresentMethod.addModifiers(Modifier.FINAL);
- isPresentMethod.addAnnotation(Override.class);
- isPresentMethod.returns(TypeName.BOOLEAN);
- isPresentMethod.addStatement("return value != null");
- nullableTypeClass.addMethod(isPresentMethod.build());
- var getMethod = MethodSpec.methodBuilder("get");
- getMethod.addModifiers(Modifier.PUBLIC);
- getMethod.addModifiers(Modifier.FINAL);
- getMethod.addException(NullPointerException.class);
- getMethod.addAnnotation(Override.class);
- getMethod.addAnnotation(NotNull.class);
- getMethod.returns(typeType);
- getMethod.beginControlFlow("if (value == null)");
- getMethod.addStatement("throw new $T()", NullPointerException.class);
- getMethod.nextControlFlow("else");
- getMethod.addStatement("return value");
- getMethod.endControlFlow();
- nullableTypeClass.addMethod(getMethod.build());
- var orElseMethod = MethodSpec.methodBuilder("orElse");
- orElseMethod.addParameter(ParameterSpec
- .builder(typeType, "defaultValue")
- .addAnnotation(NotNull.class)
- .build());
- orElseMethod.addModifiers(Modifier.PUBLIC);
- orElseMethod.addModifiers(Modifier.FINAL);
- orElseMethod.addAnnotation(Override.class);
- orElseMethod.addAnnotation(NotNull.class);
- orElseMethod.returns(typeType);
- orElseMethod.beginControlFlow("if (value == null)");
- orElseMethod.addStatement("return defaultValue");
- orElseMethod.nextControlFlow("else");
- orElseMethod.addStatement("return value");
- orElseMethod.endControlFlow();
- nullableTypeClass.addMethod(orElseMethod.build());
- var orMethodGeneric = MethodSpec.methodBuilder("or");
- orMethodGeneric.addParameter(ParameterSpec
- .builder(ParameterizedTypeName.get(
- ClassName.get("it.cavallium.data.generator", "NativeNullable"),
- WildcardTypeName.subtypeOf(typeType)), "fallback")
- .addAnnotation(NotNull.class)
- .build());
- orMethodGeneric.addModifiers(Modifier.PUBLIC);
- orMethodGeneric.addModifiers(Modifier.FINAL);
- orMethodGeneric.addAnnotation(Override.class);
- orMethodGeneric.addAnnotation(NotNull.class);
- orMethodGeneric.returns(nullableClassType);
- orMethodGeneric.beginControlFlow("if (value == null)");
- orMethodGeneric.beginControlFlow("if (fallback.getClass() == $T.class)", nullableClassType);
- orMethodGeneric.addStatement("return ($T) fallback", nullableClassType);
- orMethodGeneric.nextControlFlow("else");
- orMethodGeneric.addStatement("return ofNullable(fallback.getNullable())");
- orMethodGeneric.endControlFlow();
- orMethodGeneric.nextControlFlow("else");
- orMethodGeneric.addStatement("return this");
- orMethodGeneric.endControlFlow();
- nullableTypeClass.addMethod(orMethodGeneric.build());
+ if (OVERRIDE_ALL_NULLABLE_METHODS) {
+ var isEmptyMethod = MethodSpec.methodBuilder("isEmpty");
+ isEmptyMethod.addModifiers(Modifier.PUBLIC);
+ isEmptyMethod.addModifiers(Modifier.FINAL);
+ isEmptyMethod.addAnnotation(Override.class);
+ isEmptyMethod.returns(TypeName.BOOLEAN);
+ isEmptyMethod.addStatement("return value == null");
+ nullableTypeClass.addMethod(isEmptyMethod.build());
+ var isPresentMethod = MethodSpec.methodBuilder("isPresent");
+ isPresentMethod.addModifiers(Modifier.PUBLIC);
+ isPresentMethod.addModifiers(Modifier.FINAL);
+ isPresentMethod.addAnnotation(Override.class);
+ isPresentMethod.returns(TypeName.BOOLEAN);
+ isPresentMethod.addStatement("return value != null");
+ nullableTypeClass.addMethod(isPresentMethod.build());
+ var getMethod = MethodSpec.methodBuilder("get");
+ getMethod.addModifiers(Modifier.PUBLIC);
+ getMethod.addModifiers(Modifier.FINAL);
+ getMethod.addException(NullPointerException.class);
+ getMethod.addAnnotation(Override.class);
+ getMethod.addAnnotation(NotNull.class);
+ getMethod.returns(typeType);
+ getMethod.beginControlFlow("if (value == null)");
+ getMethod.addStatement("throw new $T()", NullPointerException.class);
+ getMethod.nextControlFlow("else");
+ getMethod.addStatement("return value");
+ getMethod.endControlFlow();
+ nullableTypeClass.addMethod(getMethod.build());
+ var orElseMethod = MethodSpec.methodBuilder("orElse");
+ orElseMethod.addParameter(ParameterSpec
+ .builder(typeType, "defaultValue")
+ .addAnnotation(NotNull.class)
+ .build());
+ orElseMethod.addModifiers(Modifier.PUBLIC);
+ orElseMethod.addModifiers(Modifier.FINAL);
+ orElseMethod.addAnnotation(Override.class);
+ orElseMethod.addAnnotation(NotNull.class);
+ orElseMethod.returns(typeType);
+ orElseMethod.beginControlFlow("if (value == null)");
+ orElseMethod.addStatement("return defaultValue");
+ orElseMethod.nextControlFlow("else");
+ orElseMethod.addStatement("return value");
+ orElseMethod.endControlFlow();
+ nullableTypeClass.addMethod(orElseMethod.build());
+ var orMethodGeneric = MethodSpec.methodBuilder("or");
+ orMethodGeneric.addParameter(ParameterSpec
+ .builder(ParameterizedTypeName.get(
+ ClassName.get("it.cavallium.data.generator", "NativeNullable"),
+ WildcardTypeName.subtypeOf(typeType)), "fallback")
+ .addAnnotation(NotNull.class)
+ .build());
+ orMethodGeneric.addModifiers(Modifier.PUBLIC);
+ orMethodGeneric.addModifiers(Modifier.FINAL);
+ orMethodGeneric.addAnnotation(Override.class);
+ orMethodGeneric.addAnnotation(NotNull.class);
+ orMethodGeneric.returns(nullableClassType);
+ orMethodGeneric.beginControlFlow("if (value == null)");
+ orMethodGeneric.beginControlFlow("if (fallback.getClass() == $T.class)", nullableClassType);
+ orMethodGeneric.addStatement("return ($T) fallback", nullableClassType);
+ orMethodGeneric.nextControlFlow("else");
+ orMethodGeneric.addStatement("return ofNullable(fallback.getNullable())");
+ orMethodGeneric.endControlFlow();
+ orMethodGeneric.nextControlFlow("else");
+ orMethodGeneric.addStatement("return this");
+ orMethodGeneric.endControlFlow();
+ nullableTypeClass.addMethod(orMethodGeneric.build());
+ }
var orMethodSpecific = MethodSpec.methodBuilder("or");
orMethodSpecific.addParameter(ParameterSpec
.builder(nullableTypeType, "fallback")
@@ -1001,22 +1004,24 @@ public class SourcesGenerator {
getNullableMethod.returns(typeType);
getNullableMethod.addStatement("return value");
nullableTypeClass.addMethod(getNullableMethod.build());
- var getNullableParam = MethodSpec.methodBuilder("getNullable");
- getNullableParam.addParameter(ParameterSpec
- .builder(typeType, "defaultValue")
- .addAnnotation(Nullable.class)
- .build());
- getNullableParam.addModifiers(Modifier.PUBLIC);
- getNullableParam.addModifiers(Modifier.FINAL);
- getNullableParam.addAnnotation(Override.class);
- getNullableParam.addAnnotation(Nullable.class);
- getNullableParam.returns(typeType);
- getNullableParam.beginControlFlow("if (value == null)");
- getNullableParam.addStatement("return defaultValue");
- getNullableParam.nextControlFlow("else");
- getNullableParam.addStatement("return value");
- getNullableParam.endControlFlow();
- nullableTypeClass.addMethod(getNullableParam.build());
+ if (OVERRIDE_ALL_NULLABLE_METHODS) {
+ var getNullableParam = MethodSpec.methodBuilder("getNullable");
+ getNullableParam.addParameter(ParameterSpec
+ .builder(typeType, "defaultValue")
+ .addAnnotation(Nullable.class)
+ .build());
+ getNullableParam.addModifiers(Modifier.PUBLIC);
+ getNullableParam.addModifiers(Modifier.FINAL);
+ getNullableParam.addAnnotation(Override.class);
+ getNullableParam.addAnnotation(Nullable.class);
+ getNullableParam.returns(typeType);
+ getNullableParam.beginControlFlow("if (value == null)");
+ getNullableParam.addStatement("return defaultValue");
+ getNullableParam.nextControlFlow("else");
+ getNullableParam.addStatement("return value");
+ getNullableParam.endControlFlow();
+ nullableTypeClass.addMethod(getNullableParam.build());
+ }
var getDollarNullableMethod = MethodSpec.methodBuilder("$getNullable");
getDollarNullableMethod.addModifiers(Modifier.PUBLIC);
getDollarNullableMethod.addModifiers(Modifier.FINAL);