diff --git a/test/common/src/main/resources/api.yaml b/test/common/src/main/resources/api.yaml index 947cd868..10682077 100644 --- a/test/common/src/main/resources/api.yaml +++ b/test/common/src/main/resources/api.yaml @@ -23,38 +23,13 @@ components: type: object description: Example of a Record with fields of each type required: - - field1 - - field2 - field3 - - field4 - - field5 - - field6 - field7 - field8 properties: - field1: - type: boolean - description: a Boolean field - field2: - type: string - description: a String field field3: type: integer description: an Integer field - field4: - type: number - description: a Number field - field5: - type: array - description: an Array of Boolean field - items: - type: boolean - field6: - type: array - description: a Set field - uniqueItems: true - items: - type: boolean field7: description: an ExampleRecord field $ref: '#/components/schemas/ExampleRecord' @@ -65,42 +40,12 @@ components: type: object description: Example of a Record with fields of each type required: - - field1 - - field2 - field3 - - field4 - - field5 - - field6 properties: - field1: - type: boolean - description: a Boolean field - nullable: true - field2: - type: string - description: a String field - nullable: true field3: type: integer description: an Integer field nullable: true - field4: - type: number - description: a Number field - nullable: true - field5: - type: array - description: an Array of Boolean field - nullable: true - items: - type: boolean - field6: - type: array - description: a Set field - uniqueItems: true - nullable: true - items: - type: boolean field7: description: an ExampleNullableRecord field $ref: '#/components/schemas/ExampleNullableRecord' @@ -247,14 +192,6 @@ components: field1: type: boolean description: a boolean field - ExampleRecordWithDefaultFields: - type: object - description: Example of a Record with default fields - properties: - field1: - type: string - description: a String field with a default value - default: someDefaultValue ExampleImplementsEnum: type: string description: Example of an Enum which implements an interface. @@ -360,88 +297,236 @@ components: type: object description: Example of a Record which has fields with constraints required: + - booleanRequired + - booleanRequiredDefault + - booleanRequiredNullable - stringRequired - stringRequiredNullable - stringRequiredPattern + - arrayRequiredNullable + - arrayUniqueRequired + - arrayUniqueRequiredNullable + - intRequired + - intRequiredNullable + - longRequired + - longRequiredNullable + - bigDecimalRequired + - bigDecimalRequiredNullable properties: + ### BOOLEAN FIELDS ### + booleanStandard: + description: "Non-required, non-nullable Boolean field." + type: boolean + booleanDefault: + description: "Non-required, non-nullable Boolean with a default value." + type: boolean + default: true + booleanNullable: + description: "Non-required, nullable Boolean field." + type: boolean + nullable: true + booleanRequired: + description: "Required, non-nullable Boolean field." + type: boolean + booleanRequiredDefault: + description: "Required, non-nullable Boolean field with a default value." + type: boolean + default: true + booleanRequiredNullable: + description: "Required, nullable Boolean field." + type: boolean + nullable: true + ### STRING FIELDS ### stringStandard: + description: "Non-required, non-nullable String field." type: string stringDefault: + description: "Non-required, non-nullable String field with a default value." type: string default: 'someDefaultValue' stringNullable: + description: "Non-required, nullable String field." type: string nullable: true stringRequired: + description: "Required, non-nullable String field." type: string stringRequiredNullable: + description: "Required, nullable String field." type: string nullable: true stringRequiredPattern: + description: "Required, non-nullable String field with a RegEx-pattern." type: string pattern: '^\d{3}-\d{2}-\d{4}$' stringEmailFormat: + description: "Non-required, non-nullable String field with Email format." type: string format: email stringUuidFormat: + description: "Non-required, non-nullable UUID field." type: string format: uuid stringMinLength: + description: "Non-required, non-nullable String field with minLength: 3." type: string minLength: 3 stringMaxLength: + description: "Non-required, non-nullable String field with maxLength: 7." type: string maxLength: 7 stringMinAndMaxLength: + description: "Non-required, non-nullable String with minLength: 3 and maxLength: 7." type: string minLength: 3 maxLength: 7 + ### ARRAY FIELDS ### + arrayNullable: + description: "Non-required, nullable List." + type: array + nullable: true + items: + type: string + arrayRequiredNullable: + description: "Required, nullable List." + type: array + nullable: true + items: + type: string arrayMinItems: + description: "Non-required, non-nullable List with minItems: 1." type: array minItems: 1 items: type: string arrayMaxItems: + description: "Non-required, non-nullable List with maxItems: 10." type: array maxItems: 10 items: type: string arrayMinAndMaxItems: + description: "Non-required, non-nullable List with minItems: 1 and maxItems: 10." type: array minItems: 1 maxItems: 10 items: type: string + ### SET FIELDS ### + arrayUniqueStandard: + description: "Non-required, non-nullable Set." + type: array + uniqueItems: true + items: + type: string + arrayUniqueRequired: + description: "Required, non-nullable Set." + type: array + uniqueItems: true + items: + type: string + arrayUniqueNullable: + description: "Non-required, nullable Set." + type: array + nullable: true + uniqueItems: true + items: + type: string + arrayUniqueRequiredNullable: + description: "Required, nullable Set." + type: array + nullable: true + uniqueItems: true + items: + type: string + ### INTEGER FIELDS ### + intStandard: + description: "Non-required, non-nullable Integer." + type: integer + intNullable: + description: "Non-required, nullable Integer." + type: integer + nullable: true + intRequired: + description: "Required, non-nullable Integer." + type: integer + intRequiredNullable: + description: "Required, nullable Integer." + type: integer + nullable: true intMinimum: + description: "Non-required, non-nullable Integer with minimum: 18." type: integer minimum: 18 intMaximum: + description: "Non-required, non-nullable Integer with maximum: 100." type: integer maximum: 100 intMinimumAndMaximum: + description: "Non-required, non-nullable Integer with minimum: 0 and maximum: 100." type: integer minimum: 0 maximum: 100 + ### int64 / LONG FIELDS ### + longStandard: + description: "Non-required, non-nullable Long." + type: integer + format: int64 + longNullable: + description: "Non-required, nullable Long." + type: integer + format: int64 + nullable: true + longRequired: + description: "Required, non-nullable Long." + type: integer + format: int64 + longRequiredNullable: + description: "Required, nullable Long." + type: integer + format: int64 + nullable: true longMinimum: + description: "Non-required, non-nullable Long with minimum: 18." type: integer format: int64 minimum: 18 longMaximum: + description: "Non-required, non-nullable Long with maximum: 100." type: integer format: int64 maximum: 100 longMinimumAndMaximum: + description: "Non-required, non-nullable Long with minimum: 0 and maximum: 100." type: integer format: int64 minimum: 0 maximum: 100 + ### NUMBER FIELDS ### + bigDecimalStandard: + description: "Non-required, non-nullable BigDecimal." + type: number + bigDecimalNullable: + description: "Non-required, nullable BigDecimal." + type: number + nullable: true + bigDecimalRequired: + description: "Required, non-nullable BigDecimal." + type: number + bigDecimalRequiredNullable: + description: "Required, nullable BigDecimal." + type: number + nullable: true bigDecimalMinimum: + description: "Non-required, non-nullable BigDecimal with minimum: 0." type: number minimum: 0 bigDecimalMaximum: + description: "Non-required, non-nullable BigDecimal with maximum: 100." type: number maximum: 100 bigDecimalMinimumAndMaximum: + description: "Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100." type: number minimum: 0 - maximum: 100 \ No newline at end of file + maximum: 100 diff --git a/test/java-useJakartaEe/src/test/java/io/github/chrimle/o2jrm/models/GeneratedRecordImpl.java b/test/java-useJakartaEe/src/test/java/io/github/chrimle/o2jrm/models/GeneratedRecordImpl.java index e272b7dd..3c4ca33a 100644 --- a/test/java-useJakartaEe/src/test/java/io/github/chrimle/o2jrm/models/GeneratedRecordImpl.java +++ b/test/java-useJakartaEe/src/test/java/io/github/chrimle/o2jrm/models/GeneratedRecordImpl.java @@ -52,12 +52,6 @@ public enum GeneratedRecordImpl implements GeneratedRecord { List.of(), List.of(), GeneratedField.of("field1", Boolean.class).build()), - EXAMPLE_RECORD_WITH_DEFAULT_FIELDS( - "ExampleRecordWithDefaultFields", - false, - List.of(), - List.of(), - GeneratedField.of("field1", String.class).defaultValue("someDefaultValue").build()), EXAMPLE_RECORD_WITH_EXTRA_FIELD_ANNOTATIONS( "ExampleRecordWithExtraFieldAnnotations", false, @@ -124,6 +118,15 @@ public enum GeneratedRecordImpl implements GeneratedRecord { false, List.of(), List.of(), + GeneratedField.of("booleanStandard", Boolean.class).build(), + GeneratedField.of("booleanDefault", Boolean.class).defaultValue(Boolean.TRUE).build(), + GeneratedField.of("booleanNullable", Boolean.class).isNullable().build(), + GeneratedField.of("booleanRequired", Boolean.class).isRequired().build(), + GeneratedField.of("booleanRequiredDefault", Boolean.class) + .isRequired() + .defaultValue(Boolean.TRUE) + .build(), + GeneratedField.of("booleanRequiredNullable", Boolean.class).isRequired().isNullable().build(), GeneratedField.of("stringStandard", String.class).build(), GeneratedField.of("stringDefault", String.class).defaultValue("someDefaultValue").build(), GeneratedField.of("stringNullable", String.class).isNullable().build(), @@ -138,18 +141,45 @@ public enum GeneratedRecordImpl implements GeneratedRecord { GeneratedField.of("stringMinLength", String.class).minLength(3).build(), GeneratedField.of("stringMaxLength", String.class).maxLength(7).build(), GeneratedField.of("stringMinAndMaxLength", String.class).minLength(3).maxLength(7).build(), + GeneratedField.of("arrayNullable", List.class, String.class).isNullable().build(), + GeneratedField.of("arrayRequiredNullable", List.class, String.class) + .isRequired() + .isNullable() + .build(), GeneratedField.of("arrayMinItems", List.class, String.class).minItems(1).build(), GeneratedField.of("arrayMaxItems", List.class, String.class).maxItems(10).build(), GeneratedField.of("arrayMinAndMaxItems", List.class, String.class) .minItems(1) .maxItems(10) .build(), + GeneratedField.of("arrayUniqueStandard", Set.class, String.class).build(), + GeneratedField.of("arrayUniqueRequired", Set.class, String.class).isRequired().build(), + GeneratedField.of("arrayUniqueNullable", Set.class, String.class).isNullable().build(), + GeneratedField.of("arrayUniqueRequiredNullable", Set.class, String.class) + .isRequired() + .isNullable() + .build(), + GeneratedField.of("intStandard", Integer.class).build(), + GeneratedField.of("intNullable", Integer.class).isNullable().build(), + GeneratedField.of("intRequired", Integer.class).isRequired().build(), + GeneratedField.of("intRequiredNullable", Integer.class).isRequired().isNullable().build(), GeneratedField.of("intMinimum", Integer.class).minimum(18).build(), GeneratedField.of("intMaximum", Integer.class).maximum(100).build(), GeneratedField.of("intMinimumAndMaximum", Integer.class).minimum(0).maximum(100).build(), + GeneratedField.of("longStandard", Long.class).build(), + GeneratedField.of("longNullable", Long.class).isNullable().build(), + GeneratedField.of("longRequired", Long.class).isRequired().build(), + GeneratedField.of("longRequiredNullable", Long.class).isRequired().isNullable().build(), GeneratedField.of("longMinimum", Long.class).minimum(18).build(), GeneratedField.of("longMaximum", Long.class).maximum(100).build(), GeneratedField.of("longMinimumAndMaximum", Long.class).minimum(0).maximum(100).build(), + GeneratedField.of("bigDecimalStandard", BigDecimal.class).build(), + GeneratedField.of("bigDecimalNullable", BigDecimal.class).isNullable().build(), + GeneratedField.of("bigDecimalRequired", BigDecimal.class).isRequired().build(), + GeneratedField.of("bigDecimalRequiredNullable", BigDecimal.class) + .isRequired() + .isNullable() + .build(), GeneratedField.of("bigDecimalMinimum", BigDecimal.class).decimalMin("0").build(), GeneratedField.of("bigDecimalMaximum", BigDecimal.class).decimalMax("100").build(), GeneratedField.of("bigDecimalMinimumAndMaximum", BigDecimal.class) @@ -286,12 +316,7 @@ public GeneratedField[] getGeneratedFields( .toArray(new GeneratedField[] {}); case RECORD_WITH_REQUIRED_FIELDS_OF_EACH_TYPE -> List.of( - GeneratedField.of("field1", Boolean.class).isRequired().build(), - GeneratedField.of("field2", String.class).isRequired().build(), GeneratedField.of("field3", Integer.class).isRequired().build(), - GeneratedField.of("field4", BigDecimal.class).isRequired().build(), - GeneratedField.of("field5", List.class, Boolean.class).isRequired().build(), - GeneratedField.of("field6", Set.class, Boolean.class).isRequired().build(), GeneratedField.of( "field7", GeneratedRecordImpl.EXAMPLE_RECORD.getClass(pluginExecution)) .isRequired() @@ -304,18 +329,7 @@ public GeneratedField[] getGeneratedFields( .toArray(new GeneratedField[] {}); case RECORD_WITH_NULLABLE_FIELDS_OF_EACH_TYPE -> List.of( - GeneratedField.of("field1", Boolean.class).isNullable().isRequired().build(), - GeneratedField.of("field2", String.class).isNullable().isRequired().build(), GeneratedField.of("field3", Integer.class).isNullable().isRequired().build(), - GeneratedField.of("field4", BigDecimal.class).isNullable().isRequired().build(), - GeneratedField.of("field5", List.class, Boolean.class) - .isNullable() - .isRequired() - .build(), - GeneratedField.of("field6", Set.class, Boolean.class) - .isNullable() - .isRequired() - .build(), GeneratedField.of( "field7", GeneratedRecordImpl.EXAMPLE_NULLABLE_RECORD.getClass(pluginExecution)) diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/ExampleRecordWithDefaultFields.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/ExampleRecordWithDefaultFields.java deleted file mode 100644 index e30eae45..00000000 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.additionalEnumTypeAnnotations; - -import java.util.Objects; -import com.google.gson.TypeAdapter; -import com.google.gson.annotations.JsonAdapter; -import com.google.gson.annotations.SerializedName; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import java.io.IOException; -import java.util.Arrays; - -import com.google.gson.Gson; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.TypeAdapterFactory; -import com.google.gson.reflect.TypeToken; -import java.util.HashSet; -import java.util.Set; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - /** A set containing the names of all instance fields defined in this class. */ - public static final HashSet openapiFields = - new HashSet<>( - Set.of("field1")); - - /** A set containing the names of all required fields defined in this class. */ - public static final HashSet openapiRequiredFields = new HashSet<>(); - - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } - - /** - * Validates the JSON Element and throws an exception if issues are found. - * - * @param jsonElement to validate. - * @throws IOException if the JSON Element is not a valid {@link ExampleRecordWithDefaultFields } object. - */ - public static void validateJsonElement(final JsonElement jsonElement) throws IOException { - for (final String key : jsonElement.getAsJsonObject().keySet()) { - if (!ExampleRecordWithDefaultFields.openapiFields.contains(key)) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "The field `%s` in the JSON string is not defined in the `ExampleRecordWithDefaultFields` properties. JSON: %s", - key, - jsonElement)); - } - } - - final JsonObject jsonObj = jsonElement.getAsJsonObject(); - - if (jsonObj.get("field1") != null && !jsonObj.get("field1").isJsonNull()) { - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - } - } - - /** - * Creates {@link TypeAdapter}s for {@link ExampleRecordWithDefaultFields }s and other - * assignable types. - */ - public static class CustomTypeAdapterFactory implements TypeAdapterFactory { - - /** - * {@inheritDoc} - * - * @param gson to create the {@link TypeAdapter} from. - * @param type to serialize/deserialize. - * @return an (anonymous) instance of {@link TypeAdapter}, or - * {@code null} if {@code T} is not assignable to {@link ExampleRecordWithDefaultFields }. - * @param class to serialize/deserialize. - */ - @SuppressWarnings("unchecked") - @Override - public TypeAdapter create(final Gson gson, final TypeToken type) { - if (!ExampleRecordWithDefaultFields.class.isAssignableFrom(type.getRawType())) { - return null; - } - final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); - final TypeAdapter thisAdapter = - gson.getDelegateAdapter(this, TypeToken.get(ExampleRecordWithDefaultFields.class)); - - return (TypeAdapter) - new TypeAdapter() { - - @Override - public void write(final JsonWriter out, final ExampleRecordWithDefaultFields value) - throws IOException { - final JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); - elementAdapter.write(out, obj); - } - - @Override - public ExampleRecordWithDefaultFields read(final JsonReader in) throws IOException { - final JsonElement jsonElement = elementAdapter.read(in); - validateJsonElement(jsonElement); - return thisAdapter.fromJsonTree(jsonElement); - } - }.nullSafe(); - } - } -} diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithAllConstraints.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithAllConstraints.java index ebe8a707..9b39f4b4 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithAllConstraints.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithAllConstraints.java @@ -28,7 +28,9 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,31 +45,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -79,15 +111,33 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @@ -95,7 +145,13 @@ public record RecordWithAllConstraints( /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("stringStandard", + Set.of("booleanStandard", + "booleanDefault", + "booleanNullable", + "booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringStandard", "stringDefault", "stringNullable", "stringRequired", @@ -106,15 +162,33 @@ public record RecordWithAllConstraints( "stringMinLength", "stringMaxLength", "stringMinAndMaxLength", + "arrayNullable", + "arrayRequiredNullable", "arrayMinItems", "arrayMaxItems", "arrayMinAndMaxItems", + "arrayUniqueStandard", + "arrayUniqueRequired", + "arrayUniqueNullable", + "arrayUniqueRequiredNullable", + "intStandard", + "intNullable", + "intRequired", + "intRequiredNullable", "intMinimum", "intMaximum", "intMinimumAndMaximum", + "longStandard", + "longNullable", + "longRequired", + "longRequiredNullable", "longMinimum", "longMaximum", "longMinimumAndMaximum", + "bigDecimalStandard", + "bigDecimalNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable", "bigDecimalMinimum", "bigDecimalMaximum", "bigDecimalMinimumAndMaximum")); @@ -122,11 +196,29 @@ public record RecordWithAllConstraints( /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("stringRequired", + Set.of("booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringRequired", "stringRequiredNullable", - "stringRequiredPattern")); + "stringRequiredPattern", + "arrayRequiredNullable", + "arrayUniqueRequired", + "arrayUniqueRequiredNullable", + "intRequired", + "intRequiredNullable", + "longRequired", + "longRequiredNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable")); public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -138,18 +230,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -161,15 +277,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; @@ -214,6 +348,60 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (jsonObj.get("booleanStandard") != null && !jsonObj.get("booleanStandard").isJsonNull()) { + if (!jsonObj.get("booleanStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanStandard"))); + } + } + + if (jsonObj.get("booleanDefault") != null && !jsonObj.get("booleanDefault").isJsonNull()) { + if (!jsonObj.get("booleanDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanDefault"))); + } + } + + if (jsonObj.get("booleanNullable") != null && !jsonObj.get("booleanNullable").isJsonNull()) { + if (!jsonObj.get("booleanNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanNullable"))); + } + } + + if (!jsonObj.get("booleanRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequired"))); + } + + if (!jsonObj.get("booleanRequiredDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredDefault"))); + } + + if (!jsonObj.get("booleanRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredNullable"))); + } + if (jsonObj.get("stringStandard") != null && !jsonObj.get("stringStandard").isJsonNull()) { if (!jsonObj.get("stringStandard").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -318,6 +506,24 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayNullable") != null && !jsonObj.get("arrayNullable").isJsonNull()) { + if (!jsonObj.get("arrayNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayNullable"))); + } + } + + if (!jsonObj.get("arrayRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayRequiredNullable"))); + } + if (jsonObj.get("arrayMinItems") != null && !jsonObj.get("arrayMinItems").isJsonNull()) { if (!jsonObj.get("arrayMinItems").isJsonArray()) { throw new IllegalArgumentException( @@ -348,6 +554,78 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayUniqueStandard") != null && !jsonObj.get("arrayUniqueStandard").isJsonNull()) { + if (!jsonObj.get("arrayUniqueStandard").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueStandard` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueStandard"))); + } + } + + if (!jsonObj.get("arrayUniqueRequired").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequired` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequired"))); + } + + if (jsonObj.get("arrayUniqueNullable") != null && !jsonObj.get("arrayUniqueNullable").isJsonNull()) { + if (!jsonObj.get("arrayUniqueNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueNullable"))); + } + } + + if (!jsonObj.get("arrayUniqueRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequiredNullable"))); + } + + if (jsonObj.get("intStandard") != null && !jsonObj.get("intStandard").isJsonNull()) { + if (!jsonObj.get("intStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intStandard"))); + } + } + + if (jsonObj.get("intNullable") != null && !jsonObj.get("intNullable").isJsonNull()) { + if (!jsonObj.get("intNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intNullable"))); + } + } + + if (!jsonObj.get("intRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequired"))); + } + + if (!jsonObj.get("intRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequiredNullable"))); + } + if (jsonObj.get("intMinimum") != null && !jsonObj.get("intMinimum").isJsonNull()) { if (!jsonObj.get("intMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -378,6 +656,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("longStandard") != null && !jsonObj.get("longStandard").isJsonNull()) { + if (!jsonObj.get("longStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longStandard"))); + } + } + + if (jsonObj.get("longNullable") != null && !jsonObj.get("longNullable").isJsonNull()) { + if (!jsonObj.get("longNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longNullable"))); + } + } + + if (!jsonObj.get("longRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequired"))); + } + + if (!jsonObj.get("longRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequiredNullable"))); + } + if (jsonObj.get("longMinimum") != null && !jsonObj.get("longMinimum").isJsonNull()) { if (!jsonObj.get("longMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -408,6 +722,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("bigDecimalStandard") != null && !jsonObj.get("bigDecimalStandard").isJsonNull()) { + if (!jsonObj.get("bigDecimalStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalStandard"))); + } + } + + if (jsonObj.get("bigDecimalNullable") != null && !jsonObj.get("bigDecimalNullable").isJsonNull()) { + if (!jsonObj.get("bigDecimalNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalNullable"))); + } + } + + if (!jsonObj.get("bigDecimalRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequired"))); + } + + if (!jsonObj.get("bigDecimalRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequiredNullable"))); + } + if (jsonObj.get("bigDecimalMinimum") != null && !jsonObj.get("bigDecimalMinimum").isJsonNull()) { if (!jsonObj.get("bigDecimalMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithNullableFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithNullableFieldsOfEachType.java index ff393512..e12541a5 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithNullableFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.additionalEnumTypeAnnotations.ExampleNullableEnum; import io.github.chrimle.o2jrm.additionalEnumTypeAnnotations.ExampleNullableRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.google.gson.Gson; @@ -46,62 +41,32 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6")); + Set.of("field3")); public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } @@ -145,22 +110,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -169,30 +118,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - if (jsonObj.get("field7") != null && !jsonObj.get("field7").isJsonNull()) { ExampleNullableRecord.validateJsonElement(jsonObj.get("field7")); } diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithRequiredFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithRequiredFieldsOfEachType.java index c11f457f..d1f8311b 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithRequiredFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithRequiredFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.additionalEnumTypeAnnotations.ExampleEnum; import io.github.chrimle.o2jrm.additionalEnumTypeAnnotations.ExampleRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.google.gson.Gson; import com.google.gson.JsonElement; @@ -45,64 +40,34 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } @@ -146,22 +111,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -170,30 +119,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - ExampleRecord.validateJsonElement(jsonObj.get("field7")); ExampleEnum.validateJsonElement(jsonObj.get("field8")); diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/ExampleRecordWithDefaultFields.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 1f9491c6..00000000 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.additionalModelTypeAnnotations; - -import java.util.Objects; -import com.google.gson.TypeAdapter; -import com.google.gson.annotations.JsonAdapter; -import com.google.gson.annotations.SerializedName; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import java.io.IOException; -import java.util.Arrays; - -import com.google.gson.Gson; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.TypeAdapterFactory; -import com.google.gson.reflect.TypeToken; -import java.util.HashSet; -import java.util.Set; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -@io.github.chrimle.o2jrm.test.annotations.TestAnnotationOne -@io.github.chrimle.o2jrm.test.annotations.TestAnnotationTwo -@io.github.chrimle.o2jrm.test.annotations.TestAnnotationThree -public record ExampleRecordWithDefaultFields(String field1) { - - /** A set containing the names of all instance fields defined in this class. */ - public static final HashSet openapiFields = - new HashSet<>( - Set.of("field1")); - - /** A set containing the names of all required fields defined in this class. */ - public static final HashSet openapiRequiredFields = new HashSet<>(); - - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } - - /** - * Validates the JSON Element and throws an exception if issues are found. - * - * @param jsonElement to validate. - * @throws IOException if the JSON Element is not a valid {@link ExampleRecordWithDefaultFields } object. - */ - public static void validateJsonElement(final JsonElement jsonElement) throws IOException { - for (final String key : jsonElement.getAsJsonObject().keySet()) { - if (!ExampleRecordWithDefaultFields.openapiFields.contains(key)) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "The field `%s` in the JSON string is not defined in the `ExampleRecordWithDefaultFields` properties. JSON: %s", - key, - jsonElement)); - } - } - - final JsonObject jsonObj = jsonElement.getAsJsonObject(); - - if (jsonObj.get("field1") != null && !jsonObj.get("field1").isJsonNull()) { - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - } - } - - /** - * Creates {@link TypeAdapter}s for {@link ExampleRecordWithDefaultFields }s and other - * assignable types. - */ - public static class CustomTypeAdapterFactory implements TypeAdapterFactory { - - /** - * {@inheritDoc} - * - * @param gson to create the {@link TypeAdapter} from. - * @param type to serialize/deserialize. - * @return an (anonymous) instance of {@link TypeAdapter}, or - * {@code null} if {@code T} is not assignable to {@link ExampleRecordWithDefaultFields }. - * @param class to serialize/deserialize. - */ - @SuppressWarnings("unchecked") - @Override - public TypeAdapter create(final Gson gson, final TypeToken type) { - if (!ExampleRecordWithDefaultFields.class.isAssignableFrom(type.getRawType())) { - return null; - } - final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); - final TypeAdapter thisAdapter = - gson.getDelegateAdapter(this, TypeToken.get(ExampleRecordWithDefaultFields.class)); - - return (TypeAdapter) - new TypeAdapter() { - - @Override - public void write(final JsonWriter out, final ExampleRecordWithDefaultFields value) - throws IOException { - final JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); - elementAdapter.write(out, obj); - } - - @Override - public ExampleRecordWithDefaultFields read(final JsonReader in) throws IOException { - final JsonElement jsonElement = elementAdapter.read(in); - validateJsonElement(jsonElement); - return thisAdapter.fromJsonTree(jsonElement); - } - }.nullSafe(); - } - } -} diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithAllConstraints.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithAllConstraints.java index eda3696b..082aacbd 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithAllConstraints.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithAllConstraints.java @@ -28,7 +28,9 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,34 +45,64 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ @io.github.chrimle.o2jrm.test.annotations.TestAnnotationOne @io.github.chrimle.o2jrm.test.annotations.TestAnnotationTwo @io.github.chrimle.o2jrm.test.annotations.TestAnnotationThree public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -82,15 +114,33 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @@ -98,7 +148,13 @@ public record RecordWithAllConstraints( /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("stringStandard", + Set.of("booleanStandard", + "booleanDefault", + "booleanNullable", + "booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringStandard", "stringDefault", "stringNullable", "stringRequired", @@ -109,15 +165,33 @@ public record RecordWithAllConstraints( "stringMinLength", "stringMaxLength", "stringMinAndMaxLength", + "arrayNullable", + "arrayRequiredNullable", "arrayMinItems", "arrayMaxItems", "arrayMinAndMaxItems", + "arrayUniqueStandard", + "arrayUniqueRequired", + "arrayUniqueNullable", + "arrayUniqueRequiredNullable", + "intStandard", + "intNullable", + "intRequired", + "intRequiredNullable", "intMinimum", "intMaximum", "intMinimumAndMaximum", + "longStandard", + "longNullable", + "longRequired", + "longRequiredNullable", "longMinimum", "longMaximum", "longMinimumAndMaximum", + "bigDecimalStandard", + "bigDecimalNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable", "bigDecimalMinimum", "bigDecimalMaximum", "bigDecimalMinimumAndMaximum")); @@ -125,11 +199,29 @@ public record RecordWithAllConstraints( /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("stringRequired", + Set.of("booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringRequired", "stringRequiredNullable", - "stringRequiredPattern")); + "stringRequiredPattern", + "arrayRequiredNullable", + "arrayUniqueRequired", + "arrayUniqueRequiredNullable", + "intRequired", + "intRequiredNullable", + "longRequired", + "longRequiredNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable")); public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -141,18 +233,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -164,15 +280,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; @@ -217,6 +351,60 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (jsonObj.get("booleanStandard") != null && !jsonObj.get("booleanStandard").isJsonNull()) { + if (!jsonObj.get("booleanStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanStandard"))); + } + } + + if (jsonObj.get("booleanDefault") != null && !jsonObj.get("booleanDefault").isJsonNull()) { + if (!jsonObj.get("booleanDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanDefault"))); + } + } + + if (jsonObj.get("booleanNullable") != null && !jsonObj.get("booleanNullable").isJsonNull()) { + if (!jsonObj.get("booleanNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanNullable"))); + } + } + + if (!jsonObj.get("booleanRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequired"))); + } + + if (!jsonObj.get("booleanRequiredDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredDefault"))); + } + + if (!jsonObj.get("booleanRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredNullable"))); + } + if (jsonObj.get("stringStandard") != null && !jsonObj.get("stringStandard").isJsonNull()) { if (!jsonObj.get("stringStandard").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -321,6 +509,24 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayNullable") != null && !jsonObj.get("arrayNullable").isJsonNull()) { + if (!jsonObj.get("arrayNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayNullable"))); + } + } + + if (!jsonObj.get("arrayRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayRequiredNullable"))); + } + if (jsonObj.get("arrayMinItems") != null && !jsonObj.get("arrayMinItems").isJsonNull()) { if (!jsonObj.get("arrayMinItems").isJsonArray()) { throw new IllegalArgumentException( @@ -351,6 +557,78 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayUniqueStandard") != null && !jsonObj.get("arrayUniqueStandard").isJsonNull()) { + if (!jsonObj.get("arrayUniqueStandard").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueStandard` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueStandard"))); + } + } + + if (!jsonObj.get("arrayUniqueRequired").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequired` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequired"))); + } + + if (jsonObj.get("arrayUniqueNullable") != null && !jsonObj.get("arrayUniqueNullable").isJsonNull()) { + if (!jsonObj.get("arrayUniqueNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueNullable"))); + } + } + + if (!jsonObj.get("arrayUniqueRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequiredNullable"))); + } + + if (jsonObj.get("intStandard") != null && !jsonObj.get("intStandard").isJsonNull()) { + if (!jsonObj.get("intStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intStandard"))); + } + } + + if (jsonObj.get("intNullable") != null && !jsonObj.get("intNullable").isJsonNull()) { + if (!jsonObj.get("intNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intNullable"))); + } + } + + if (!jsonObj.get("intRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequired"))); + } + + if (!jsonObj.get("intRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequiredNullable"))); + } + if (jsonObj.get("intMinimum") != null && !jsonObj.get("intMinimum").isJsonNull()) { if (!jsonObj.get("intMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -381,6 +659,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("longStandard") != null && !jsonObj.get("longStandard").isJsonNull()) { + if (!jsonObj.get("longStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longStandard"))); + } + } + + if (jsonObj.get("longNullable") != null && !jsonObj.get("longNullable").isJsonNull()) { + if (!jsonObj.get("longNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longNullable"))); + } + } + + if (!jsonObj.get("longRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequired"))); + } + + if (!jsonObj.get("longRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequiredNullable"))); + } + if (jsonObj.get("longMinimum") != null && !jsonObj.get("longMinimum").isJsonNull()) { if (!jsonObj.get("longMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -411,6 +725,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("bigDecimalStandard") != null && !jsonObj.get("bigDecimalStandard").isJsonNull()) { + if (!jsonObj.get("bigDecimalStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalStandard"))); + } + } + + if (jsonObj.get("bigDecimalNullable") != null && !jsonObj.get("bigDecimalNullable").isJsonNull()) { + if (!jsonObj.get("bigDecimalNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalNullable"))); + } + } + + if (!jsonObj.get("bigDecimalRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequired"))); + } + + if (!jsonObj.get("bigDecimalRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequiredNullable"))); + } + if (jsonObj.get("bigDecimalMinimum") != null && !jsonObj.get("bigDecimalMinimum").isJsonNull()) { if (!jsonObj.get("bigDecimalMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithNullableFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithNullableFieldsOfEachType.java index 32fb1a0f..0cc44e1b 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithNullableFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.additionalModelTypeAnnotations.ExampleNullableEnum; import io.github.chrimle.o2jrm.additionalModelTypeAnnotations.ExampleNullableRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.google.gson.Gson; @@ -46,12 +41,7 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ @@ -59,52 +49,27 @@ @io.github.chrimle.o2jrm.test.annotations.TestAnnotationTwo @io.github.chrimle.o2jrm.test.annotations.TestAnnotationThree public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6")); + Set.of("field3")); public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } @@ -148,22 +113,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -172,30 +121,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - if (jsonObj.get("field7") != null && !jsonObj.get("field7").isJsonNull()) { ExampleNullableRecord.validateJsonElement(jsonObj.get("field7")); } diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithRequiredFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithRequiredFieldsOfEachType.java index b6fb7587..1f5a48cd 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithRequiredFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithRequiredFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.additionalModelTypeAnnotations.ExampleEnum; import io.github.chrimle.o2jrm.additionalModelTypeAnnotations.ExampleRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.google.gson.Gson; import com.google.gson.JsonElement; @@ -45,12 +40,7 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ @@ -58,54 +48,29 @@ @io.github.chrimle.o2jrm.test.annotations.TestAnnotationTwo @io.github.chrimle.o2jrm.test.annotations.TestAnnotationThree public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } @@ -149,22 +114,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -173,30 +122,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - ExampleRecord.validateJsonElement(jsonObj.get("field7")); ExampleEnum.validateJsonElement(jsonObj.get("field8")); diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/ExampleRecordWithDefaultFields.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 3c6ba87e..00000000 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.enumDefaultCaseAndCaseInsensitive; - -import java.util.Objects; -import com.google.gson.TypeAdapter; -import com.google.gson.annotations.JsonAdapter; -import com.google.gson.annotations.SerializedName; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import java.io.IOException; -import java.util.Arrays; - -import com.google.gson.Gson; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.TypeAdapterFactory; -import com.google.gson.reflect.TypeToken; -import java.util.HashSet; -import java.util.Set; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - /** A set containing the names of all instance fields defined in this class. */ - public static final HashSet openapiFields = - new HashSet<>( - Set.of("field1")); - - /** A set containing the names of all required fields defined in this class. */ - public static final HashSet openapiRequiredFields = new HashSet<>(); - - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } - - /** - * Validates the JSON Element and throws an exception if issues are found. - * - * @param jsonElement to validate. - * @throws IOException if the JSON Element is not a valid {@link ExampleRecordWithDefaultFields } object. - */ - public static void validateJsonElement(final JsonElement jsonElement) throws IOException { - for (final String key : jsonElement.getAsJsonObject().keySet()) { - if (!ExampleRecordWithDefaultFields.openapiFields.contains(key)) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "The field `%s` in the JSON string is not defined in the `ExampleRecordWithDefaultFields` properties. JSON: %s", - key, - jsonElement)); - } - } - - final JsonObject jsonObj = jsonElement.getAsJsonObject(); - - if (jsonObj.get("field1") != null && !jsonObj.get("field1").isJsonNull()) { - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - } - } - - /** - * Creates {@link TypeAdapter}s for {@link ExampleRecordWithDefaultFields }s and other - * assignable types. - */ - public static class CustomTypeAdapterFactory implements TypeAdapterFactory { - - /** - * {@inheritDoc} - * - * @param gson to create the {@link TypeAdapter} from. - * @param type to serialize/deserialize. - * @return an (anonymous) instance of {@link TypeAdapter}, or - * {@code null} if {@code T} is not assignable to {@link ExampleRecordWithDefaultFields }. - * @param class to serialize/deserialize. - */ - @SuppressWarnings("unchecked") - @Override - public TypeAdapter create(final Gson gson, final TypeToken type) { - if (!ExampleRecordWithDefaultFields.class.isAssignableFrom(type.getRawType())) { - return null; - } - final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); - final TypeAdapter thisAdapter = - gson.getDelegateAdapter(this, TypeToken.get(ExampleRecordWithDefaultFields.class)); - - return (TypeAdapter) - new TypeAdapter() { - - @Override - public void write(final JsonWriter out, final ExampleRecordWithDefaultFields value) - throws IOException { - final JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); - elementAdapter.write(out, obj); - } - - @Override - public ExampleRecordWithDefaultFields read(final JsonReader in) throws IOException { - final JsonElement jsonElement = elementAdapter.read(in); - validateJsonElement(jsonElement); - return thisAdapter.fromJsonTree(jsonElement); - } - }.nullSafe(); - } - } -} diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithAllConstraints.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithAllConstraints.java index bf469689..311c4659 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithAllConstraints.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithAllConstraints.java @@ -28,7 +28,9 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,31 +45,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -79,15 +111,33 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @@ -95,7 +145,13 @@ public record RecordWithAllConstraints( /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("stringStandard", + Set.of("booleanStandard", + "booleanDefault", + "booleanNullable", + "booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringStandard", "stringDefault", "stringNullable", "stringRequired", @@ -106,15 +162,33 @@ public record RecordWithAllConstraints( "stringMinLength", "stringMaxLength", "stringMinAndMaxLength", + "arrayNullable", + "arrayRequiredNullable", "arrayMinItems", "arrayMaxItems", "arrayMinAndMaxItems", + "arrayUniqueStandard", + "arrayUniqueRequired", + "arrayUniqueNullable", + "arrayUniqueRequiredNullable", + "intStandard", + "intNullable", + "intRequired", + "intRequiredNullable", "intMinimum", "intMaximum", "intMinimumAndMaximum", + "longStandard", + "longNullable", + "longRequired", + "longRequiredNullable", "longMinimum", "longMaximum", "longMinimumAndMaximum", + "bigDecimalStandard", + "bigDecimalNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable", "bigDecimalMinimum", "bigDecimalMaximum", "bigDecimalMinimumAndMaximum")); @@ -122,11 +196,29 @@ public record RecordWithAllConstraints( /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("stringRequired", + Set.of("booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringRequired", "stringRequiredNullable", - "stringRequiredPattern")); + "stringRequiredPattern", + "arrayRequiredNullable", + "arrayUniqueRequired", + "arrayUniqueRequiredNullable", + "intRequired", + "intRequiredNullable", + "longRequired", + "longRequiredNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable")); public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -138,18 +230,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -161,15 +277,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; @@ -214,6 +348,60 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (jsonObj.get("booleanStandard") != null && !jsonObj.get("booleanStandard").isJsonNull()) { + if (!jsonObj.get("booleanStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanStandard"))); + } + } + + if (jsonObj.get("booleanDefault") != null && !jsonObj.get("booleanDefault").isJsonNull()) { + if (!jsonObj.get("booleanDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanDefault"))); + } + } + + if (jsonObj.get("booleanNullable") != null && !jsonObj.get("booleanNullable").isJsonNull()) { + if (!jsonObj.get("booleanNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanNullable"))); + } + } + + if (!jsonObj.get("booleanRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequired"))); + } + + if (!jsonObj.get("booleanRequiredDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredDefault"))); + } + + if (!jsonObj.get("booleanRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredNullable"))); + } + if (jsonObj.get("stringStandard") != null && !jsonObj.get("stringStandard").isJsonNull()) { if (!jsonObj.get("stringStandard").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -318,6 +506,24 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayNullable") != null && !jsonObj.get("arrayNullable").isJsonNull()) { + if (!jsonObj.get("arrayNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayNullable"))); + } + } + + if (!jsonObj.get("arrayRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayRequiredNullable"))); + } + if (jsonObj.get("arrayMinItems") != null && !jsonObj.get("arrayMinItems").isJsonNull()) { if (!jsonObj.get("arrayMinItems").isJsonArray()) { throw new IllegalArgumentException( @@ -348,6 +554,78 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayUniqueStandard") != null && !jsonObj.get("arrayUniqueStandard").isJsonNull()) { + if (!jsonObj.get("arrayUniqueStandard").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueStandard` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueStandard"))); + } + } + + if (!jsonObj.get("arrayUniqueRequired").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequired` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequired"))); + } + + if (jsonObj.get("arrayUniqueNullable") != null && !jsonObj.get("arrayUniqueNullable").isJsonNull()) { + if (!jsonObj.get("arrayUniqueNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueNullable"))); + } + } + + if (!jsonObj.get("arrayUniqueRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequiredNullable"))); + } + + if (jsonObj.get("intStandard") != null && !jsonObj.get("intStandard").isJsonNull()) { + if (!jsonObj.get("intStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intStandard"))); + } + } + + if (jsonObj.get("intNullable") != null && !jsonObj.get("intNullable").isJsonNull()) { + if (!jsonObj.get("intNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intNullable"))); + } + } + + if (!jsonObj.get("intRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequired"))); + } + + if (!jsonObj.get("intRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequiredNullable"))); + } + if (jsonObj.get("intMinimum") != null && !jsonObj.get("intMinimum").isJsonNull()) { if (!jsonObj.get("intMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -378,6 +656,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("longStandard") != null && !jsonObj.get("longStandard").isJsonNull()) { + if (!jsonObj.get("longStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longStandard"))); + } + } + + if (jsonObj.get("longNullable") != null && !jsonObj.get("longNullable").isJsonNull()) { + if (!jsonObj.get("longNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longNullable"))); + } + } + + if (!jsonObj.get("longRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequired"))); + } + + if (!jsonObj.get("longRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequiredNullable"))); + } + if (jsonObj.get("longMinimum") != null && !jsonObj.get("longMinimum").isJsonNull()) { if (!jsonObj.get("longMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -408,6 +722,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("bigDecimalStandard") != null && !jsonObj.get("bigDecimalStandard").isJsonNull()) { + if (!jsonObj.get("bigDecimalStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalStandard"))); + } + } + + if (jsonObj.get("bigDecimalNullable") != null && !jsonObj.get("bigDecimalNullable").isJsonNull()) { + if (!jsonObj.get("bigDecimalNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalNullable"))); + } + } + + if (!jsonObj.get("bigDecimalRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequired"))); + } + + if (!jsonObj.get("bigDecimalRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequiredNullable"))); + } + if (jsonObj.get("bigDecimalMinimum") != null && !jsonObj.get("bigDecimalMinimum").isJsonNull()) { if (!jsonObj.get("bigDecimalMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithNullableFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithNullableFieldsOfEachType.java index 88ec78bb..198f28db 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithNullableFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.enumDefaultCaseAndCaseInsensitive.ExampleNullableEnum; import io.github.chrimle.o2jrm.enumDefaultCaseAndCaseInsensitive.ExampleNullableRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.google.gson.Gson; @@ -46,62 +41,32 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6")); + Set.of("field3")); public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } @@ -145,22 +110,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -169,30 +118,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - if (jsonObj.get("field7") != null && !jsonObj.get("field7").isJsonNull()) { ExampleNullableRecord.validateJsonElement(jsonObj.get("field7")); } diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithRequiredFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithRequiredFieldsOfEachType.java index 595b126c..03c178aa 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithRequiredFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithRequiredFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.enumDefaultCaseAndCaseInsensitive.ExampleEnum; import io.github.chrimle.o2jrm.enumDefaultCaseAndCaseInsensitive.ExampleRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.google.gson.Gson; import com.google.gson.JsonElement; @@ -45,64 +40,34 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } @@ -146,22 +111,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -170,30 +119,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - ExampleRecord.validateJsonElement(jsonObj.get("field7")); ExampleEnum.validateJsonElement(jsonObj.get("field8")); diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/ExampleRecordWithDefaultFields.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/ExampleRecordWithDefaultFields.java deleted file mode 100644 index c9f18efb..00000000 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.enumUnknownDefaultCase; - -import java.util.Objects; -import com.google.gson.TypeAdapter; -import com.google.gson.annotations.JsonAdapter; -import com.google.gson.annotations.SerializedName; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import java.io.IOException; -import java.util.Arrays; - -import com.google.gson.Gson; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.TypeAdapterFactory; -import com.google.gson.reflect.TypeToken; -import java.util.HashSet; -import java.util.Set; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - /** A set containing the names of all instance fields defined in this class. */ - public static final HashSet openapiFields = - new HashSet<>( - Set.of("field1")); - - /** A set containing the names of all required fields defined in this class. */ - public static final HashSet openapiRequiredFields = new HashSet<>(); - - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } - - /** - * Validates the JSON Element and throws an exception if issues are found. - * - * @param jsonElement to validate. - * @throws IOException if the JSON Element is not a valid {@link ExampleRecordWithDefaultFields } object. - */ - public static void validateJsonElement(final JsonElement jsonElement) throws IOException { - for (final String key : jsonElement.getAsJsonObject().keySet()) { - if (!ExampleRecordWithDefaultFields.openapiFields.contains(key)) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "The field `%s` in the JSON string is not defined in the `ExampleRecordWithDefaultFields` properties. JSON: %s", - key, - jsonElement)); - } - } - - final JsonObject jsonObj = jsonElement.getAsJsonObject(); - - if (jsonObj.get("field1") != null && !jsonObj.get("field1").isJsonNull()) { - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - } - } - - /** - * Creates {@link TypeAdapter}s for {@link ExampleRecordWithDefaultFields }s and other - * assignable types. - */ - public static class CustomTypeAdapterFactory implements TypeAdapterFactory { - - /** - * {@inheritDoc} - * - * @param gson to create the {@link TypeAdapter} from. - * @param type to serialize/deserialize. - * @return an (anonymous) instance of {@link TypeAdapter}, or - * {@code null} if {@code T} is not assignable to {@link ExampleRecordWithDefaultFields }. - * @param class to serialize/deserialize. - */ - @SuppressWarnings("unchecked") - @Override - public TypeAdapter create(final Gson gson, final TypeToken type) { - if (!ExampleRecordWithDefaultFields.class.isAssignableFrom(type.getRawType())) { - return null; - } - final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); - final TypeAdapter thisAdapter = - gson.getDelegateAdapter(this, TypeToken.get(ExampleRecordWithDefaultFields.class)); - - return (TypeAdapter) - new TypeAdapter() { - - @Override - public void write(final JsonWriter out, final ExampleRecordWithDefaultFields value) - throws IOException { - final JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); - elementAdapter.write(out, obj); - } - - @Override - public ExampleRecordWithDefaultFields read(final JsonReader in) throws IOException { - final JsonElement jsonElement = elementAdapter.read(in); - validateJsonElement(jsonElement); - return thisAdapter.fromJsonTree(jsonElement); - } - }.nullSafe(); - } - } -} diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithAllConstraints.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithAllConstraints.java index fc2848a2..48d5be5a 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithAllConstraints.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithAllConstraints.java @@ -28,7 +28,9 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,31 +45,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -79,15 +111,33 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @@ -95,7 +145,13 @@ public record RecordWithAllConstraints( /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("stringStandard", + Set.of("booleanStandard", + "booleanDefault", + "booleanNullable", + "booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringStandard", "stringDefault", "stringNullable", "stringRequired", @@ -106,15 +162,33 @@ public record RecordWithAllConstraints( "stringMinLength", "stringMaxLength", "stringMinAndMaxLength", + "arrayNullable", + "arrayRequiredNullable", "arrayMinItems", "arrayMaxItems", "arrayMinAndMaxItems", + "arrayUniqueStandard", + "arrayUniqueRequired", + "arrayUniqueNullable", + "arrayUniqueRequiredNullable", + "intStandard", + "intNullable", + "intRequired", + "intRequiredNullable", "intMinimum", "intMaximum", "intMinimumAndMaximum", + "longStandard", + "longNullable", + "longRequired", + "longRequiredNullable", "longMinimum", "longMaximum", "longMinimumAndMaximum", + "bigDecimalStandard", + "bigDecimalNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable", "bigDecimalMinimum", "bigDecimalMaximum", "bigDecimalMinimumAndMaximum")); @@ -122,11 +196,29 @@ public record RecordWithAllConstraints( /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("stringRequired", + Set.of("booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringRequired", "stringRequiredNullable", - "stringRequiredPattern")); + "stringRequiredPattern", + "arrayRequiredNullable", + "arrayUniqueRequired", + "arrayUniqueRequiredNullable", + "intRequired", + "intRequiredNullable", + "longRequired", + "longRequiredNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable")); public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -138,18 +230,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -161,15 +277,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; @@ -214,6 +348,60 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (jsonObj.get("booleanStandard") != null && !jsonObj.get("booleanStandard").isJsonNull()) { + if (!jsonObj.get("booleanStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanStandard"))); + } + } + + if (jsonObj.get("booleanDefault") != null && !jsonObj.get("booleanDefault").isJsonNull()) { + if (!jsonObj.get("booleanDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanDefault"))); + } + } + + if (jsonObj.get("booleanNullable") != null && !jsonObj.get("booleanNullable").isJsonNull()) { + if (!jsonObj.get("booleanNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanNullable"))); + } + } + + if (!jsonObj.get("booleanRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequired"))); + } + + if (!jsonObj.get("booleanRequiredDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredDefault"))); + } + + if (!jsonObj.get("booleanRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredNullable"))); + } + if (jsonObj.get("stringStandard") != null && !jsonObj.get("stringStandard").isJsonNull()) { if (!jsonObj.get("stringStandard").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -318,6 +506,24 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayNullable") != null && !jsonObj.get("arrayNullable").isJsonNull()) { + if (!jsonObj.get("arrayNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayNullable"))); + } + } + + if (!jsonObj.get("arrayRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayRequiredNullable"))); + } + if (jsonObj.get("arrayMinItems") != null && !jsonObj.get("arrayMinItems").isJsonNull()) { if (!jsonObj.get("arrayMinItems").isJsonArray()) { throw new IllegalArgumentException( @@ -348,6 +554,78 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayUniqueStandard") != null && !jsonObj.get("arrayUniqueStandard").isJsonNull()) { + if (!jsonObj.get("arrayUniqueStandard").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueStandard` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueStandard"))); + } + } + + if (!jsonObj.get("arrayUniqueRequired").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequired` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequired"))); + } + + if (jsonObj.get("arrayUniqueNullable") != null && !jsonObj.get("arrayUniqueNullable").isJsonNull()) { + if (!jsonObj.get("arrayUniqueNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueNullable"))); + } + } + + if (!jsonObj.get("arrayUniqueRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequiredNullable"))); + } + + if (jsonObj.get("intStandard") != null && !jsonObj.get("intStandard").isJsonNull()) { + if (!jsonObj.get("intStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intStandard"))); + } + } + + if (jsonObj.get("intNullable") != null && !jsonObj.get("intNullable").isJsonNull()) { + if (!jsonObj.get("intNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intNullable"))); + } + } + + if (!jsonObj.get("intRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequired"))); + } + + if (!jsonObj.get("intRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequiredNullable"))); + } + if (jsonObj.get("intMinimum") != null && !jsonObj.get("intMinimum").isJsonNull()) { if (!jsonObj.get("intMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -378,6 +656,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("longStandard") != null && !jsonObj.get("longStandard").isJsonNull()) { + if (!jsonObj.get("longStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longStandard"))); + } + } + + if (jsonObj.get("longNullable") != null && !jsonObj.get("longNullable").isJsonNull()) { + if (!jsonObj.get("longNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longNullable"))); + } + } + + if (!jsonObj.get("longRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequired"))); + } + + if (!jsonObj.get("longRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequiredNullable"))); + } + if (jsonObj.get("longMinimum") != null && !jsonObj.get("longMinimum").isJsonNull()) { if (!jsonObj.get("longMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -408,6 +722,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("bigDecimalStandard") != null && !jsonObj.get("bigDecimalStandard").isJsonNull()) { + if (!jsonObj.get("bigDecimalStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalStandard"))); + } + } + + if (jsonObj.get("bigDecimalNullable") != null && !jsonObj.get("bigDecimalNullable").isJsonNull()) { + if (!jsonObj.get("bigDecimalNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalNullable"))); + } + } + + if (!jsonObj.get("bigDecimalRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequired"))); + } + + if (!jsonObj.get("bigDecimalRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequiredNullable"))); + } + if (jsonObj.get("bigDecimalMinimum") != null && !jsonObj.get("bigDecimalMinimum").isJsonNull()) { if (!jsonObj.get("bigDecimalMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithNullableFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithNullableFieldsOfEachType.java index 885914c3..0a3cc91e 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithNullableFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.enumUnknownDefaultCase.ExampleNullableEnum; import io.github.chrimle.o2jrm.enumUnknownDefaultCase.ExampleNullableRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.google.gson.Gson; @@ -46,62 +41,32 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6")); + Set.of("field3")); public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } @@ -145,22 +110,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -169,30 +118,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - if (jsonObj.get("field7") != null && !jsonObj.get("field7").isJsonNull()) { ExampleNullableRecord.validateJsonElement(jsonObj.get("field7")); } diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithRequiredFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithRequiredFieldsOfEachType.java index 95f81cd4..43e1b121 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithRequiredFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithRequiredFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.enumUnknownDefaultCase.ExampleEnum; import io.github.chrimle.o2jrm.enumUnknownDefaultCase.ExampleRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.google.gson.Gson; import com.google.gson.JsonElement; @@ -45,64 +40,34 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } @@ -146,22 +111,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -170,30 +119,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - ExampleRecord.validateJsonElement(jsonObj.get("field7")); ExampleEnum.validateJsonElement(jsonObj.get("field8")); diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/ExampleRecordWithDefaultFields.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 4e5e3427..00000000 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.generateBuilders; - -import java.util.Objects; -import com.google.gson.TypeAdapter; -import com.google.gson.annotations.JsonAdapter; -import com.google.gson.annotations.SerializedName; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import java.io.IOException; -import java.util.Arrays; - -import com.google.gson.Gson; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.TypeAdapterFactory; -import com.google.gson.reflect.TypeToken; -import java.util.HashSet; -import java.util.Set; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - /** A set containing the names of all instance fields defined in this class. */ - public static final HashSet openapiFields = - new HashSet<>( - Set.of("field1")); - - /** A set containing the names of all required fields defined in this class. */ - public static final HashSet openapiRequiredFields = new HashSet<>(); - - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } - - /** Builder class for {@link ExampleRecordWithDefaultFields }. */ - public static class Builder { - - private String field1; - - /** - * Sets the value of {@link ExampleRecordWithDefaultFields#field1 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field1 a String field with a default value. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field1(final String field1) { - this.field1 = field1; - return this; - } - - /** - * Builds a {@link ExampleRecordWithDefaultFields }-instance with the values provided in preceding - * builder methods. - * - *

NOTE: Pass-by-reference is used! - * - * @return a new {@link ExampleRecordWithDefaultFields }-instance. - */ - public ExampleRecordWithDefaultFields build() { - return new ExampleRecordWithDefaultFields( - field1); - } - } - - /** Creates a new {@link Builder}-instance. */ - public static ExampleRecordWithDefaultFields.Builder builder() { - return new ExampleRecordWithDefaultFields.Builder(); - } - - /** - * Validates the JSON Element and throws an exception if issues are found. - * - * @param jsonElement to validate. - * @throws IOException if the JSON Element is not a valid {@link ExampleRecordWithDefaultFields } object. - */ - public static void validateJsonElement(final JsonElement jsonElement) throws IOException { - for (final String key : jsonElement.getAsJsonObject().keySet()) { - if (!ExampleRecordWithDefaultFields.openapiFields.contains(key)) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "The field `%s` in the JSON string is not defined in the `ExampleRecordWithDefaultFields` properties. JSON: %s", - key, - jsonElement)); - } - } - - final JsonObject jsonObj = jsonElement.getAsJsonObject(); - - if (jsonObj.get("field1") != null && !jsonObj.get("field1").isJsonNull()) { - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - } - } - - /** - * Creates {@link TypeAdapter}s for {@link ExampleRecordWithDefaultFields }s and other - * assignable types. - */ - public static class CustomTypeAdapterFactory implements TypeAdapterFactory { - - /** - * {@inheritDoc} - * - * @param gson to create the {@link TypeAdapter} from. - * @param type to serialize/deserialize. - * @return an (anonymous) instance of {@link TypeAdapter}, or - * {@code null} if {@code T} is not assignable to {@link ExampleRecordWithDefaultFields }. - * @param class to serialize/deserialize. - */ - @SuppressWarnings("unchecked") - @Override - public TypeAdapter create(final Gson gson, final TypeToken type) { - if (!ExampleRecordWithDefaultFields.class.isAssignableFrom(type.getRawType())) { - return null; - } - final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); - final TypeAdapter thisAdapter = - gson.getDelegateAdapter(this, TypeToken.get(ExampleRecordWithDefaultFields.class)); - - return (TypeAdapter) - new TypeAdapter() { - - @Override - public void write(final JsonWriter out, final ExampleRecordWithDefaultFields value) - throws IOException { - final JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); - elementAdapter.write(out, obj); - } - - @Override - public ExampleRecordWithDefaultFields read(final JsonReader in) throws IOException { - final JsonElement jsonElement = elementAdapter.read(in); - validateJsonElement(jsonElement); - return thisAdapter.fromJsonTree(jsonElement); - } - }.nullSafe(); - } - } -} diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithAllConstraints.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithAllConstraints.java index 97cc4ec1..484ed38f 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithAllConstraints.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithAllConstraints.java @@ -28,7 +28,9 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,31 +45,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -79,15 +111,33 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @@ -95,7 +145,13 @@ public record RecordWithAllConstraints( /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("stringStandard", + Set.of("booleanStandard", + "booleanDefault", + "booleanNullable", + "booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringStandard", "stringDefault", "stringNullable", "stringRequired", @@ -106,15 +162,33 @@ public record RecordWithAllConstraints( "stringMinLength", "stringMaxLength", "stringMinAndMaxLength", + "arrayNullable", + "arrayRequiredNullable", "arrayMinItems", "arrayMaxItems", "arrayMinAndMaxItems", + "arrayUniqueStandard", + "arrayUniqueRequired", + "arrayUniqueNullable", + "arrayUniqueRequiredNullable", + "intStandard", + "intNullable", + "intRequired", + "intRequiredNullable", "intMinimum", "intMaximum", "intMinimumAndMaximum", + "longStandard", + "longNullable", + "longRequired", + "longRequiredNullable", "longMinimum", "longMaximum", "longMinimumAndMaximum", + "bigDecimalStandard", + "bigDecimalNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable", "bigDecimalMinimum", "bigDecimalMaximum", "bigDecimalMinimumAndMaximum")); @@ -122,11 +196,29 @@ public record RecordWithAllConstraints( /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("stringRequired", + Set.of("booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringRequired", "stringRequiredNullable", - "stringRequiredPattern")); + "stringRequiredPattern", + "arrayRequiredNullable", + "arrayUniqueRequired", + "arrayUniqueRequiredNullable", + "intRequired", + "intRequiredNullable", + "longRequired", + "longRequiredNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable")); public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -138,18 +230,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -161,15 +277,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; @@ -178,6 +312,12 @@ public RecordWithAllConstraints( /** Builder class for {@link RecordWithAllConstraints }. */ public static class Builder { + private Boolean booleanStandard; + private Boolean booleanDefault; + private Boolean booleanNullable; + private Boolean booleanRequired; + private Boolean booleanRequiredDefault; + private Boolean booleanRequiredNullable; private String stringStandard; private String stringDefault; private String stringNullable; @@ -189,25 +329,121 @@ public static class Builder { private String stringMinLength; private String stringMaxLength; private String stringMinAndMaxLength; + private List arrayNullable; + private List arrayRequiredNullable; private List arrayMinItems; private List arrayMaxItems; private List arrayMinAndMaxItems; + private Set arrayUniqueStandard; + private Set arrayUniqueRequired; + private Set arrayUniqueNullable; + private Set arrayUniqueRequiredNullable; + private Integer intStandard; + private Integer intNullable; + private Integer intRequired; + private Integer intRequiredNullable; private Integer intMinimum; private Integer intMaximum; private Integer intMinimumAndMaximum; + private Long longStandard; + private Long longNullable; + private Long longRequired; + private Long longRequiredNullable; private Long longMinimum; private Long longMaximum; private Long longMinimumAndMaximum; + private BigDecimal bigDecimalStandard; + private BigDecimal bigDecimalNullable; + private BigDecimal bigDecimalRequired; + private BigDecimal bigDecimalRequiredNullable; private BigDecimal bigDecimalMinimum; private BigDecimal bigDecimalMaximum; private BigDecimal bigDecimalMinimumAndMaximum; + /** + * Sets the value of {@link RecordWithAllConstraints#booleanStandard }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanStandard Non-required, non-nullable Boolean field.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanStandard(final Boolean booleanStandard) { + this.booleanStandard = booleanStandard; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#booleanDefault }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanDefault Non-required, non-nullable Boolean with a default value.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanDefault(final Boolean booleanDefault) { + this.booleanDefault = booleanDefault; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#booleanNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanNullable Non-required, nullable Boolean field.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanNullable(final Boolean booleanNullable) { + this.booleanNullable = booleanNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#booleanRequired }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanRequired Required, non-nullable Boolean field.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanRequired(final Boolean booleanRequired) { + this.booleanRequired = booleanRequired; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#booleanRequiredDefault }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanRequiredDefault(final Boolean booleanRequiredDefault) { + this.booleanRequiredDefault = booleanRequiredDefault; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#booleanRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanRequiredNullable Required, nullable Boolean field.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanRequiredNullable(final Boolean booleanRequiredNullable) { + this.booleanRequiredNullable = booleanRequiredNullable; + return this; + } + /** * Sets the value of {@link RecordWithAllConstraints#stringStandard }. * *

NOTE: Pass-by-reference is used! * - * @param stringStandard sets the value of stringStandard. + * @param stringStandard Non-required, non-nullable String field.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringStandard(final String stringStandard) { @@ -220,7 +456,7 @@ public Builder stringStandard(final String stringStandard) { * *

NOTE: Pass-by-reference is used! * - * @param stringDefault sets the value of stringDefault. + * @param stringDefault Non-required, non-nullable String field with a default value.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringDefault(final String stringDefault) { @@ -233,7 +469,7 @@ public Builder stringDefault(final String stringDefault) { * *

NOTE: Pass-by-reference is used! * - * @param stringNullable sets the value of stringNullable. + * @param stringNullable Non-required, nullable String field.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringNullable(final String stringNullable) { @@ -246,7 +482,7 @@ public Builder stringNullable(final String stringNullable) { * *

NOTE: Pass-by-reference is used! * - * @param stringRequired sets the value of stringRequired. + * @param stringRequired Required, non-nullable String field.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringRequired(final String stringRequired) { @@ -259,7 +495,7 @@ public Builder stringRequired(final String stringRequired) { * *

NOTE: Pass-by-reference is used! * - * @param stringRequiredNullable sets the value of stringRequiredNullable. + * @param stringRequiredNullable Required, nullable String field.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringRequiredNullable(final String stringRequiredNullable) { @@ -272,7 +508,7 @@ public Builder stringRequiredNullable(final String stringRequiredNullable) { * *

NOTE: Pass-by-reference is used! * - * @param stringRequiredPattern sets the value of stringRequiredPattern. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringRequiredPattern(final String stringRequiredPattern) { @@ -285,7 +521,7 @@ public Builder stringRequiredPattern(final String stringRequiredPattern) { * *

NOTE: Pass-by-reference is used! * - * @param stringEmailFormat sets the value of stringEmailFormat. + * @param stringEmailFormat Non-required, non-nullable String field with Email format.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringEmailFormat(final String stringEmailFormat) { @@ -298,7 +534,7 @@ public Builder stringEmailFormat(final String stringEmailFormat) { * *

NOTE: Pass-by-reference is used! * - * @param stringUuidFormat sets the value of stringUuidFormat. + * @param stringUuidFormat Non-required, non-nullable UUID field.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringUuidFormat(final UUID stringUuidFormat) { @@ -311,7 +547,7 @@ public Builder stringUuidFormat(final UUID stringUuidFormat) { * *

NOTE: Pass-by-reference is used! * - * @param stringMinLength sets the value of stringMinLength. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringMinLength(final String stringMinLength) { @@ -324,7 +560,7 @@ public Builder stringMinLength(final String stringMinLength) { * *

NOTE: Pass-by-reference is used! * - * @param stringMaxLength sets the value of stringMaxLength. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringMaxLength(final String stringMaxLength) { @@ -337,7 +573,7 @@ public Builder stringMaxLength(final String stringMaxLength) { * *

NOTE: Pass-by-reference is used! * - * @param stringMinAndMaxLength sets the value of stringMinAndMaxLength. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringMinAndMaxLength(final String stringMinAndMaxLength) { @@ -345,12 +581,38 @@ public Builder stringMinAndMaxLength(final String stringMinAndMaxLength) { return this; } + /** + * Sets the value of {@link RecordWithAllConstraints#arrayNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayNullable Non-required, nullable List.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayNullable(final List arrayNullable) { + this.arrayNullable = arrayNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#arrayRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayRequiredNullable Required, nullable List.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayRequiredNullable(final List arrayRequiredNullable) { + this.arrayRequiredNullable = arrayRequiredNullable; + return this; + } + /** * Sets the value of {@link RecordWithAllConstraints#arrayMinItems }. * *

NOTE: Pass-by-reference is used! * - * @param arrayMinItems sets the value of arrayMinItems. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1.. * @return this {@link Builder}-instance for method-chaining. */ public Builder arrayMinItems(final List arrayMinItems) { @@ -363,7 +625,7 @@ public Builder arrayMinItems(final List arrayMinItems) { * *

NOTE: Pass-by-reference is used! * - * @param arrayMaxItems sets the value of arrayMaxItems. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10.. * @return this {@link Builder}-instance for method-chaining. */ public Builder arrayMaxItems(final List arrayMaxItems) { @@ -376,7 +638,7 @@ public Builder arrayMaxItems(final List arrayMaxItems) { * *

NOTE: Pass-by-reference is used! * - * @param arrayMinAndMaxItems sets the value of arrayMinAndMaxItems. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10.. * @return this {@link Builder}-instance for method-chaining. */ public Builder arrayMinAndMaxItems(final List arrayMinAndMaxItems) { @@ -384,12 +646,116 @@ public Builder arrayMinAndMaxItems(final List arrayMinAndMaxItems) { return this; } + /** + * Sets the value of {@link RecordWithAllConstraints#arrayUniqueStandard }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayUniqueStandard Non-required, non-nullable Set.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayUniqueStandard(final Set arrayUniqueStandard) { + this.arrayUniqueStandard = arrayUniqueStandard; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#arrayUniqueRequired }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayUniqueRequired Required, non-nullable Set.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayUniqueRequired(final Set arrayUniqueRequired) { + this.arrayUniqueRequired = arrayUniqueRequired; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#arrayUniqueNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayUniqueNullable Non-required, nullable Set.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayUniqueNullable(final Set arrayUniqueNullable) { + this.arrayUniqueNullable = arrayUniqueNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#arrayUniqueRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayUniqueRequiredNullable Required, nullable Set.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayUniqueRequiredNullable(final Set arrayUniqueRequiredNullable) { + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#intStandard }. + * + *

NOTE: Pass-by-reference is used! + * + * @param intStandard Non-required, non-nullable Integer.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder intStandard(final Integer intStandard) { + this.intStandard = intStandard; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#intNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param intNullable Non-required, nullable Integer.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder intNullable(final Integer intNullable) { + this.intNullable = intNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#intRequired }. + * + *

NOTE: Pass-by-reference is used! + * + * @param intRequired Required, non-nullable Integer.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder intRequired(final Integer intRequired) { + this.intRequired = intRequired; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#intRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param intRequiredNullable Required, nullable Integer.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder intRequiredNullable(final Integer intRequiredNullable) { + this.intRequiredNullable = intRequiredNullable; + return this; + } + /** * Sets the value of {@link RecordWithAllConstraints#intMinimum }. * *

NOTE: Pass-by-reference is used! * - * @param intMinimum sets the value of intMinimum. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18.. * @return this {@link Builder}-instance for method-chaining. */ public Builder intMinimum(final Integer intMinimum) { @@ -402,7 +768,7 @@ public Builder intMinimum(final Integer intMinimum) { * *

NOTE: Pass-by-reference is used! * - * @param intMaximum sets the value of intMaximum. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder intMaximum(final Integer intMaximum) { @@ -415,7 +781,7 @@ public Builder intMaximum(final Integer intMaximum) { * *

NOTE: Pass-by-reference is used! * - * @param intMinimumAndMaximum sets the value of intMinimumAndMaximum. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder intMinimumAndMaximum(final Integer intMinimumAndMaximum) { @@ -423,12 +789,64 @@ public Builder intMinimumAndMaximum(final Integer intMinimumAndMaximum) { return this; } + /** + * Sets the value of {@link RecordWithAllConstraints#longStandard }. + * + *

NOTE: Pass-by-reference is used! + * + * @param longStandard Non-required, non-nullable Long.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder longStandard(final Long longStandard) { + this.longStandard = longStandard; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#longNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param longNullable Non-required, nullable Long.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder longNullable(final Long longNullable) { + this.longNullable = longNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#longRequired }. + * + *

NOTE: Pass-by-reference is used! + * + * @param longRequired Required, non-nullable Long.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder longRequired(final Long longRequired) { + this.longRequired = longRequired; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#longRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param longRequiredNullable Required, nullable Long.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder longRequiredNullable(final Long longRequiredNullable) { + this.longRequiredNullable = longRequiredNullable; + return this; + } + /** * Sets the value of {@link RecordWithAllConstraints#longMinimum }. * *

NOTE: Pass-by-reference is used! * - * @param longMinimum sets the value of longMinimum. + * @param longMinimum Non-required, non-nullable Long with minimum: 18.. * @return this {@link Builder}-instance for method-chaining. */ public Builder longMinimum(final Long longMinimum) { @@ -441,7 +859,7 @@ public Builder longMinimum(final Long longMinimum) { * *

NOTE: Pass-by-reference is used! * - * @param longMaximum sets the value of longMaximum. + * @param longMaximum Non-required, non-nullable Long with maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder longMaximum(final Long longMaximum) { @@ -454,7 +872,7 @@ public Builder longMaximum(final Long longMaximum) { * *

NOTE: Pass-by-reference is used! * - * @param longMinimumAndMaximum sets the value of longMinimumAndMaximum. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder longMinimumAndMaximum(final Long longMinimumAndMaximum) { @@ -462,12 +880,64 @@ public Builder longMinimumAndMaximum(final Long longMinimumAndMaximum) { return this; } + /** + * Sets the value of {@link RecordWithAllConstraints#bigDecimalStandard }. + * + *

NOTE: Pass-by-reference is used! + * + * @param bigDecimalStandard Non-required, non-nullable BigDecimal.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder bigDecimalStandard(final BigDecimal bigDecimalStandard) { + this.bigDecimalStandard = bigDecimalStandard; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#bigDecimalNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param bigDecimalNullable Non-required, nullable BigDecimal.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder bigDecimalNullable(final BigDecimal bigDecimalNullable) { + this.bigDecimalNullable = bigDecimalNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#bigDecimalRequired }. + * + *

NOTE: Pass-by-reference is used! + * + * @param bigDecimalRequired Required, non-nullable BigDecimal.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder bigDecimalRequired(final BigDecimal bigDecimalRequired) { + this.bigDecimalRequired = bigDecimalRequired; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#bigDecimalRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param bigDecimalRequiredNullable Required, nullable BigDecimal.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder bigDecimalRequiredNullable(final BigDecimal bigDecimalRequiredNullable) { + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; + return this; + } + /** * Sets the value of {@link RecordWithAllConstraints#bigDecimalMinimum }. * *

NOTE: Pass-by-reference is used! * - * @param bigDecimalMinimum sets the value of bigDecimalMinimum. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0.. * @return this {@link Builder}-instance for method-chaining. */ public Builder bigDecimalMinimum(final BigDecimal bigDecimalMinimum) { @@ -480,7 +950,7 @@ public Builder bigDecimalMinimum(final BigDecimal bigDecimalMinimum) { * *

NOTE: Pass-by-reference is used! * - * @param bigDecimalMaximum sets the value of bigDecimalMaximum. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder bigDecimalMaximum(final BigDecimal bigDecimalMaximum) { @@ -493,7 +963,7 @@ public Builder bigDecimalMaximum(final BigDecimal bigDecimalMaximum) { * *

NOTE: Pass-by-reference is used! * - * @param bigDecimalMinimumAndMaximum sets the value of bigDecimalMinimumAndMaximum. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder bigDecimalMinimumAndMaximum(final BigDecimal bigDecimalMinimumAndMaximum) { @@ -511,6 +981,12 @@ public Builder bigDecimalMinimumAndMaximum(final BigDecimal bigDecimalMinimumAnd */ public RecordWithAllConstraints build() { return new RecordWithAllConstraints( + booleanStandard, + booleanDefault, + booleanNullable, + booleanRequired, + booleanRequiredDefault, + booleanRequiredNullable, stringStandard, stringDefault, stringNullable, @@ -522,15 +998,33 @@ public RecordWithAllConstraints build() { stringMinLength, stringMaxLength, stringMinAndMaxLength, + arrayNullable, + arrayRequiredNullable, arrayMinItems, arrayMaxItems, arrayMinAndMaxItems, + arrayUniqueStandard, + arrayUniqueRequired, + arrayUniqueNullable, + arrayUniqueRequiredNullable, + intStandard, + intNullable, + intRequired, + intRequiredNullable, intMinimum, intMaximum, intMinimumAndMaximum, + longStandard, + longNullable, + longRequired, + longRequiredNullable, longMinimum, longMaximum, longMinimumAndMaximum, + bigDecimalStandard, + bigDecimalNullable, + bigDecimalRequired, + bigDecimalRequiredNullable, bigDecimalMinimum, bigDecimalMaximum, bigDecimalMinimumAndMaximum); @@ -581,6 +1075,60 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (jsonObj.get("booleanStandard") != null && !jsonObj.get("booleanStandard").isJsonNull()) { + if (!jsonObj.get("booleanStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanStandard"))); + } + } + + if (jsonObj.get("booleanDefault") != null && !jsonObj.get("booleanDefault").isJsonNull()) { + if (!jsonObj.get("booleanDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanDefault"))); + } + } + + if (jsonObj.get("booleanNullable") != null && !jsonObj.get("booleanNullable").isJsonNull()) { + if (!jsonObj.get("booleanNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanNullable"))); + } + } + + if (!jsonObj.get("booleanRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequired"))); + } + + if (!jsonObj.get("booleanRequiredDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredDefault"))); + } + + if (!jsonObj.get("booleanRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredNullable"))); + } + if (jsonObj.get("stringStandard") != null && !jsonObj.get("stringStandard").isJsonNull()) { if (!jsonObj.get("stringStandard").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -685,6 +1233,24 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayNullable") != null && !jsonObj.get("arrayNullable").isJsonNull()) { + if (!jsonObj.get("arrayNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayNullable"))); + } + } + + if (!jsonObj.get("arrayRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayRequiredNullable"))); + } + if (jsonObj.get("arrayMinItems") != null && !jsonObj.get("arrayMinItems").isJsonNull()) { if (!jsonObj.get("arrayMinItems").isJsonArray()) { throw new IllegalArgumentException( @@ -715,6 +1281,78 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayUniqueStandard") != null && !jsonObj.get("arrayUniqueStandard").isJsonNull()) { + if (!jsonObj.get("arrayUniqueStandard").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueStandard` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueStandard"))); + } + } + + if (!jsonObj.get("arrayUniqueRequired").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequired` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequired"))); + } + + if (jsonObj.get("arrayUniqueNullable") != null && !jsonObj.get("arrayUniqueNullable").isJsonNull()) { + if (!jsonObj.get("arrayUniqueNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueNullable"))); + } + } + + if (!jsonObj.get("arrayUniqueRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequiredNullable"))); + } + + if (jsonObj.get("intStandard") != null && !jsonObj.get("intStandard").isJsonNull()) { + if (!jsonObj.get("intStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intStandard"))); + } + } + + if (jsonObj.get("intNullable") != null && !jsonObj.get("intNullable").isJsonNull()) { + if (!jsonObj.get("intNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intNullable"))); + } + } + + if (!jsonObj.get("intRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequired"))); + } + + if (!jsonObj.get("intRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequiredNullable"))); + } + if (jsonObj.get("intMinimum") != null && !jsonObj.get("intMinimum").isJsonNull()) { if (!jsonObj.get("intMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -745,6 +1383,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("longStandard") != null && !jsonObj.get("longStandard").isJsonNull()) { + if (!jsonObj.get("longStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longStandard"))); + } + } + + if (jsonObj.get("longNullable") != null && !jsonObj.get("longNullable").isJsonNull()) { + if (!jsonObj.get("longNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longNullable"))); + } + } + + if (!jsonObj.get("longRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequired"))); + } + + if (!jsonObj.get("longRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequiredNullable"))); + } + if (jsonObj.get("longMinimum") != null && !jsonObj.get("longMinimum").isJsonNull()) { if (!jsonObj.get("longMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -775,6 +1449,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("bigDecimalStandard") != null && !jsonObj.get("bigDecimalStandard").isJsonNull()) { + if (!jsonObj.get("bigDecimalStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalStandard"))); + } + } + + if (jsonObj.get("bigDecimalNullable") != null && !jsonObj.get("bigDecimalNullable").isJsonNull()) { + if (!jsonObj.get("bigDecimalNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalNullable"))); + } + } + + if (!jsonObj.get("bigDecimalRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequired"))); + } + + if (!jsonObj.get("bigDecimalRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequiredNullable"))); + } + if (jsonObj.get("bigDecimalMinimum") != null && !jsonObj.get("bigDecimalMinimum").isJsonNull()) { if (!jsonObj.get("bigDecimalMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithNullableFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithNullableFieldsOfEachType.java index 4284726b..0c1f0ed4 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithNullableFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.generateBuilders.ExampleNullableEnum; import io.github.chrimle.o2jrm.generateBuilders.ExampleNullableRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.google.gson.Gson; @@ -46,62 +41,32 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6")); + Set.of("field3")); public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } @@ -109,41 +74,10 @@ public RecordWithNullableFieldsOfEachType( /** Builder class for {@link RecordWithNullableFieldsOfEachType }. */ public static class Builder { - private Boolean field1; - private String field2; private Integer field3; - private BigDecimal field4; - private List field5; - private Set field6; private ExampleNullableRecord field7; private ExampleNullableEnum field8; - /** - * Sets the value of {@link RecordWithNullableFieldsOfEachType#field1 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field1 a Boolean field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field1(final Boolean field1) { - this.field1 = field1; - return this; - } - - /** - * Sets the value of {@link RecordWithNullableFieldsOfEachType#field2 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field2 a String field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field2(final String field2) { - this.field2 = field2; - return this; - } - /** * Sets the value of {@link RecordWithNullableFieldsOfEachType#field3 }. * @@ -157,45 +91,6 @@ public Builder field3(final Integer field3) { return this; } - /** - * Sets the value of {@link RecordWithNullableFieldsOfEachType#field4 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field4 a Number field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field4(final BigDecimal field4) { - this.field4 = field4; - return this; - } - - /** - * Sets the value of {@link RecordWithNullableFieldsOfEachType#field5 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field5 an Array of Boolean field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field5(final List field5) { - this.field5 = field5; - return this; - } - - /** - * Sets the value of {@link RecordWithNullableFieldsOfEachType#field6 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field6 a Set field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field6(final Set field6) { - this.field6 = field6; - return this; - } - /** * Sets the value of {@link RecordWithNullableFieldsOfEachType#field7 }. * @@ -232,12 +127,7 @@ public Builder field8(final ExampleNullableEnum field8) { */ public RecordWithNullableFieldsOfEachType build() { return new RecordWithNullableFieldsOfEachType( - field1, - field2, field3, - field4, - field5, - field6, field7, field8); } @@ -287,22 +177,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -311,30 +185,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - if (jsonObj.get("field7") != null && !jsonObj.get("field7").isJsonNull()) { ExampleNullableRecord.validateJsonElement(jsonObj.get("field7")); } diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithRequiredFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithRequiredFieldsOfEachType.java index a598faa3..536d90e5 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithRequiredFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithRequiredFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.generateBuilders.ExampleEnum; import io.github.chrimle.o2jrm.generateBuilders.ExampleRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.google.gson.Gson; import com.google.gson.JsonElement; @@ -45,64 +40,34 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } @@ -110,41 +75,10 @@ public RecordWithRequiredFieldsOfEachType( /** Builder class for {@link RecordWithRequiredFieldsOfEachType }. */ public static class Builder { - private Boolean field1; - private String field2; private Integer field3; - private BigDecimal field4; - private List field5; - private Set field6; private ExampleRecord field7; private ExampleEnum field8; - /** - * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field1 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field1 a Boolean field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field1(final Boolean field1) { - this.field1 = field1; - return this; - } - - /** - * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field2 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field2 a String field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field2(final String field2) { - this.field2 = field2; - return this; - } - /** * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field3 }. * @@ -158,45 +92,6 @@ public Builder field3(final Integer field3) { return this; } - /** - * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field4 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field4 a Number field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field4(final BigDecimal field4) { - this.field4 = field4; - return this; - } - - /** - * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field5 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field5 an Array of Boolean field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field5(final List field5) { - this.field5 = field5; - return this; - } - - /** - * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field6 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field6 a Set field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field6(final Set field6) { - this.field6 = field6; - return this; - } - /** * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field7 }. * @@ -233,12 +128,7 @@ public Builder field8(final ExampleEnum field8) { */ public RecordWithRequiredFieldsOfEachType build() { return new RecordWithRequiredFieldsOfEachType( - field1, - field2, field3, - field4, - field5, - field6, field7, field8); } @@ -288,22 +178,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -312,30 +186,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - ExampleRecord.validateJsonElement(jsonObj.get("field7")); ExampleEnum.validateJsonElement(jsonObj.get("field8")); diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/ExampleRecordWithDefaultFields.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 3dc4b57c..00000000 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.serializableModel; - -import java.util.Objects; -import com.google.gson.TypeAdapter; -import com.google.gson.annotations.JsonAdapter; -import com.google.gson.annotations.SerializedName; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import java.io.IOException; -import java.util.Arrays; -import java.io.Serializable; - -import com.google.gson.Gson; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.TypeAdapterFactory; -import com.google.gson.reflect.TypeToken; -import java.util.HashSet; -import java.util.Set; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) - implements Serializable { - - /** A set containing the names of all instance fields defined in this class. */ - public static final HashSet openapiFields = - new HashSet<>( - Set.of("field1")); - - /** A set containing the names of all required fields defined in this class. */ - public static final HashSet openapiRequiredFields = new HashSet<>(); - - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } - - /** - * Validates the JSON Element and throws an exception if issues are found. - * - * @param jsonElement to validate. - * @throws IOException if the JSON Element is not a valid {@link ExampleRecordWithDefaultFields } object. - */ - public static void validateJsonElement(final JsonElement jsonElement) throws IOException { - for (final String key : jsonElement.getAsJsonObject().keySet()) { - if (!ExampleRecordWithDefaultFields.openapiFields.contains(key)) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "The field `%s` in the JSON string is not defined in the `ExampleRecordWithDefaultFields` properties. JSON: %s", - key, - jsonElement)); - } - } - - final JsonObject jsonObj = jsonElement.getAsJsonObject(); - - if (jsonObj.get("field1") != null && !jsonObj.get("field1").isJsonNull()) { - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - } - } - - /** - * Creates {@link TypeAdapter}s for {@link ExampleRecordWithDefaultFields }s and other - * assignable types. - */ - public static class CustomTypeAdapterFactory implements TypeAdapterFactory { - - /** - * {@inheritDoc} - * - * @param gson to create the {@link TypeAdapter} from. - * @param type to serialize/deserialize. - * @return an (anonymous) instance of {@link TypeAdapter}, or - * {@code null} if {@code T} is not assignable to {@link ExampleRecordWithDefaultFields }. - * @param class to serialize/deserialize. - */ - @SuppressWarnings("unchecked") - @Override - public TypeAdapter create(final Gson gson, final TypeToken type) { - if (!ExampleRecordWithDefaultFields.class.isAssignableFrom(type.getRawType())) { - return null; - } - final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); - final TypeAdapter thisAdapter = - gson.getDelegateAdapter(this, TypeToken.get(ExampleRecordWithDefaultFields.class)); - - return (TypeAdapter) - new TypeAdapter() { - - @Override - public void write(final JsonWriter out, final ExampleRecordWithDefaultFields value) - throws IOException { - final JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); - elementAdapter.write(out, obj); - } - - @Override - public ExampleRecordWithDefaultFields read(final JsonReader in) throws IOException { - final JsonElement jsonElement = elementAdapter.read(in); - validateJsonElement(jsonElement); - return thisAdapter.fromJsonTree(jsonElement); - } - }.nullSafe(); - } - } -} diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithAllConstraints.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithAllConstraints.java index 5cf4d5b3..d141f3aa 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithAllConstraints.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithAllConstraints.java @@ -28,7 +28,9 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import java.io.Serializable; @@ -44,31 +46,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -80,15 +112,33 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) @@ -97,7 +147,13 @@ public record RecordWithAllConstraints( /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("stringStandard", + Set.of("booleanStandard", + "booleanDefault", + "booleanNullable", + "booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringStandard", "stringDefault", "stringNullable", "stringRequired", @@ -108,15 +164,33 @@ public record RecordWithAllConstraints( "stringMinLength", "stringMaxLength", "stringMinAndMaxLength", + "arrayNullable", + "arrayRequiredNullable", "arrayMinItems", "arrayMaxItems", "arrayMinAndMaxItems", + "arrayUniqueStandard", + "arrayUniqueRequired", + "arrayUniqueNullable", + "arrayUniqueRequiredNullable", + "intStandard", + "intNullable", + "intRequired", + "intRequiredNullable", "intMinimum", "intMaximum", "intMinimumAndMaximum", + "longStandard", + "longNullable", + "longRequired", + "longRequiredNullable", "longMinimum", "longMaximum", "longMinimumAndMaximum", + "bigDecimalStandard", + "bigDecimalNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable", "bigDecimalMinimum", "bigDecimalMaximum", "bigDecimalMinimumAndMaximum")); @@ -124,11 +198,29 @@ public record RecordWithAllConstraints( /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("stringRequired", + Set.of("booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringRequired", "stringRequiredNullable", - "stringRequiredPattern")); + "stringRequiredPattern", + "arrayRequiredNullable", + "arrayUniqueRequired", + "arrayUniqueRequiredNullable", + "intRequired", + "intRequiredNullable", + "longRequired", + "longRequiredNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable")); public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -140,18 +232,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -163,15 +279,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; @@ -216,6 +350,60 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (jsonObj.get("booleanStandard") != null && !jsonObj.get("booleanStandard").isJsonNull()) { + if (!jsonObj.get("booleanStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanStandard"))); + } + } + + if (jsonObj.get("booleanDefault") != null && !jsonObj.get("booleanDefault").isJsonNull()) { + if (!jsonObj.get("booleanDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanDefault"))); + } + } + + if (jsonObj.get("booleanNullable") != null && !jsonObj.get("booleanNullable").isJsonNull()) { + if (!jsonObj.get("booleanNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanNullable"))); + } + } + + if (!jsonObj.get("booleanRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequired"))); + } + + if (!jsonObj.get("booleanRequiredDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredDefault"))); + } + + if (!jsonObj.get("booleanRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredNullable"))); + } + if (jsonObj.get("stringStandard") != null && !jsonObj.get("stringStandard").isJsonNull()) { if (!jsonObj.get("stringStandard").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -320,6 +508,24 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayNullable") != null && !jsonObj.get("arrayNullable").isJsonNull()) { + if (!jsonObj.get("arrayNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayNullable"))); + } + } + + if (!jsonObj.get("arrayRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayRequiredNullable"))); + } + if (jsonObj.get("arrayMinItems") != null && !jsonObj.get("arrayMinItems").isJsonNull()) { if (!jsonObj.get("arrayMinItems").isJsonArray()) { throw new IllegalArgumentException( @@ -350,6 +556,78 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayUniqueStandard") != null && !jsonObj.get("arrayUniqueStandard").isJsonNull()) { + if (!jsonObj.get("arrayUniqueStandard").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueStandard` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueStandard"))); + } + } + + if (!jsonObj.get("arrayUniqueRequired").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequired` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequired"))); + } + + if (jsonObj.get("arrayUniqueNullable") != null && !jsonObj.get("arrayUniqueNullable").isJsonNull()) { + if (!jsonObj.get("arrayUniqueNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueNullable"))); + } + } + + if (!jsonObj.get("arrayUniqueRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequiredNullable"))); + } + + if (jsonObj.get("intStandard") != null && !jsonObj.get("intStandard").isJsonNull()) { + if (!jsonObj.get("intStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intStandard"))); + } + } + + if (jsonObj.get("intNullable") != null && !jsonObj.get("intNullable").isJsonNull()) { + if (!jsonObj.get("intNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intNullable"))); + } + } + + if (!jsonObj.get("intRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequired"))); + } + + if (!jsonObj.get("intRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequiredNullable"))); + } + if (jsonObj.get("intMinimum") != null && !jsonObj.get("intMinimum").isJsonNull()) { if (!jsonObj.get("intMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -380,6 +658,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("longStandard") != null && !jsonObj.get("longStandard").isJsonNull()) { + if (!jsonObj.get("longStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longStandard"))); + } + } + + if (jsonObj.get("longNullable") != null && !jsonObj.get("longNullable").isJsonNull()) { + if (!jsonObj.get("longNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longNullable"))); + } + } + + if (!jsonObj.get("longRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequired"))); + } + + if (!jsonObj.get("longRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequiredNullable"))); + } + if (jsonObj.get("longMinimum") != null && !jsonObj.get("longMinimum").isJsonNull()) { if (!jsonObj.get("longMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -410,6 +724,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("bigDecimalStandard") != null && !jsonObj.get("bigDecimalStandard").isJsonNull()) { + if (!jsonObj.get("bigDecimalStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalStandard"))); + } + } + + if (jsonObj.get("bigDecimalNullable") != null && !jsonObj.get("bigDecimalNullable").isJsonNull()) { + if (!jsonObj.get("bigDecimalNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalNullable"))); + } + } + + if (!jsonObj.get("bigDecimalRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequired"))); + } + + if (!jsonObj.get("bigDecimalRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequiredNullable"))); + } + if (jsonObj.get("bigDecimalMinimum") != null && !jsonObj.get("bigDecimalMinimum").isJsonNull()) { if (!jsonObj.get("bigDecimalMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithNullableFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithNullableFieldsOfEachType.java index 50fc1df2..c17812e1 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithNullableFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.serializableModel.ExampleNullableEnum; import io.github.chrimle.o2jrm.serializableModel.ExampleNullableRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import java.io.Serializable; @@ -47,22 +42,12 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) implements Serializable { @@ -70,40 +55,20 @@ public record RecordWithNullableFieldsOfEachType( /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6")); + Set.of("field3")); public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } @@ -147,22 +112,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -171,30 +120,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - if (jsonObj.get("field7") != null && !jsonObj.get("field7").isJsonNull()) { ExampleNullableRecord.validateJsonElement(jsonObj.get("field7")); } diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithRequiredFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithRequiredFieldsOfEachType.java index c408801e..e8aec62e 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithRequiredFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithRequiredFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.serializableModel.ExampleEnum; import io.github.chrimle.o2jrm.serializableModel.ExampleRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import java.io.Serializable; import com.google.gson.Gson; @@ -46,22 +41,12 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) implements Serializable { @@ -69,42 +54,22 @@ public record RecordWithRequiredFieldsOfEachType( /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } @@ -148,22 +113,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -172,30 +121,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - ExampleRecord.validateJsonElement(jsonObj.get("field7")); ExampleEnum.validateJsonElement(jsonObj.get("field8")); diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/ExampleRecordWithDefaultFields.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 99276e09..00000000 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.standard; - -import java.util.Objects; -import com.google.gson.TypeAdapter; -import com.google.gson.annotations.JsonAdapter; -import com.google.gson.annotations.SerializedName; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import java.io.IOException; -import java.util.Arrays; - -import com.google.gson.Gson; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.TypeAdapterFactory; -import com.google.gson.reflect.TypeToken; -import java.util.HashSet; -import java.util.Set; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - /** A set containing the names of all instance fields defined in this class. */ - public static final HashSet openapiFields = - new HashSet<>( - Set.of("field1")); - - /** A set containing the names of all required fields defined in this class. */ - public static final HashSet openapiRequiredFields = new HashSet<>(); - - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } - - /** - * Validates the JSON Element and throws an exception if issues are found. - * - * @param jsonElement to validate. - * @throws IOException if the JSON Element is not a valid {@link ExampleRecordWithDefaultFields } object. - */ - public static void validateJsonElement(final JsonElement jsonElement) throws IOException { - for (final String key : jsonElement.getAsJsonObject().keySet()) { - if (!ExampleRecordWithDefaultFields.openapiFields.contains(key)) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "The field `%s` in the JSON string is not defined in the `ExampleRecordWithDefaultFields` properties. JSON: %s", - key, - jsonElement)); - } - } - - final JsonObject jsonObj = jsonElement.getAsJsonObject(); - - if (jsonObj.get("field1") != null && !jsonObj.get("field1").isJsonNull()) { - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - } - } - - /** - * Creates {@link TypeAdapter}s for {@link ExampleRecordWithDefaultFields }s and other - * assignable types. - */ - public static class CustomTypeAdapterFactory implements TypeAdapterFactory { - - /** - * {@inheritDoc} - * - * @param gson to create the {@link TypeAdapter} from. - * @param type to serialize/deserialize. - * @return an (anonymous) instance of {@link TypeAdapter}, or - * {@code null} if {@code T} is not assignable to {@link ExampleRecordWithDefaultFields }. - * @param class to serialize/deserialize. - */ - @SuppressWarnings("unchecked") - @Override - public TypeAdapter create(final Gson gson, final TypeToken type) { - if (!ExampleRecordWithDefaultFields.class.isAssignableFrom(type.getRawType())) { - return null; - } - final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); - final TypeAdapter thisAdapter = - gson.getDelegateAdapter(this, TypeToken.get(ExampleRecordWithDefaultFields.class)); - - return (TypeAdapter) - new TypeAdapter() { - - @Override - public void write(final JsonWriter out, final ExampleRecordWithDefaultFields value) - throws IOException { - final JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); - elementAdapter.write(out, obj); - } - - @Override - public ExampleRecordWithDefaultFields read(final JsonReader in) throws IOException { - final JsonElement jsonElement = elementAdapter.read(in); - validateJsonElement(jsonElement); - return thisAdapter.fromJsonTree(jsonElement); - } - }.nullSafe(); - } - } -} diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithAllConstraints.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithAllConstraints.java index bc939307..8775805b 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithAllConstraints.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithAllConstraints.java @@ -28,7 +28,9 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,31 +45,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -79,15 +111,33 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @@ -95,7 +145,13 @@ public record RecordWithAllConstraints( /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("stringStandard", + Set.of("booleanStandard", + "booleanDefault", + "booleanNullable", + "booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringStandard", "stringDefault", "stringNullable", "stringRequired", @@ -106,15 +162,33 @@ public record RecordWithAllConstraints( "stringMinLength", "stringMaxLength", "stringMinAndMaxLength", + "arrayNullable", + "arrayRequiredNullable", "arrayMinItems", "arrayMaxItems", "arrayMinAndMaxItems", + "arrayUniqueStandard", + "arrayUniqueRequired", + "arrayUniqueNullable", + "arrayUniqueRequiredNullable", + "intStandard", + "intNullable", + "intRequired", + "intRequiredNullable", "intMinimum", "intMaximum", "intMinimumAndMaximum", + "longStandard", + "longNullable", + "longRequired", + "longRequiredNullable", "longMinimum", "longMaximum", "longMinimumAndMaximum", + "bigDecimalStandard", + "bigDecimalNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable", "bigDecimalMinimum", "bigDecimalMaximum", "bigDecimalMinimumAndMaximum")); @@ -122,11 +196,29 @@ public record RecordWithAllConstraints( /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("stringRequired", + Set.of("booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringRequired", "stringRequiredNullable", - "stringRequiredPattern")); + "stringRequiredPattern", + "arrayRequiredNullable", + "arrayUniqueRequired", + "arrayUniqueRequiredNullable", + "intRequired", + "intRequiredNullable", + "longRequired", + "longRequiredNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable")); public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -138,18 +230,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -161,15 +277,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; @@ -214,6 +348,60 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (jsonObj.get("booleanStandard") != null && !jsonObj.get("booleanStandard").isJsonNull()) { + if (!jsonObj.get("booleanStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanStandard"))); + } + } + + if (jsonObj.get("booleanDefault") != null && !jsonObj.get("booleanDefault").isJsonNull()) { + if (!jsonObj.get("booleanDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanDefault"))); + } + } + + if (jsonObj.get("booleanNullable") != null && !jsonObj.get("booleanNullable").isJsonNull()) { + if (!jsonObj.get("booleanNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanNullable"))); + } + } + + if (!jsonObj.get("booleanRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequired"))); + } + + if (!jsonObj.get("booleanRequiredDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredDefault"))); + } + + if (!jsonObj.get("booleanRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredNullable"))); + } + if (jsonObj.get("stringStandard") != null && !jsonObj.get("stringStandard").isJsonNull()) { if (!jsonObj.get("stringStandard").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -318,6 +506,24 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayNullable") != null && !jsonObj.get("arrayNullable").isJsonNull()) { + if (!jsonObj.get("arrayNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayNullable"))); + } + } + + if (!jsonObj.get("arrayRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayRequiredNullable"))); + } + if (jsonObj.get("arrayMinItems") != null && !jsonObj.get("arrayMinItems").isJsonNull()) { if (!jsonObj.get("arrayMinItems").isJsonArray()) { throw new IllegalArgumentException( @@ -348,6 +554,78 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayUniqueStandard") != null && !jsonObj.get("arrayUniqueStandard").isJsonNull()) { + if (!jsonObj.get("arrayUniqueStandard").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueStandard` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueStandard"))); + } + } + + if (!jsonObj.get("arrayUniqueRequired").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequired` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequired"))); + } + + if (jsonObj.get("arrayUniqueNullable") != null && !jsonObj.get("arrayUniqueNullable").isJsonNull()) { + if (!jsonObj.get("arrayUniqueNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueNullable"))); + } + } + + if (!jsonObj.get("arrayUniqueRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequiredNullable"))); + } + + if (jsonObj.get("intStandard") != null && !jsonObj.get("intStandard").isJsonNull()) { + if (!jsonObj.get("intStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intStandard"))); + } + } + + if (jsonObj.get("intNullable") != null && !jsonObj.get("intNullable").isJsonNull()) { + if (!jsonObj.get("intNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intNullable"))); + } + } + + if (!jsonObj.get("intRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequired"))); + } + + if (!jsonObj.get("intRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequiredNullable"))); + } + if (jsonObj.get("intMinimum") != null && !jsonObj.get("intMinimum").isJsonNull()) { if (!jsonObj.get("intMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -378,6 +656,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("longStandard") != null && !jsonObj.get("longStandard").isJsonNull()) { + if (!jsonObj.get("longStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longStandard"))); + } + } + + if (jsonObj.get("longNullable") != null && !jsonObj.get("longNullable").isJsonNull()) { + if (!jsonObj.get("longNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longNullable"))); + } + } + + if (!jsonObj.get("longRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequired"))); + } + + if (!jsonObj.get("longRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequiredNullable"))); + } + if (jsonObj.get("longMinimum") != null && !jsonObj.get("longMinimum").isJsonNull()) { if (!jsonObj.get("longMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -408,6 +722,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("bigDecimalStandard") != null && !jsonObj.get("bigDecimalStandard").isJsonNull()) { + if (!jsonObj.get("bigDecimalStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalStandard"))); + } + } + + if (jsonObj.get("bigDecimalNullable") != null && !jsonObj.get("bigDecimalNullable").isJsonNull()) { + if (!jsonObj.get("bigDecimalNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalNullable"))); + } + } + + if (!jsonObj.get("bigDecimalRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequired"))); + } + + if (!jsonObj.get("bigDecimalRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequiredNullable"))); + } + if (jsonObj.get("bigDecimalMinimum") != null && !jsonObj.get("bigDecimalMinimum").isJsonNull()) { if (!jsonObj.get("bigDecimalMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithNullableFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithNullableFieldsOfEachType.java index ac26e6fb..bb46785a 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithNullableFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.standard.ExampleNullableEnum; import io.github.chrimle.o2jrm.standard.ExampleNullableRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.google.gson.Gson; @@ -46,62 +41,32 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6")); + Set.of("field3")); public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } @@ -145,22 +110,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -169,30 +118,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - if (jsonObj.get("field7") != null && !jsonObj.get("field7").isJsonNull()) { ExampleNullableRecord.validateJsonElement(jsonObj.get("field7")); } diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithRequiredFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithRequiredFieldsOfEachType.java index 863bda51..ea1d96bd 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithRequiredFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithRequiredFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.standard.ExampleEnum; import io.github.chrimle.o2jrm.standard.ExampleRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.google.gson.Gson; import com.google.gson.JsonElement; @@ -45,64 +40,34 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } @@ -146,22 +111,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -170,30 +119,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - ExampleRecord.validateJsonElement(jsonObj.get("field7")); ExampleEnum.validateJsonElement(jsonObj.get("field8")); diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/ExampleRecordWithDefaultFields.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 050d9c82..00000000 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.useBeanValidation; - -import java.util.Objects; -import com.google.gson.TypeAdapter; -import com.google.gson.annotations.JsonAdapter; -import com.google.gson.annotations.SerializedName; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import java.io.IOException; -import java.util.Arrays; -import jakarta.validation.constraints.*; -import jakarta.validation.Valid; - -import com.google.gson.Gson; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.TypeAdapterFactory; -import com.google.gson.reflect.TypeToken; -import java.util.HashSet; -import java.util.Set; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - /** A set containing the names of all instance fields defined in this class. */ - public static final HashSet openapiFields = - new HashSet<>( - Set.of("field1")); - - /** A set containing the names of all required fields defined in this class. */ - public static final HashSet openapiRequiredFields = new HashSet<>(); - - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } - - /** - * Validates the JSON Element and throws an exception if issues are found. - * - * @param jsonElement to validate. - * @throws IOException if the JSON Element is not a valid {@link ExampleRecordWithDefaultFields } object. - */ - public static void validateJsonElement(final JsonElement jsonElement) throws IOException { - for (final String key : jsonElement.getAsJsonObject().keySet()) { - if (!ExampleRecordWithDefaultFields.openapiFields.contains(key)) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "The field `%s` in the JSON string is not defined in the `ExampleRecordWithDefaultFields` properties. JSON: %s", - key, - jsonElement)); - } - } - - final JsonObject jsonObj = jsonElement.getAsJsonObject(); - - if (jsonObj.get("field1") != null && !jsonObj.get("field1").isJsonNull()) { - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - } - } - - /** - * Creates {@link TypeAdapter}s for {@link ExampleRecordWithDefaultFields }s and other - * assignable types. - */ - public static class CustomTypeAdapterFactory implements TypeAdapterFactory { - - /** - * {@inheritDoc} - * - * @param gson to create the {@link TypeAdapter} from. - * @param type to serialize/deserialize. - * @return an (anonymous) instance of {@link TypeAdapter}, or - * {@code null} if {@code T} is not assignable to {@link ExampleRecordWithDefaultFields }. - * @param class to serialize/deserialize. - */ - @SuppressWarnings("unchecked") - @Override - public TypeAdapter create(final Gson gson, final TypeToken type) { - if (!ExampleRecordWithDefaultFields.class.isAssignableFrom(type.getRawType())) { - return null; - } - final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); - final TypeAdapter thisAdapter = - gson.getDelegateAdapter(this, TypeToken.get(ExampleRecordWithDefaultFields.class)); - - return (TypeAdapter) - new TypeAdapter() { - - @Override - public void write(final JsonWriter out, final ExampleRecordWithDefaultFields value) - throws IOException { - final JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); - elementAdapter.write(out, obj); - } - - @Override - public ExampleRecordWithDefaultFields read(final JsonReader in) throws IOException { - final JsonElement jsonElement = elementAdapter.read(in); - validateJsonElement(jsonElement); - return thisAdapter.fromJsonTree(jsonElement); - } - }.nullSafe(); - } - } -} diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithAllConstraints.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithAllConstraints.java index 4e2e6e16..ab068cd1 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithAllConstraints.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithAllConstraints.java @@ -28,7 +28,9 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import jakarta.validation.constraints.*; @@ -45,31 +47,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + @NotNull Boolean booleanRequired, + @NotNull Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -81,15 +113,33 @@ public record RecordWithAllConstraints( @Size(min = 3) String stringMinLength, @Size(max = 7) String stringMaxLength, @Size(min = 3, max = 7) String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, @Size(min = 1) List arrayMinItems, @Size(max = 10) List arrayMaxItems, @Size(min = 1, max = 10) List arrayMinAndMaxItems, + Set arrayUniqueStandard, + @NotNull Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + @NotNull Integer intRequired, + Integer intRequiredNullable, @Min(18) Integer intMinimum, @Max(100) Integer intMaximum, @Min(0) @Max(100) Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + @NotNull Long longRequired, + Long longRequiredNullable, @Min(18L) Long longMinimum, @Max(100L) Long longMaximum, @Min(0L) @Max(100L) Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + @NotNull BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, @DecimalMin("0") BigDecimal bigDecimalMinimum, @DecimalMax("100") BigDecimal bigDecimalMaximum, @DecimalMin("0") @DecimalMax("100") BigDecimal bigDecimalMinimumAndMaximum) { @@ -97,7 +147,13 @@ public record RecordWithAllConstraints( /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("stringStandard", + Set.of("booleanStandard", + "booleanDefault", + "booleanNullable", + "booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringStandard", "stringDefault", "stringNullable", "stringRequired", @@ -108,15 +164,33 @@ public record RecordWithAllConstraints( "stringMinLength", "stringMaxLength", "stringMinAndMaxLength", + "arrayNullable", + "arrayRequiredNullable", "arrayMinItems", "arrayMaxItems", "arrayMinAndMaxItems", + "arrayUniqueStandard", + "arrayUniqueRequired", + "arrayUniqueNullable", + "arrayUniqueRequiredNullable", + "intStandard", + "intNullable", + "intRequired", + "intRequiredNullable", "intMinimum", "intMaximum", "intMinimumAndMaximum", + "longStandard", + "longNullable", + "longRequired", + "longRequiredNullable", "longMinimum", "longMaximum", "longMinimumAndMaximum", + "bigDecimalStandard", + "bigDecimalNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable", "bigDecimalMinimum", "bigDecimalMaximum", "bigDecimalMinimumAndMaximum")); @@ -124,11 +198,29 @@ public record RecordWithAllConstraints( /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("stringRequired", + Set.of("booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringRequired", "stringRequiredNullable", - "stringRequiredPattern")); + "stringRequiredPattern", + "arrayRequiredNullable", + "arrayUniqueRequired", + "arrayUniqueRequiredNullable", + "intRequired", + "intRequiredNullable", + "longRequired", + "longRequiredNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable")); public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -140,18 +232,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -163,15 +279,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; @@ -216,6 +350,60 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (jsonObj.get("booleanStandard") != null && !jsonObj.get("booleanStandard").isJsonNull()) { + if (!jsonObj.get("booleanStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanStandard"))); + } + } + + if (jsonObj.get("booleanDefault") != null && !jsonObj.get("booleanDefault").isJsonNull()) { + if (!jsonObj.get("booleanDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanDefault"))); + } + } + + if (jsonObj.get("booleanNullable") != null && !jsonObj.get("booleanNullable").isJsonNull()) { + if (!jsonObj.get("booleanNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanNullable"))); + } + } + + if (!jsonObj.get("booleanRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequired"))); + } + + if (!jsonObj.get("booleanRequiredDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredDefault"))); + } + + if (!jsonObj.get("booleanRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredNullable"))); + } + if (jsonObj.get("stringStandard") != null && !jsonObj.get("stringStandard").isJsonNull()) { if (!jsonObj.get("stringStandard").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -320,6 +508,24 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayNullable") != null && !jsonObj.get("arrayNullable").isJsonNull()) { + if (!jsonObj.get("arrayNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayNullable"))); + } + } + + if (!jsonObj.get("arrayRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayRequiredNullable"))); + } + if (jsonObj.get("arrayMinItems") != null && !jsonObj.get("arrayMinItems").isJsonNull()) { if (!jsonObj.get("arrayMinItems").isJsonArray()) { throw new IllegalArgumentException( @@ -350,6 +556,78 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayUniqueStandard") != null && !jsonObj.get("arrayUniqueStandard").isJsonNull()) { + if (!jsonObj.get("arrayUniqueStandard").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueStandard` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueStandard"))); + } + } + + if (!jsonObj.get("arrayUniqueRequired").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequired` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequired"))); + } + + if (jsonObj.get("arrayUniqueNullable") != null && !jsonObj.get("arrayUniqueNullable").isJsonNull()) { + if (!jsonObj.get("arrayUniqueNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueNullable"))); + } + } + + if (!jsonObj.get("arrayUniqueRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequiredNullable"))); + } + + if (jsonObj.get("intStandard") != null && !jsonObj.get("intStandard").isJsonNull()) { + if (!jsonObj.get("intStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intStandard"))); + } + } + + if (jsonObj.get("intNullable") != null && !jsonObj.get("intNullable").isJsonNull()) { + if (!jsonObj.get("intNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intNullable"))); + } + } + + if (!jsonObj.get("intRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequired"))); + } + + if (!jsonObj.get("intRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequiredNullable"))); + } + if (jsonObj.get("intMinimum") != null && !jsonObj.get("intMinimum").isJsonNull()) { if (!jsonObj.get("intMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -380,6 +658,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("longStandard") != null && !jsonObj.get("longStandard").isJsonNull()) { + if (!jsonObj.get("longStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longStandard"))); + } + } + + if (jsonObj.get("longNullable") != null && !jsonObj.get("longNullable").isJsonNull()) { + if (!jsonObj.get("longNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longNullable"))); + } + } + + if (!jsonObj.get("longRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequired"))); + } + + if (!jsonObj.get("longRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequiredNullable"))); + } + if (jsonObj.get("longMinimum") != null && !jsonObj.get("longMinimum").isJsonNull()) { if (!jsonObj.get("longMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -410,6 +724,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("bigDecimalStandard") != null && !jsonObj.get("bigDecimalStandard").isJsonNull()) { + if (!jsonObj.get("bigDecimalStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalStandard"))); + } + } + + if (jsonObj.get("bigDecimalNullable") != null && !jsonObj.get("bigDecimalNullable").isJsonNull()) { + if (!jsonObj.get("bigDecimalNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalNullable"))); + } + } + + if (!jsonObj.get("bigDecimalRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequired"))); + } + + if (!jsonObj.get("bigDecimalRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequiredNullable"))); + } + if (jsonObj.get("bigDecimalMinimum") != null && !jsonObj.get("bigDecimalMinimum").isJsonNull()) { if (!jsonObj.get("bigDecimalMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithNullableFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithNullableFieldsOfEachType.java index c6ce6a9a..d2119b3c 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithNullableFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.useBeanValidation.ExampleNullableEnum; import io.github.chrimle.o2jrm.useBeanValidation.ExampleNullableRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import jakarta.validation.constraints.*; import jakarta.validation.Valid; @@ -48,62 +43,32 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, @Valid ExampleNullableRecord field7, ExampleNullableEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6")); + Set.of("field3")); public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } @@ -147,22 +112,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -171,30 +120,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - if (jsonObj.get("field7") != null && !jsonObj.get("field7").isJsonNull()) { ExampleNullableRecord.validateJsonElement(jsonObj.get("field7")); } diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithRequiredFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithRequiredFieldsOfEachType.java index 0b28198f..bee71f6c 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithRequiredFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithRequiredFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.useBeanValidation.ExampleEnum; import io.github.chrimle.o2jrm.useBeanValidation.ExampleRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import jakarta.validation.constraints.*; import jakarta.validation.Valid; @@ -47,64 +42,34 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - @NotNull Boolean field1, - @NotNull String field2, @NotNull Integer field3, - @NotNull BigDecimal field4, - @NotNull List field5, - @NotNull Set field6, @Valid @NotNull ExampleRecord field7, @NotNull ExampleEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } @@ -148,22 +113,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -172,30 +121,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - ExampleRecord.validateJsonElement(jsonObj.get("field7")); ExampleEnum.validateJsonElement(jsonObj.get("field8")); diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/ExampleRecordWithDefaultFields.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/ExampleRecordWithDefaultFields.java deleted file mode 100644 index bcd3744c..00000000 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.useEnumCaseInsensitive; - -import java.util.Objects; -import com.google.gson.TypeAdapter; -import com.google.gson.annotations.JsonAdapter; -import com.google.gson.annotations.SerializedName; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import java.io.IOException; -import java.util.Arrays; - -import com.google.gson.Gson; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.TypeAdapterFactory; -import com.google.gson.reflect.TypeToken; -import java.util.HashSet; -import java.util.Set; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - /** A set containing the names of all instance fields defined in this class. */ - public static final HashSet openapiFields = - new HashSet<>( - Set.of("field1")); - - /** A set containing the names of all required fields defined in this class. */ - public static final HashSet openapiRequiredFields = new HashSet<>(); - - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } - - /** - * Validates the JSON Element and throws an exception if issues are found. - * - * @param jsonElement to validate. - * @throws IOException if the JSON Element is not a valid {@link ExampleRecordWithDefaultFields } object. - */ - public static void validateJsonElement(final JsonElement jsonElement) throws IOException { - for (final String key : jsonElement.getAsJsonObject().keySet()) { - if (!ExampleRecordWithDefaultFields.openapiFields.contains(key)) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "The field `%s` in the JSON string is not defined in the `ExampleRecordWithDefaultFields` properties. JSON: %s", - key, - jsonElement)); - } - } - - final JsonObject jsonObj = jsonElement.getAsJsonObject(); - - if (jsonObj.get("field1") != null && !jsonObj.get("field1").isJsonNull()) { - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - } - } - - /** - * Creates {@link TypeAdapter}s for {@link ExampleRecordWithDefaultFields }s and other - * assignable types. - */ - public static class CustomTypeAdapterFactory implements TypeAdapterFactory { - - /** - * {@inheritDoc} - * - * @param gson to create the {@link TypeAdapter} from. - * @param type to serialize/deserialize. - * @return an (anonymous) instance of {@link TypeAdapter}, or - * {@code null} if {@code T} is not assignable to {@link ExampleRecordWithDefaultFields }. - * @param class to serialize/deserialize. - */ - @SuppressWarnings("unchecked") - @Override - public TypeAdapter create(final Gson gson, final TypeToken type) { - if (!ExampleRecordWithDefaultFields.class.isAssignableFrom(type.getRawType())) { - return null; - } - final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); - final TypeAdapter thisAdapter = - gson.getDelegateAdapter(this, TypeToken.get(ExampleRecordWithDefaultFields.class)); - - return (TypeAdapter) - new TypeAdapter() { - - @Override - public void write(final JsonWriter out, final ExampleRecordWithDefaultFields value) - throws IOException { - final JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); - elementAdapter.write(out, obj); - } - - @Override - public ExampleRecordWithDefaultFields read(final JsonReader in) throws IOException { - final JsonElement jsonElement = elementAdapter.read(in); - validateJsonElement(jsonElement); - return thisAdapter.fromJsonTree(jsonElement); - } - }.nullSafe(); - } - } -} diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithAllConstraints.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithAllConstraints.java index 5eb974da..4ecd050f 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithAllConstraints.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithAllConstraints.java @@ -28,7 +28,9 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,31 +45,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -79,15 +111,33 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @@ -95,7 +145,13 @@ public record RecordWithAllConstraints( /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("stringStandard", + Set.of("booleanStandard", + "booleanDefault", + "booleanNullable", + "booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringStandard", "stringDefault", "stringNullable", "stringRequired", @@ -106,15 +162,33 @@ public record RecordWithAllConstraints( "stringMinLength", "stringMaxLength", "stringMinAndMaxLength", + "arrayNullable", + "arrayRequiredNullable", "arrayMinItems", "arrayMaxItems", "arrayMinAndMaxItems", + "arrayUniqueStandard", + "arrayUniqueRequired", + "arrayUniqueNullable", + "arrayUniqueRequiredNullable", + "intStandard", + "intNullable", + "intRequired", + "intRequiredNullable", "intMinimum", "intMaximum", "intMinimumAndMaximum", + "longStandard", + "longNullable", + "longRequired", + "longRequiredNullable", "longMinimum", "longMaximum", "longMinimumAndMaximum", + "bigDecimalStandard", + "bigDecimalNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable", "bigDecimalMinimum", "bigDecimalMaximum", "bigDecimalMinimumAndMaximum")); @@ -122,11 +196,29 @@ public record RecordWithAllConstraints( /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("stringRequired", + Set.of("booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringRequired", "stringRequiredNullable", - "stringRequiredPattern")); + "stringRequiredPattern", + "arrayRequiredNullable", + "arrayUniqueRequired", + "arrayUniqueRequiredNullable", + "intRequired", + "intRequiredNullable", + "longRequired", + "longRequiredNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable")); public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -138,18 +230,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -161,15 +277,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; @@ -214,6 +348,60 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (jsonObj.get("booleanStandard") != null && !jsonObj.get("booleanStandard").isJsonNull()) { + if (!jsonObj.get("booleanStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanStandard"))); + } + } + + if (jsonObj.get("booleanDefault") != null && !jsonObj.get("booleanDefault").isJsonNull()) { + if (!jsonObj.get("booleanDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanDefault"))); + } + } + + if (jsonObj.get("booleanNullable") != null && !jsonObj.get("booleanNullable").isJsonNull()) { + if (!jsonObj.get("booleanNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanNullable"))); + } + } + + if (!jsonObj.get("booleanRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequired"))); + } + + if (!jsonObj.get("booleanRequiredDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredDefault"))); + } + + if (!jsonObj.get("booleanRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredNullable"))); + } + if (jsonObj.get("stringStandard") != null && !jsonObj.get("stringStandard").isJsonNull()) { if (!jsonObj.get("stringStandard").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -318,6 +506,24 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayNullable") != null && !jsonObj.get("arrayNullable").isJsonNull()) { + if (!jsonObj.get("arrayNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayNullable"))); + } + } + + if (!jsonObj.get("arrayRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayRequiredNullable"))); + } + if (jsonObj.get("arrayMinItems") != null && !jsonObj.get("arrayMinItems").isJsonNull()) { if (!jsonObj.get("arrayMinItems").isJsonArray()) { throw new IllegalArgumentException( @@ -348,6 +554,78 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayUniqueStandard") != null && !jsonObj.get("arrayUniqueStandard").isJsonNull()) { + if (!jsonObj.get("arrayUniqueStandard").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueStandard` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueStandard"))); + } + } + + if (!jsonObj.get("arrayUniqueRequired").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequired` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequired"))); + } + + if (jsonObj.get("arrayUniqueNullable") != null && !jsonObj.get("arrayUniqueNullable").isJsonNull()) { + if (!jsonObj.get("arrayUniqueNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueNullable"))); + } + } + + if (!jsonObj.get("arrayUniqueRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequiredNullable"))); + } + + if (jsonObj.get("intStandard") != null && !jsonObj.get("intStandard").isJsonNull()) { + if (!jsonObj.get("intStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intStandard"))); + } + } + + if (jsonObj.get("intNullable") != null && !jsonObj.get("intNullable").isJsonNull()) { + if (!jsonObj.get("intNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intNullable"))); + } + } + + if (!jsonObj.get("intRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequired"))); + } + + if (!jsonObj.get("intRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequiredNullable"))); + } + if (jsonObj.get("intMinimum") != null && !jsonObj.get("intMinimum").isJsonNull()) { if (!jsonObj.get("intMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -378,6 +656,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("longStandard") != null && !jsonObj.get("longStandard").isJsonNull()) { + if (!jsonObj.get("longStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longStandard"))); + } + } + + if (jsonObj.get("longNullable") != null && !jsonObj.get("longNullable").isJsonNull()) { + if (!jsonObj.get("longNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longNullable"))); + } + } + + if (!jsonObj.get("longRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequired"))); + } + + if (!jsonObj.get("longRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequiredNullable"))); + } + if (jsonObj.get("longMinimum") != null && !jsonObj.get("longMinimum").isJsonNull()) { if (!jsonObj.get("longMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -408,6 +722,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("bigDecimalStandard") != null && !jsonObj.get("bigDecimalStandard").isJsonNull()) { + if (!jsonObj.get("bigDecimalStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalStandard"))); + } + } + + if (jsonObj.get("bigDecimalNullable") != null && !jsonObj.get("bigDecimalNullable").isJsonNull()) { + if (!jsonObj.get("bigDecimalNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalNullable"))); + } + } + + if (!jsonObj.get("bigDecimalRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequired"))); + } + + if (!jsonObj.get("bigDecimalRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequiredNullable"))); + } + if (jsonObj.get("bigDecimalMinimum") != null && !jsonObj.get("bigDecimalMinimum").isJsonNull()) { if (!jsonObj.get("bigDecimalMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithNullableFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithNullableFieldsOfEachType.java index 810bca0f..237ea0b1 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithNullableFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.useEnumCaseInsensitive.ExampleNullableEnum; import io.github.chrimle.o2jrm.useEnumCaseInsensitive.ExampleNullableRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.google.gson.Gson; @@ -46,62 +41,32 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6")); + Set.of("field3")); public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } @@ -145,22 +110,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -169,30 +118,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - if (jsonObj.get("field7") != null && !jsonObj.get("field7").isJsonNull()) { ExampleNullableRecord.validateJsonElement(jsonObj.get("field7")); } diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithRequiredFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithRequiredFieldsOfEachType.java index 53625a2c..9a29114f 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithRequiredFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithRequiredFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.useEnumCaseInsensitive.ExampleEnum; import io.github.chrimle.o2jrm.useEnumCaseInsensitive.ExampleRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.google.gson.Gson; import com.google.gson.JsonElement; @@ -45,64 +40,34 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } @@ -146,22 +111,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -170,30 +119,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - ExampleRecord.validateJsonElement(jsonObj.get("field7")); ExampleEnum.validateJsonElement(jsonObj.get("field8")); diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/ExampleRecordWithDefaultFields.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 8c594384..00000000 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.webclient.additionalEnumTypeAnnotations; - -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - @JsonCreator - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } -} diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/RecordWithAllConstraints.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/RecordWithAllConstraints.java index ff1bc370..3e0d33e8 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/RecordWithAllConstraints.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/RecordWithAllConstraints.java @@ -25,10 +25,13 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -40,31 +43,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -76,21 +109,45 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @JsonCreator public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -102,18 +159,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -125,15 +206,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/RecordWithNullableFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/RecordWithNullableFieldsOfEachType.java index 3572d311..4a56374c 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/RecordWithNullableFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.github.chrimle.o2jrm.webclient.additionalEnumTypeAnnotations.ExampleNullableEnum; import io.github.chrimle.o2jrm.webclient.additionalEnumTypeAnnotations.ExampleNullableRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,41 +37,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { @JsonCreator public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/RecordWithRequiredFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/RecordWithRequiredFieldsOfEachType.java index e849a3b6..84d806bf 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/RecordWithRequiredFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/RecordWithRequiredFieldsOfEachType.java @@ -25,56 +25,29 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.github.chrimle.o2jrm.webclient.additionalEnumTypeAnnotations.ExampleEnum; import io.github.chrimle.o2jrm.webclient.additionalEnumTypeAnnotations.ExampleRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonTypeName; /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { @JsonCreator public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/ExampleRecordWithDefaultFields.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 79bc3c8d..00000000 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.webclient.additionalModelTypeAnnotations; - -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -@io.github.chrimle.o2jrm.test.annotations.TestAnnotationOne -@io.github.chrimle.o2jrm.test.annotations.TestAnnotationTwo -@io.github.chrimle.o2jrm.test.annotations.TestAnnotationThree -public record ExampleRecordWithDefaultFields(String field1) { - - @JsonCreator - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } -} diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/RecordWithAllConstraints.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/RecordWithAllConstraints.java index 92ef9749..7d7b571f 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/RecordWithAllConstraints.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/RecordWithAllConstraints.java @@ -25,10 +25,13 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -40,34 +43,64 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ @io.github.chrimle.o2jrm.test.annotations.TestAnnotationOne @io.github.chrimle.o2jrm.test.annotations.TestAnnotationTwo @io.github.chrimle.o2jrm.test.annotations.TestAnnotationThree public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -79,21 +112,45 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @JsonCreator public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -105,18 +162,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -128,15 +209,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/RecordWithNullableFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/RecordWithNullableFieldsOfEachType.java index dc69983b..58ab4c81 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/RecordWithNullableFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.github.chrimle.o2jrm.webclient.additionalModelTypeAnnotations.ExampleNullableEnum; import io.github.chrimle.o2jrm.webclient.additionalModelTypeAnnotations.ExampleNullableRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,12 +37,7 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ @@ -56,31 +45,16 @@ @io.github.chrimle.o2jrm.test.annotations.TestAnnotationTwo @io.github.chrimle.o2jrm.test.annotations.TestAnnotationThree public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { @JsonCreator public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/RecordWithRequiredFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/RecordWithRequiredFieldsOfEachType.java index 7ba77cae..60a765db 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/RecordWithRequiredFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/RecordWithRequiredFieldsOfEachType.java @@ -25,27 +25,15 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.github.chrimle.o2jrm.webclient.additionalModelTypeAnnotations.ExampleEnum; import io.github.chrimle.o2jrm.webclient.additionalModelTypeAnnotations.ExampleRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonTypeName; /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ @@ -53,31 +41,16 @@ @io.github.chrimle.o2jrm.test.annotations.TestAnnotationTwo @io.github.chrimle.o2jrm.test.annotations.TestAnnotationThree public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { @JsonCreator public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/ExampleRecordWithDefaultFields.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 2f80567b..00000000 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.webclient.enumDefaultCaseAndCaseInsensitive; - -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - @JsonCreator - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } -} diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/RecordWithAllConstraints.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/RecordWithAllConstraints.java index 9014aa8c..564261f5 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/RecordWithAllConstraints.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/RecordWithAllConstraints.java @@ -25,10 +25,13 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -40,31 +43,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -76,21 +109,45 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @JsonCreator public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -102,18 +159,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -125,15 +206,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/RecordWithNullableFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/RecordWithNullableFieldsOfEachType.java index b126f4df..e3ed53bb 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/RecordWithNullableFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.github.chrimle.o2jrm.webclient.enumDefaultCaseAndCaseInsensitive.ExampleNullableEnum; import io.github.chrimle.o2jrm.webclient.enumDefaultCaseAndCaseInsensitive.ExampleNullableRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,41 +37,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { @JsonCreator public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/RecordWithRequiredFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/RecordWithRequiredFieldsOfEachType.java index 737dc2ef..1d0b3b80 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/RecordWithRequiredFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/RecordWithRequiredFieldsOfEachType.java @@ -25,56 +25,29 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.github.chrimle.o2jrm.webclient.enumDefaultCaseAndCaseInsensitive.ExampleEnum; import io.github.chrimle.o2jrm.webclient.enumDefaultCaseAndCaseInsensitive.ExampleRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonTypeName; /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { @JsonCreator public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/ExampleRecordWithDefaultFields.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 896ac886..00000000 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.webclient.enumUnknownDefaultCase; - -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - @JsonCreator - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } -} diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/RecordWithAllConstraints.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/RecordWithAllConstraints.java index 8849c1a4..dddc6677 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/RecordWithAllConstraints.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/RecordWithAllConstraints.java @@ -25,10 +25,13 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -40,31 +43,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -76,21 +109,45 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @JsonCreator public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -102,18 +159,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -125,15 +206,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/RecordWithNullableFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/RecordWithNullableFieldsOfEachType.java index 07241c12..1f824ca1 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/RecordWithNullableFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.github.chrimle.o2jrm.webclient.enumUnknownDefaultCase.ExampleNullableEnum; import io.github.chrimle.o2jrm.webclient.enumUnknownDefaultCase.ExampleNullableRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,41 +37,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { @JsonCreator public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/RecordWithRequiredFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/RecordWithRequiredFieldsOfEachType.java index d5f1e372..829b844c 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/RecordWithRequiredFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/RecordWithRequiredFieldsOfEachType.java @@ -25,56 +25,29 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.github.chrimle.o2jrm.webclient.enumUnknownDefaultCase.ExampleEnum; import io.github.chrimle.o2jrm.webclient.enumUnknownDefaultCase.ExampleRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonTypeName; /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { @JsonCreator public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/ExampleRecordWithDefaultFields.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/ExampleRecordWithDefaultFields.java deleted file mode 100644 index d2912304..00000000 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.webclient.generateBuilders; - -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - @JsonCreator - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } - - /** Builder class for {@link ExampleRecordWithDefaultFields }. */ - public static class Builder { - - private String field1; - - /** - * Sets the value of {@link ExampleRecordWithDefaultFields#field1 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field1 a String field with a default value. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field1(final String field1) { - this.field1 = field1; - return this; - } - - /** - * Builds a {@link ExampleRecordWithDefaultFields }-instance with the values provided in preceding - * builder methods. - * - *

NOTE: Pass-by-reference is used! - * - * @return a new {@link ExampleRecordWithDefaultFields }-instance. - */ - public ExampleRecordWithDefaultFields build() { - return new ExampleRecordWithDefaultFields( - field1); - } - } - - /** Creates a new {@link Builder}-instance. */ - public static ExampleRecordWithDefaultFields.Builder builder() { - return new ExampleRecordWithDefaultFields.Builder(); - } -} diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/RecordWithAllConstraints.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/RecordWithAllConstraints.java index 0bae3409..a0950d89 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/RecordWithAllConstraints.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/RecordWithAllConstraints.java @@ -25,10 +25,13 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -40,31 +43,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -76,21 +109,45 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @JsonCreator public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -102,18 +159,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -125,15 +206,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; @@ -142,6 +241,12 @@ public RecordWithAllConstraints( /** Builder class for {@link RecordWithAllConstraints }. */ public static class Builder { + private Boolean booleanStandard; + private Boolean booleanDefault; + private Boolean booleanNullable; + private Boolean booleanRequired; + private Boolean booleanRequiredDefault; + private Boolean booleanRequiredNullable; private String stringStandard; private String stringDefault; private String stringNullable; @@ -153,25 +258,121 @@ public static class Builder { private String stringMinLength; private String stringMaxLength; private String stringMinAndMaxLength; + private List arrayNullable; + private List arrayRequiredNullable; private List arrayMinItems; private List arrayMaxItems; private List arrayMinAndMaxItems; + private Set arrayUniqueStandard; + private Set arrayUniqueRequired; + private Set arrayUniqueNullable; + private Set arrayUniqueRequiredNullable; + private Integer intStandard; + private Integer intNullable; + private Integer intRequired; + private Integer intRequiredNullable; private Integer intMinimum; private Integer intMaximum; private Integer intMinimumAndMaximum; + private Long longStandard; + private Long longNullable; + private Long longRequired; + private Long longRequiredNullable; private Long longMinimum; private Long longMaximum; private Long longMinimumAndMaximum; + private BigDecimal bigDecimalStandard; + private BigDecimal bigDecimalNullable; + private BigDecimal bigDecimalRequired; + private BigDecimal bigDecimalRequiredNullable; private BigDecimal bigDecimalMinimum; private BigDecimal bigDecimalMaximum; private BigDecimal bigDecimalMinimumAndMaximum; + /** + * Sets the value of {@link RecordWithAllConstraints#booleanStandard }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanStandard Non-required, non-nullable Boolean field.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanStandard(final Boolean booleanStandard) { + this.booleanStandard = booleanStandard; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#booleanDefault }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanDefault Non-required, non-nullable Boolean with a default value.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanDefault(final Boolean booleanDefault) { + this.booleanDefault = booleanDefault; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#booleanNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanNullable Non-required, nullable Boolean field.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanNullable(final Boolean booleanNullable) { + this.booleanNullable = booleanNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#booleanRequired }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanRequired Required, non-nullable Boolean field.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanRequired(final Boolean booleanRequired) { + this.booleanRequired = booleanRequired; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#booleanRequiredDefault }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanRequiredDefault(final Boolean booleanRequiredDefault) { + this.booleanRequiredDefault = booleanRequiredDefault; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#booleanRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanRequiredNullable Required, nullable Boolean field.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanRequiredNullable(final Boolean booleanRequiredNullable) { + this.booleanRequiredNullable = booleanRequiredNullable; + return this; + } + /** * Sets the value of {@link RecordWithAllConstraints#stringStandard }. * *

NOTE: Pass-by-reference is used! * - * @param stringStandard sets the value of stringStandard. + * @param stringStandard Non-required, non-nullable String field.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringStandard(final String stringStandard) { @@ -184,7 +385,7 @@ public Builder stringStandard(final String stringStandard) { * *

NOTE: Pass-by-reference is used! * - * @param stringDefault sets the value of stringDefault. + * @param stringDefault Non-required, non-nullable String field with a default value.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringDefault(final String stringDefault) { @@ -197,7 +398,7 @@ public Builder stringDefault(final String stringDefault) { * *

NOTE: Pass-by-reference is used! * - * @param stringNullable sets the value of stringNullable. + * @param stringNullable Non-required, nullable String field.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringNullable(final String stringNullable) { @@ -210,7 +411,7 @@ public Builder stringNullable(final String stringNullable) { * *

NOTE: Pass-by-reference is used! * - * @param stringRequired sets the value of stringRequired. + * @param stringRequired Required, non-nullable String field.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringRequired(final String stringRequired) { @@ -223,7 +424,7 @@ public Builder stringRequired(final String stringRequired) { * *

NOTE: Pass-by-reference is used! * - * @param stringRequiredNullable sets the value of stringRequiredNullable. + * @param stringRequiredNullable Required, nullable String field.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringRequiredNullable(final String stringRequiredNullable) { @@ -236,7 +437,7 @@ public Builder stringRequiredNullable(final String stringRequiredNullable) { * *

NOTE: Pass-by-reference is used! * - * @param stringRequiredPattern sets the value of stringRequiredPattern. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringRequiredPattern(final String stringRequiredPattern) { @@ -249,7 +450,7 @@ public Builder stringRequiredPattern(final String stringRequiredPattern) { * *

NOTE: Pass-by-reference is used! * - * @param stringEmailFormat sets the value of stringEmailFormat. + * @param stringEmailFormat Non-required, non-nullable String field with Email format.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringEmailFormat(final String stringEmailFormat) { @@ -262,7 +463,7 @@ public Builder stringEmailFormat(final String stringEmailFormat) { * *

NOTE: Pass-by-reference is used! * - * @param stringUuidFormat sets the value of stringUuidFormat. + * @param stringUuidFormat Non-required, non-nullable UUID field.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringUuidFormat(final UUID stringUuidFormat) { @@ -275,7 +476,7 @@ public Builder stringUuidFormat(final UUID stringUuidFormat) { * *

NOTE: Pass-by-reference is used! * - * @param stringMinLength sets the value of stringMinLength. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringMinLength(final String stringMinLength) { @@ -288,7 +489,7 @@ public Builder stringMinLength(final String stringMinLength) { * *

NOTE: Pass-by-reference is used! * - * @param stringMaxLength sets the value of stringMaxLength. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringMaxLength(final String stringMaxLength) { @@ -301,7 +502,7 @@ public Builder stringMaxLength(final String stringMaxLength) { * *

NOTE: Pass-by-reference is used! * - * @param stringMinAndMaxLength sets the value of stringMinAndMaxLength. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringMinAndMaxLength(final String stringMinAndMaxLength) { @@ -309,12 +510,38 @@ public Builder stringMinAndMaxLength(final String stringMinAndMaxLength) { return this; } + /** + * Sets the value of {@link RecordWithAllConstraints#arrayNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayNullable Non-required, nullable List.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayNullable(final List arrayNullable) { + this.arrayNullable = arrayNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#arrayRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayRequiredNullable Required, nullable List.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayRequiredNullable(final List arrayRequiredNullable) { + this.arrayRequiredNullable = arrayRequiredNullable; + return this; + } + /** * Sets the value of {@link RecordWithAllConstraints#arrayMinItems }. * *

NOTE: Pass-by-reference is used! * - * @param arrayMinItems sets the value of arrayMinItems. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1.. * @return this {@link Builder}-instance for method-chaining. */ public Builder arrayMinItems(final List arrayMinItems) { @@ -327,7 +554,7 @@ public Builder arrayMinItems(final List arrayMinItems) { * *

NOTE: Pass-by-reference is used! * - * @param arrayMaxItems sets the value of arrayMaxItems. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10.. * @return this {@link Builder}-instance for method-chaining. */ public Builder arrayMaxItems(final List arrayMaxItems) { @@ -340,7 +567,7 @@ public Builder arrayMaxItems(final List arrayMaxItems) { * *

NOTE: Pass-by-reference is used! * - * @param arrayMinAndMaxItems sets the value of arrayMinAndMaxItems. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10.. * @return this {@link Builder}-instance for method-chaining. */ public Builder arrayMinAndMaxItems(final List arrayMinAndMaxItems) { @@ -348,12 +575,116 @@ public Builder arrayMinAndMaxItems(final List arrayMinAndMaxItems) { return this; } + /** + * Sets the value of {@link RecordWithAllConstraints#arrayUniqueStandard }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayUniqueStandard Non-required, non-nullable Set.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayUniqueStandard(final Set arrayUniqueStandard) { + this.arrayUniqueStandard = arrayUniqueStandard; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#arrayUniqueRequired }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayUniqueRequired Required, non-nullable Set.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayUniqueRequired(final Set arrayUniqueRequired) { + this.arrayUniqueRequired = arrayUniqueRequired; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#arrayUniqueNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayUniqueNullable Non-required, nullable Set.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayUniqueNullable(final Set arrayUniqueNullable) { + this.arrayUniqueNullable = arrayUniqueNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#arrayUniqueRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayUniqueRequiredNullable Required, nullable Set.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayUniqueRequiredNullable(final Set arrayUniqueRequiredNullable) { + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#intStandard }. + * + *

NOTE: Pass-by-reference is used! + * + * @param intStandard Non-required, non-nullable Integer.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder intStandard(final Integer intStandard) { + this.intStandard = intStandard; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#intNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param intNullable Non-required, nullable Integer.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder intNullable(final Integer intNullable) { + this.intNullable = intNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#intRequired }. + * + *

NOTE: Pass-by-reference is used! + * + * @param intRequired Required, non-nullable Integer.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder intRequired(final Integer intRequired) { + this.intRequired = intRequired; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#intRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param intRequiredNullable Required, nullable Integer.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder intRequiredNullable(final Integer intRequiredNullable) { + this.intRequiredNullable = intRequiredNullable; + return this; + } + /** * Sets the value of {@link RecordWithAllConstraints#intMinimum }. * *

NOTE: Pass-by-reference is used! * - * @param intMinimum sets the value of intMinimum. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18.. * @return this {@link Builder}-instance for method-chaining. */ public Builder intMinimum(final Integer intMinimum) { @@ -366,7 +697,7 @@ public Builder intMinimum(final Integer intMinimum) { * *

NOTE: Pass-by-reference is used! * - * @param intMaximum sets the value of intMaximum. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder intMaximum(final Integer intMaximum) { @@ -379,7 +710,7 @@ public Builder intMaximum(final Integer intMaximum) { * *

NOTE: Pass-by-reference is used! * - * @param intMinimumAndMaximum sets the value of intMinimumAndMaximum. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder intMinimumAndMaximum(final Integer intMinimumAndMaximum) { @@ -387,12 +718,64 @@ public Builder intMinimumAndMaximum(final Integer intMinimumAndMaximum) { return this; } + /** + * Sets the value of {@link RecordWithAllConstraints#longStandard }. + * + *

NOTE: Pass-by-reference is used! + * + * @param longStandard Non-required, non-nullable Long.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder longStandard(final Long longStandard) { + this.longStandard = longStandard; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#longNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param longNullable Non-required, nullable Long.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder longNullable(final Long longNullable) { + this.longNullable = longNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#longRequired }. + * + *

NOTE: Pass-by-reference is used! + * + * @param longRequired Required, non-nullable Long.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder longRequired(final Long longRequired) { + this.longRequired = longRequired; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#longRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param longRequiredNullable Required, nullable Long.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder longRequiredNullable(final Long longRequiredNullable) { + this.longRequiredNullable = longRequiredNullable; + return this; + } + /** * Sets the value of {@link RecordWithAllConstraints#longMinimum }. * *

NOTE: Pass-by-reference is used! * - * @param longMinimum sets the value of longMinimum. + * @param longMinimum Non-required, non-nullable Long with minimum: 18.. * @return this {@link Builder}-instance for method-chaining. */ public Builder longMinimum(final Long longMinimum) { @@ -405,7 +788,7 @@ public Builder longMinimum(final Long longMinimum) { * *

NOTE: Pass-by-reference is used! * - * @param longMaximum sets the value of longMaximum. + * @param longMaximum Non-required, non-nullable Long with maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder longMaximum(final Long longMaximum) { @@ -418,7 +801,7 @@ public Builder longMaximum(final Long longMaximum) { * *

NOTE: Pass-by-reference is used! * - * @param longMinimumAndMaximum sets the value of longMinimumAndMaximum. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder longMinimumAndMaximum(final Long longMinimumAndMaximum) { @@ -426,12 +809,64 @@ public Builder longMinimumAndMaximum(final Long longMinimumAndMaximum) { return this; } + /** + * Sets the value of {@link RecordWithAllConstraints#bigDecimalStandard }. + * + *

NOTE: Pass-by-reference is used! + * + * @param bigDecimalStandard Non-required, non-nullable BigDecimal.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder bigDecimalStandard(final BigDecimal bigDecimalStandard) { + this.bigDecimalStandard = bigDecimalStandard; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#bigDecimalNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param bigDecimalNullable Non-required, nullable BigDecimal.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder bigDecimalNullable(final BigDecimal bigDecimalNullable) { + this.bigDecimalNullable = bigDecimalNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#bigDecimalRequired }. + * + *

NOTE: Pass-by-reference is used! + * + * @param bigDecimalRequired Required, non-nullable BigDecimal.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder bigDecimalRequired(final BigDecimal bigDecimalRequired) { + this.bigDecimalRequired = bigDecimalRequired; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#bigDecimalRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param bigDecimalRequiredNullable Required, nullable BigDecimal.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder bigDecimalRequiredNullable(final BigDecimal bigDecimalRequiredNullable) { + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; + return this; + } + /** * Sets the value of {@link RecordWithAllConstraints#bigDecimalMinimum }. * *

NOTE: Pass-by-reference is used! * - * @param bigDecimalMinimum sets the value of bigDecimalMinimum. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0.. * @return this {@link Builder}-instance for method-chaining. */ public Builder bigDecimalMinimum(final BigDecimal bigDecimalMinimum) { @@ -444,7 +879,7 @@ public Builder bigDecimalMinimum(final BigDecimal bigDecimalMinimum) { * *

NOTE: Pass-by-reference is used! * - * @param bigDecimalMaximum sets the value of bigDecimalMaximum. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder bigDecimalMaximum(final BigDecimal bigDecimalMaximum) { @@ -457,7 +892,7 @@ public Builder bigDecimalMaximum(final BigDecimal bigDecimalMaximum) { * *

NOTE: Pass-by-reference is used! * - * @param bigDecimalMinimumAndMaximum sets the value of bigDecimalMinimumAndMaximum. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder bigDecimalMinimumAndMaximum(final BigDecimal bigDecimalMinimumAndMaximum) { @@ -475,6 +910,12 @@ public Builder bigDecimalMinimumAndMaximum(final BigDecimal bigDecimalMinimumAnd */ public RecordWithAllConstraints build() { return new RecordWithAllConstraints( + booleanStandard, + booleanDefault, + booleanNullable, + booleanRequired, + booleanRequiredDefault, + booleanRequiredNullable, stringStandard, stringDefault, stringNullable, @@ -486,15 +927,33 @@ public RecordWithAllConstraints build() { stringMinLength, stringMaxLength, stringMinAndMaxLength, + arrayNullable, + arrayRequiredNullable, arrayMinItems, arrayMaxItems, arrayMinAndMaxItems, + arrayUniqueStandard, + arrayUniqueRequired, + arrayUniqueNullable, + arrayUniqueRequiredNullable, + intStandard, + intNullable, + intRequired, + intRequiredNullable, intMinimum, intMaximum, intMinimumAndMaximum, + longStandard, + longNullable, + longRequired, + longRequiredNullable, longMinimum, longMaximum, longMinimumAndMaximum, + bigDecimalStandard, + bigDecimalNullable, + bigDecimalRequired, + bigDecimalRequiredNullable, bigDecimalMinimum, bigDecimalMaximum, bigDecimalMinimumAndMaximum); diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/RecordWithNullableFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/RecordWithNullableFieldsOfEachType.java index 579bb7d1..e166143d 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/RecordWithNullableFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.github.chrimle.o2jrm.webclient.generateBuilders.ExampleNullableEnum; import io.github.chrimle.o2jrm.webclient.generateBuilders.ExampleNullableRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,41 +37,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { @JsonCreator public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } @@ -85,41 +59,10 @@ public RecordWithNullableFieldsOfEachType( /** Builder class for {@link RecordWithNullableFieldsOfEachType }. */ public static class Builder { - private Boolean field1; - private String field2; private Integer field3; - private BigDecimal field4; - private List field5; - private Set field6; private ExampleNullableRecord field7; private ExampleNullableEnum field8; - /** - * Sets the value of {@link RecordWithNullableFieldsOfEachType#field1 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field1 a Boolean field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field1(final Boolean field1) { - this.field1 = field1; - return this; - } - - /** - * Sets the value of {@link RecordWithNullableFieldsOfEachType#field2 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field2 a String field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field2(final String field2) { - this.field2 = field2; - return this; - } - /** * Sets the value of {@link RecordWithNullableFieldsOfEachType#field3 }. * @@ -133,45 +76,6 @@ public Builder field3(final Integer field3) { return this; } - /** - * Sets the value of {@link RecordWithNullableFieldsOfEachType#field4 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field4 a Number field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field4(final BigDecimal field4) { - this.field4 = field4; - return this; - } - - /** - * Sets the value of {@link RecordWithNullableFieldsOfEachType#field5 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field5 an Array of Boolean field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field5(final List field5) { - this.field5 = field5; - return this; - } - - /** - * Sets the value of {@link RecordWithNullableFieldsOfEachType#field6 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field6 a Set field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field6(final Set field6) { - this.field6 = field6; - return this; - } - /** * Sets the value of {@link RecordWithNullableFieldsOfEachType#field7 }. * @@ -208,12 +112,7 @@ public Builder field8(final ExampleNullableEnum field8) { */ public RecordWithNullableFieldsOfEachType build() { return new RecordWithNullableFieldsOfEachType( - field1, - field2, field3, - field4, - field5, - field6, field7, field8); } diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/RecordWithRequiredFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/RecordWithRequiredFieldsOfEachType.java index e1278efc..97c54b53 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/RecordWithRequiredFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/RecordWithRequiredFieldsOfEachType.java @@ -25,56 +25,29 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.github.chrimle.o2jrm.webclient.generateBuilders.ExampleEnum; import io.github.chrimle.o2jrm.webclient.generateBuilders.ExampleRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonTypeName; /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { @JsonCreator public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } @@ -82,41 +55,10 @@ public RecordWithRequiredFieldsOfEachType( /** Builder class for {@link RecordWithRequiredFieldsOfEachType }. */ public static class Builder { - private Boolean field1; - private String field2; private Integer field3; - private BigDecimal field4; - private List field5; - private Set field6; private ExampleRecord field7; private ExampleEnum field8; - /** - * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field1 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field1 a Boolean field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field1(final Boolean field1) { - this.field1 = field1; - return this; - } - - /** - * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field2 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field2 a String field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field2(final String field2) { - this.field2 = field2; - return this; - } - /** * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field3 }. * @@ -130,45 +72,6 @@ public Builder field3(final Integer field3) { return this; } - /** - * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field4 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field4 a Number field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field4(final BigDecimal field4) { - this.field4 = field4; - return this; - } - - /** - * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field5 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field5 an Array of Boolean field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field5(final List field5) { - this.field5 = field5; - return this; - } - - /** - * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field6 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field6 a Set field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field6(final Set field6) { - this.field6 = field6; - return this; - } - /** * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field7 }. * @@ -205,12 +108,7 @@ public Builder field8(final ExampleEnum field8) { */ public RecordWithRequiredFieldsOfEachType build() { return new RecordWithRequiredFieldsOfEachType( - field1, - field2, field3, - field4, - field5, - field6, field7, field8); } diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/ExampleRecordWithDefaultFields.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 67502915..00000000 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.webclient.serializableModel; - -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import java.io.Serializable; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) - implements Serializable { - - @JsonCreator - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } -} diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/RecordWithAllConstraints.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/RecordWithAllConstraints.java index 249a66b7..dac5612a 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/RecordWithAllConstraints.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/RecordWithAllConstraints.java @@ -25,10 +25,13 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -41,31 +44,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -77,15 +110,33 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) @@ -93,6 +144,12 @@ public record RecordWithAllConstraints( @JsonCreator public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -104,18 +161,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -127,15 +208,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/RecordWithNullableFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/RecordWithNullableFieldsOfEachType.java index aeab5d10..13e25597 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/RecordWithNullableFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.github.chrimle.o2jrm.webclient.serializableModel.ExampleNullableEnum; import io.github.chrimle.o2jrm.webclient.serializableModel.ExampleNullableRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; import org.openapitools.jackson.nullable.JsonNullable; @@ -44,42 +38,22 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) implements Serializable { @JsonCreator public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/RecordWithRequiredFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/RecordWithRequiredFieldsOfEachType.java index 9f1b724f..6cfe0904 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/RecordWithRequiredFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/RecordWithRequiredFieldsOfEachType.java @@ -25,15 +25,8 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.github.chrimle.o2jrm.webclient.serializableModel.ExampleEnum; import io.github.chrimle.o2jrm.webclient.serializableModel.ExampleRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import java.io.Serializable; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonTypeName; @@ -41,42 +34,22 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) implements Serializable { @JsonCreator public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/ExampleRecordWithDefaultFields.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 2cfb3e2a..00000000 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.webclient.standard; - -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - @JsonCreator - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } -} diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/RecordWithAllConstraints.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/RecordWithAllConstraints.java index 6968efb1..6f1bf5c4 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/RecordWithAllConstraints.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/RecordWithAllConstraints.java @@ -25,10 +25,13 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -40,31 +43,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -76,21 +109,45 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @JsonCreator public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -102,18 +159,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -125,15 +206,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/RecordWithNullableFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/RecordWithNullableFieldsOfEachType.java index c0c151cb..f6e0bb69 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/RecordWithNullableFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.github.chrimle.o2jrm.webclient.standard.ExampleNullableEnum; import io.github.chrimle.o2jrm.webclient.standard.ExampleNullableRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,41 +37,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { @JsonCreator public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/RecordWithRequiredFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/RecordWithRequiredFieldsOfEachType.java index 502c93da..cbb69fc7 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/RecordWithRequiredFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/RecordWithRequiredFieldsOfEachType.java @@ -25,56 +25,29 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.github.chrimle.o2jrm.webclient.standard.ExampleEnum; import io.github.chrimle.o2jrm.webclient.standard.ExampleRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonTypeName; /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { @JsonCreator public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/ExampleRecordWithDefaultFields.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 1a52d1d0..00000000 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.webclient.useBeanValidation; - -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; -import jakarta.validation.constraints.*; -import jakarta.validation.Valid; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - @JsonCreator - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } -} diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/RecordWithAllConstraints.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/RecordWithAllConstraints.java index 71f31842..b9f62def 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/RecordWithAllConstraints.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/RecordWithAllConstraints.java @@ -25,10 +25,13 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -42,31 +45,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + @NotNull Boolean booleanRequired, + @NotNull Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -78,21 +111,45 @@ public record RecordWithAllConstraints( @Size(min = 3) String stringMinLength, @Size(max = 7) String stringMaxLength, @Size(min = 3, max = 7) String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, @Size(min = 1) List arrayMinItems, @Size(max = 10) List arrayMaxItems, @Size(min = 1, max = 10) List arrayMinAndMaxItems, + Set arrayUniqueStandard, + @NotNull Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + @NotNull Integer intRequired, + Integer intRequiredNullable, @Min(18) Integer intMinimum, @Max(100) Integer intMaximum, @Min(0) @Max(100) Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + @NotNull Long longRequired, + Long longRequiredNullable, @Min(18L) Long longMinimum, @Max(100L) Long longMaximum, @Min(0L) @Max(100L) Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + @NotNull BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, @DecimalMin("0") BigDecimal bigDecimalMinimum, @DecimalMax("100") BigDecimal bigDecimalMaximum, @DecimalMin("0") @DecimalMax("100") BigDecimal bigDecimalMinimumAndMaximum) { @JsonCreator public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -104,18 +161,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -127,15 +208,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/RecordWithNullableFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/RecordWithNullableFieldsOfEachType.java index c6709684..1d16787f 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/RecordWithNullableFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.github.chrimle.o2jrm.webclient.useBeanValidation.ExampleNullableEnum; import io.github.chrimle.o2jrm.webclient.useBeanValidation.ExampleNullableRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; import org.openapitools.jackson.nullable.JsonNullable; @@ -45,41 +39,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, @Valid ExampleNullableRecord field7, ExampleNullableEnum field8) { @JsonCreator public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/RecordWithRequiredFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/RecordWithRequiredFieldsOfEachType.java index 4b9e1fc9..4f3dab04 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/RecordWithRequiredFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/RecordWithRequiredFieldsOfEachType.java @@ -25,15 +25,8 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.github.chrimle.o2jrm.webclient.useBeanValidation.ExampleEnum; import io.github.chrimle.o2jrm.webclient.useBeanValidation.ExampleRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonTypeName; import jakarta.validation.constraints.*; @@ -42,41 +35,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - @NotNull Boolean field1, - @NotNull String field2, @NotNull Integer field3, - @NotNull BigDecimal field4, - @NotNull List field5, - @NotNull Set field6, @Valid @NotNull ExampleRecord field7, @NotNull ExampleEnum field8) { @JsonCreator public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/ExampleRecordWithDefaultFields.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 3ec2d6e7..00000000 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.webclient.useEnumCaseInsensitive; - -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - @JsonCreator - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } -} diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/RecordWithAllConstraints.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/RecordWithAllConstraints.java index 6d59544b..5149b3dc 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/RecordWithAllConstraints.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/RecordWithAllConstraints.java @@ -25,10 +25,13 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -40,31 +43,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -76,21 +109,45 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @JsonCreator public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -102,18 +159,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -125,15 +206,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/RecordWithNullableFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/RecordWithNullableFieldsOfEachType.java index 074d7399..f803d97e 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/RecordWithNullableFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.github.chrimle.o2jrm.webclient.useEnumCaseInsensitive.ExampleNullableEnum; import io.github.chrimle.o2jrm.webclient.useEnumCaseInsensitive.ExampleNullableRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,41 +37,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { @JsonCreator public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } diff --git a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/RecordWithRequiredFieldsOfEachType.java b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/RecordWithRequiredFieldsOfEachType.java index 98b4e8bb..054f713c 100644 --- a/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/RecordWithRequiredFieldsOfEachType.java +++ b/test/java-useJakartaEe/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/RecordWithRequiredFieldsOfEachType.java @@ -25,56 +25,29 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.github.chrimle.o2jrm.webclient.useEnumCaseInsensitive.ExampleEnum; import io.github.chrimle.o2jrm.webclient.useEnumCaseInsensitive.ExampleRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonTypeName; /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { @JsonCreator public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } diff --git a/test/java/src/test/java/io/github/chrimle/o2jrm/models/GeneratedRecordImpl.java b/test/java/src/test/java/io/github/chrimle/o2jrm/models/GeneratedRecordImpl.java index 40d74e7a..2981a353 100644 --- a/test/java/src/test/java/io/github/chrimle/o2jrm/models/GeneratedRecordImpl.java +++ b/test/java/src/test/java/io/github/chrimle/o2jrm/models/GeneratedRecordImpl.java @@ -52,12 +52,6 @@ public enum GeneratedRecordImpl implements GeneratedRecord { List.of(), List.of(), GeneratedField.of("field1", Boolean.class).build()), - EXAMPLE_RECORD_WITH_DEFAULT_FIELDS( - "ExampleRecordWithDefaultFields", - false, - List.of(), - List.of(), - GeneratedField.of("field1", String.class).defaultValue("someDefaultValue").build()), EXAMPLE_RECORD_WITH_EXTRA_FIELD_ANNOTATIONS( "ExampleRecordWithExtraFieldAnnotations", false, @@ -124,6 +118,15 @@ public enum GeneratedRecordImpl implements GeneratedRecord { false, List.of(), List.of(), + GeneratedField.of("booleanStandard", Boolean.class).build(), + GeneratedField.of("booleanDefault", Boolean.class).defaultValue(Boolean.TRUE).build(), + GeneratedField.of("booleanNullable", Boolean.class).isNullable().build(), + GeneratedField.of("booleanRequired", Boolean.class).isRequired().build(), + GeneratedField.of("booleanRequiredDefault", Boolean.class) + .isRequired() + .defaultValue(Boolean.TRUE) + .build(), + GeneratedField.of("booleanRequiredNullable", Boolean.class).isRequired().isNullable().build(), GeneratedField.of("stringStandard", String.class).build(), GeneratedField.of("stringDefault", String.class).defaultValue("someDefaultValue").build(), GeneratedField.of("stringNullable", String.class).isNullable().build(), @@ -138,18 +141,45 @@ public enum GeneratedRecordImpl implements GeneratedRecord { GeneratedField.of("stringMinLength", String.class).minLength(3).build(), GeneratedField.of("stringMaxLength", String.class).maxLength(7).build(), GeneratedField.of("stringMinAndMaxLength", String.class).minLength(3).maxLength(7).build(), + GeneratedField.of("arrayNullable", List.class, String.class).isNullable().build(), + GeneratedField.of("arrayRequiredNullable", List.class, String.class) + .isRequired() + .isNullable() + .build(), GeneratedField.of("arrayMinItems", List.class, String.class).minItems(1).build(), GeneratedField.of("arrayMaxItems", List.class, String.class).maxItems(10).build(), GeneratedField.of("arrayMinAndMaxItems", List.class, String.class) .minItems(1) .maxItems(10) .build(), + GeneratedField.of("arrayUniqueStandard", Set.class, String.class).build(), + GeneratedField.of("arrayUniqueRequired", Set.class, String.class).isRequired().build(), + GeneratedField.of("arrayUniqueNullable", Set.class, String.class).isNullable().build(), + GeneratedField.of("arrayUniqueRequiredNullable", Set.class, String.class) + .isRequired() + .isNullable() + .build(), + GeneratedField.of("intStandard", Integer.class).build(), + GeneratedField.of("intNullable", Integer.class).isNullable().build(), + GeneratedField.of("intRequired", Integer.class).isRequired().build(), + GeneratedField.of("intRequiredNullable", Integer.class).isRequired().isNullable().build(), GeneratedField.of("intMinimum", Integer.class).minimum(18).build(), GeneratedField.of("intMaximum", Integer.class).maximum(100).build(), GeneratedField.of("intMinimumAndMaximum", Integer.class).minimum(0).maximum(100).build(), + GeneratedField.of("longStandard", Long.class).build(), + GeneratedField.of("longNullable", Long.class).isNullable().build(), + GeneratedField.of("longRequired", Long.class).isRequired().build(), + GeneratedField.of("longRequiredNullable", Long.class).isRequired().isNullable().build(), GeneratedField.of("longMinimum", Long.class).minimum(18).build(), GeneratedField.of("longMaximum", Long.class).maximum(100).build(), GeneratedField.of("longMinimumAndMaximum", Long.class).minimum(0).maximum(100).build(), + GeneratedField.of("bigDecimalStandard", BigDecimal.class).build(), + GeneratedField.of("bigDecimalNullable", BigDecimal.class).isNullable().build(), + GeneratedField.of("bigDecimalRequired", BigDecimal.class).isRequired().build(), + GeneratedField.of("bigDecimalRequiredNullable", BigDecimal.class) + .isRequired() + .isNullable() + .build(), GeneratedField.of("bigDecimalMinimum", BigDecimal.class).decimalMin("0").build(), GeneratedField.of("bigDecimalMaximum", BigDecimal.class).decimalMax("100").build(), GeneratedField.of("bigDecimalMinimumAndMaximum", BigDecimal.class) @@ -285,12 +315,7 @@ public GeneratedField[] getGeneratedFields( .toArray(new GeneratedField[] {}); case RECORD_WITH_REQUIRED_FIELDS_OF_EACH_TYPE -> List.of( - GeneratedField.of("field1", Boolean.class).isRequired().build(), - GeneratedField.of("field2", String.class).isRequired().build(), GeneratedField.of("field3", Integer.class).isRequired().build(), - GeneratedField.of("field4", BigDecimal.class).isRequired().build(), - GeneratedField.of("field5", List.class, Boolean.class).isRequired().build(), - GeneratedField.of("field6", Set.class, Boolean.class).isRequired().build(), GeneratedField.of( "field7", GeneratedRecordImpl.EXAMPLE_RECORD.getClass(pluginExecution)) .isRequired() @@ -303,18 +328,7 @@ public GeneratedField[] getGeneratedFields( .toArray(new GeneratedField[] {}); case RECORD_WITH_NULLABLE_FIELDS_OF_EACH_TYPE -> List.of( - GeneratedField.of("field1", Boolean.class).isNullable().isRequired().build(), - GeneratedField.of("field2", String.class).isNullable().isRequired().build(), GeneratedField.of("field3", Integer.class).isNullable().isRequired().build(), - GeneratedField.of("field4", BigDecimal.class).isNullable().isRequired().build(), - GeneratedField.of("field5", List.class, Boolean.class) - .isNullable() - .isRequired() - .build(), - GeneratedField.of("field6", Set.class, Boolean.class) - .isNullable() - .isRequired() - .build(), GeneratedField.of( "field7", GeneratedRecordImpl.EXAMPLE_NULLABLE_RECORD.getClass(pluginExecution)) diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/ExampleRecordWithDefaultFields.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/ExampleRecordWithDefaultFields.java deleted file mode 100644 index e30eae45..00000000 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.additionalEnumTypeAnnotations; - -import java.util.Objects; -import com.google.gson.TypeAdapter; -import com.google.gson.annotations.JsonAdapter; -import com.google.gson.annotations.SerializedName; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import java.io.IOException; -import java.util.Arrays; - -import com.google.gson.Gson; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.TypeAdapterFactory; -import com.google.gson.reflect.TypeToken; -import java.util.HashSet; -import java.util.Set; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - /** A set containing the names of all instance fields defined in this class. */ - public static final HashSet openapiFields = - new HashSet<>( - Set.of("field1")); - - /** A set containing the names of all required fields defined in this class. */ - public static final HashSet openapiRequiredFields = new HashSet<>(); - - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } - - /** - * Validates the JSON Element and throws an exception if issues are found. - * - * @param jsonElement to validate. - * @throws IOException if the JSON Element is not a valid {@link ExampleRecordWithDefaultFields } object. - */ - public static void validateJsonElement(final JsonElement jsonElement) throws IOException { - for (final String key : jsonElement.getAsJsonObject().keySet()) { - if (!ExampleRecordWithDefaultFields.openapiFields.contains(key)) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "The field `%s` in the JSON string is not defined in the `ExampleRecordWithDefaultFields` properties. JSON: %s", - key, - jsonElement)); - } - } - - final JsonObject jsonObj = jsonElement.getAsJsonObject(); - - if (jsonObj.get("field1") != null && !jsonObj.get("field1").isJsonNull()) { - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - } - } - - /** - * Creates {@link TypeAdapter}s for {@link ExampleRecordWithDefaultFields }s and other - * assignable types. - */ - public static class CustomTypeAdapterFactory implements TypeAdapterFactory { - - /** - * {@inheritDoc} - * - * @param gson to create the {@link TypeAdapter} from. - * @param type to serialize/deserialize. - * @return an (anonymous) instance of {@link TypeAdapter}, or - * {@code null} if {@code T} is not assignable to {@link ExampleRecordWithDefaultFields }. - * @param class to serialize/deserialize. - */ - @SuppressWarnings("unchecked") - @Override - public TypeAdapter create(final Gson gson, final TypeToken type) { - if (!ExampleRecordWithDefaultFields.class.isAssignableFrom(type.getRawType())) { - return null; - } - final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); - final TypeAdapter thisAdapter = - gson.getDelegateAdapter(this, TypeToken.get(ExampleRecordWithDefaultFields.class)); - - return (TypeAdapter) - new TypeAdapter() { - - @Override - public void write(final JsonWriter out, final ExampleRecordWithDefaultFields value) - throws IOException { - final JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); - elementAdapter.write(out, obj); - } - - @Override - public ExampleRecordWithDefaultFields read(final JsonReader in) throws IOException { - final JsonElement jsonElement = elementAdapter.read(in); - validateJsonElement(jsonElement); - return thisAdapter.fromJsonTree(jsonElement); - } - }.nullSafe(); - } - } -} diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithAllConstraints.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithAllConstraints.java index ebe8a707..9b39f4b4 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithAllConstraints.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithAllConstraints.java @@ -28,7 +28,9 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,31 +45,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -79,15 +111,33 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @@ -95,7 +145,13 @@ public record RecordWithAllConstraints( /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("stringStandard", + Set.of("booleanStandard", + "booleanDefault", + "booleanNullable", + "booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringStandard", "stringDefault", "stringNullable", "stringRequired", @@ -106,15 +162,33 @@ public record RecordWithAllConstraints( "stringMinLength", "stringMaxLength", "stringMinAndMaxLength", + "arrayNullable", + "arrayRequiredNullable", "arrayMinItems", "arrayMaxItems", "arrayMinAndMaxItems", + "arrayUniqueStandard", + "arrayUniqueRequired", + "arrayUniqueNullable", + "arrayUniqueRequiredNullable", + "intStandard", + "intNullable", + "intRequired", + "intRequiredNullable", "intMinimum", "intMaximum", "intMinimumAndMaximum", + "longStandard", + "longNullable", + "longRequired", + "longRequiredNullable", "longMinimum", "longMaximum", "longMinimumAndMaximum", + "bigDecimalStandard", + "bigDecimalNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable", "bigDecimalMinimum", "bigDecimalMaximum", "bigDecimalMinimumAndMaximum")); @@ -122,11 +196,29 @@ public record RecordWithAllConstraints( /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("stringRequired", + Set.of("booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringRequired", "stringRequiredNullable", - "stringRequiredPattern")); + "stringRequiredPattern", + "arrayRequiredNullable", + "arrayUniqueRequired", + "arrayUniqueRequiredNullable", + "intRequired", + "intRequiredNullable", + "longRequired", + "longRequiredNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable")); public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -138,18 +230,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -161,15 +277,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; @@ -214,6 +348,60 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (jsonObj.get("booleanStandard") != null && !jsonObj.get("booleanStandard").isJsonNull()) { + if (!jsonObj.get("booleanStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanStandard"))); + } + } + + if (jsonObj.get("booleanDefault") != null && !jsonObj.get("booleanDefault").isJsonNull()) { + if (!jsonObj.get("booleanDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanDefault"))); + } + } + + if (jsonObj.get("booleanNullable") != null && !jsonObj.get("booleanNullable").isJsonNull()) { + if (!jsonObj.get("booleanNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanNullable"))); + } + } + + if (!jsonObj.get("booleanRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequired"))); + } + + if (!jsonObj.get("booleanRequiredDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredDefault"))); + } + + if (!jsonObj.get("booleanRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredNullable"))); + } + if (jsonObj.get("stringStandard") != null && !jsonObj.get("stringStandard").isJsonNull()) { if (!jsonObj.get("stringStandard").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -318,6 +506,24 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayNullable") != null && !jsonObj.get("arrayNullable").isJsonNull()) { + if (!jsonObj.get("arrayNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayNullable"))); + } + } + + if (!jsonObj.get("arrayRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayRequiredNullable"))); + } + if (jsonObj.get("arrayMinItems") != null && !jsonObj.get("arrayMinItems").isJsonNull()) { if (!jsonObj.get("arrayMinItems").isJsonArray()) { throw new IllegalArgumentException( @@ -348,6 +554,78 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayUniqueStandard") != null && !jsonObj.get("arrayUniqueStandard").isJsonNull()) { + if (!jsonObj.get("arrayUniqueStandard").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueStandard` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueStandard"))); + } + } + + if (!jsonObj.get("arrayUniqueRequired").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequired` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequired"))); + } + + if (jsonObj.get("arrayUniqueNullable") != null && !jsonObj.get("arrayUniqueNullable").isJsonNull()) { + if (!jsonObj.get("arrayUniqueNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueNullable"))); + } + } + + if (!jsonObj.get("arrayUniqueRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequiredNullable"))); + } + + if (jsonObj.get("intStandard") != null && !jsonObj.get("intStandard").isJsonNull()) { + if (!jsonObj.get("intStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intStandard"))); + } + } + + if (jsonObj.get("intNullable") != null && !jsonObj.get("intNullable").isJsonNull()) { + if (!jsonObj.get("intNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intNullable"))); + } + } + + if (!jsonObj.get("intRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequired"))); + } + + if (!jsonObj.get("intRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequiredNullable"))); + } + if (jsonObj.get("intMinimum") != null && !jsonObj.get("intMinimum").isJsonNull()) { if (!jsonObj.get("intMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -378,6 +656,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("longStandard") != null && !jsonObj.get("longStandard").isJsonNull()) { + if (!jsonObj.get("longStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longStandard"))); + } + } + + if (jsonObj.get("longNullable") != null && !jsonObj.get("longNullable").isJsonNull()) { + if (!jsonObj.get("longNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longNullable"))); + } + } + + if (!jsonObj.get("longRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequired"))); + } + + if (!jsonObj.get("longRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequiredNullable"))); + } + if (jsonObj.get("longMinimum") != null && !jsonObj.get("longMinimum").isJsonNull()) { if (!jsonObj.get("longMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -408,6 +722,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("bigDecimalStandard") != null && !jsonObj.get("bigDecimalStandard").isJsonNull()) { + if (!jsonObj.get("bigDecimalStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalStandard"))); + } + } + + if (jsonObj.get("bigDecimalNullable") != null && !jsonObj.get("bigDecimalNullable").isJsonNull()) { + if (!jsonObj.get("bigDecimalNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalNullable"))); + } + } + + if (!jsonObj.get("bigDecimalRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequired"))); + } + + if (!jsonObj.get("bigDecimalRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequiredNullable"))); + } + if (jsonObj.get("bigDecimalMinimum") != null && !jsonObj.get("bigDecimalMinimum").isJsonNull()) { if (!jsonObj.get("bigDecimalMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithNullableFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithNullableFieldsOfEachType.java index ff393512..e12541a5 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithNullableFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.additionalEnumTypeAnnotations.ExampleNullableEnum; import io.github.chrimle.o2jrm.additionalEnumTypeAnnotations.ExampleNullableRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.google.gson.Gson; @@ -46,62 +41,32 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6")); + Set.of("field3")); public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } @@ -145,22 +110,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -169,30 +118,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - if (jsonObj.get("field7") != null && !jsonObj.get("field7").isJsonNull()) { ExampleNullableRecord.validateJsonElement(jsonObj.get("field7")); } diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithRequiredFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithRequiredFieldsOfEachType.java index c11f457f..d1f8311b 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithRequiredFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithRequiredFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.additionalEnumTypeAnnotations.ExampleEnum; import io.github.chrimle.o2jrm.additionalEnumTypeAnnotations.ExampleRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.google.gson.Gson; import com.google.gson.JsonElement; @@ -45,64 +40,34 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } @@ -146,22 +111,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -170,30 +119,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - ExampleRecord.validateJsonElement(jsonObj.get("field7")); ExampleEnum.validateJsonElement(jsonObj.get("field8")); diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/ExampleRecordWithDefaultFields.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 1f9491c6..00000000 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.additionalModelTypeAnnotations; - -import java.util.Objects; -import com.google.gson.TypeAdapter; -import com.google.gson.annotations.JsonAdapter; -import com.google.gson.annotations.SerializedName; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import java.io.IOException; -import java.util.Arrays; - -import com.google.gson.Gson; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.TypeAdapterFactory; -import com.google.gson.reflect.TypeToken; -import java.util.HashSet; -import java.util.Set; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -@io.github.chrimle.o2jrm.test.annotations.TestAnnotationOne -@io.github.chrimle.o2jrm.test.annotations.TestAnnotationTwo -@io.github.chrimle.o2jrm.test.annotations.TestAnnotationThree -public record ExampleRecordWithDefaultFields(String field1) { - - /** A set containing the names of all instance fields defined in this class. */ - public static final HashSet openapiFields = - new HashSet<>( - Set.of("field1")); - - /** A set containing the names of all required fields defined in this class. */ - public static final HashSet openapiRequiredFields = new HashSet<>(); - - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } - - /** - * Validates the JSON Element and throws an exception if issues are found. - * - * @param jsonElement to validate. - * @throws IOException if the JSON Element is not a valid {@link ExampleRecordWithDefaultFields } object. - */ - public static void validateJsonElement(final JsonElement jsonElement) throws IOException { - for (final String key : jsonElement.getAsJsonObject().keySet()) { - if (!ExampleRecordWithDefaultFields.openapiFields.contains(key)) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "The field `%s` in the JSON string is not defined in the `ExampleRecordWithDefaultFields` properties. JSON: %s", - key, - jsonElement)); - } - } - - final JsonObject jsonObj = jsonElement.getAsJsonObject(); - - if (jsonObj.get("field1") != null && !jsonObj.get("field1").isJsonNull()) { - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - } - } - - /** - * Creates {@link TypeAdapter}s for {@link ExampleRecordWithDefaultFields }s and other - * assignable types. - */ - public static class CustomTypeAdapterFactory implements TypeAdapterFactory { - - /** - * {@inheritDoc} - * - * @param gson to create the {@link TypeAdapter} from. - * @param type to serialize/deserialize. - * @return an (anonymous) instance of {@link TypeAdapter}, or - * {@code null} if {@code T} is not assignable to {@link ExampleRecordWithDefaultFields }. - * @param class to serialize/deserialize. - */ - @SuppressWarnings("unchecked") - @Override - public TypeAdapter create(final Gson gson, final TypeToken type) { - if (!ExampleRecordWithDefaultFields.class.isAssignableFrom(type.getRawType())) { - return null; - } - final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); - final TypeAdapter thisAdapter = - gson.getDelegateAdapter(this, TypeToken.get(ExampleRecordWithDefaultFields.class)); - - return (TypeAdapter) - new TypeAdapter() { - - @Override - public void write(final JsonWriter out, final ExampleRecordWithDefaultFields value) - throws IOException { - final JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); - elementAdapter.write(out, obj); - } - - @Override - public ExampleRecordWithDefaultFields read(final JsonReader in) throws IOException { - final JsonElement jsonElement = elementAdapter.read(in); - validateJsonElement(jsonElement); - return thisAdapter.fromJsonTree(jsonElement); - } - }.nullSafe(); - } - } -} diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithAllConstraints.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithAllConstraints.java index eda3696b..082aacbd 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithAllConstraints.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithAllConstraints.java @@ -28,7 +28,9 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,34 +45,64 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ @io.github.chrimle.o2jrm.test.annotations.TestAnnotationOne @io.github.chrimle.o2jrm.test.annotations.TestAnnotationTwo @io.github.chrimle.o2jrm.test.annotations.TestAnnotationThree public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -82,15 +114,33 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @@ -98,7 +148,13 @@ public record RecordWithAllConstraints( /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("stringStandard", + Set.of("booleanStandard", + "booleanDefault", + "booleanNullable", + "booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringStandard", "stringDefault", "stringNullable", "stringRequired", @@ -109,15 +165,33 @@ public record RecordWithAllConstraints( "stringMinLength", "stringMaxLength", "stringMinAndMaxLength", + "arrayNullable", + "arrayRequiredNullable", "arrayMinItems", "arrayMaxItems", "arrayMinAndMaxItems", + "arrayUniqueStandard", + "arrayUniqueRequired", + "arrayUniqueNullable", + "arrayUniqueRequiredNullable", + "intStandard", + "intNullable", + "intRequired", + "intRequiredNullable", "intMinimum", "intMaximum", "intMinimumAndMaximum", + "longStandard", + "longNullable", + "longRequired", + "longRequiredNullable", "longMinimum", "longMaximum", "longMinimumAndMaximum", + "bigDecimalStandard", + "bigDecimalNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable", "bigDecimalMinimum", "bigDecimalMaximum", "bigDecimalMinimumAndMaximum")); @@ -125,11 +199,29 @@ public record RecordWithAllConstraints( /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("stringRequired", + Set.of("booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringRequired", "stringRequiredNullable", - "stringRequiredPattern")); + "stringRequiredPattern", + "arrayRequiredNullable", + "arrayUniqueRequired", + "arrayUniqueRequiredNullable", + "intRequired", + "intRequiredNullable", + "longRequired", + "longRequiredNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable")); public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -141,18 +233,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -164,15 +280,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; @@ -217,6 +351,60 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (jsonObj.get("booleanStandard") != null && !jsonObj.get("booleanStandard").isJsonNull()) { + if (!jsonObj.get("booleanStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanStandard"))); + } + } + + if (jsonObj.get("booleanDefault") != null && !jsonObj.get("booleanDefault").isJsonNull()) { + if (!jsonObj.get("booleanDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanDefault"))); + } + } + + if (jsonObj.get("booleanNullable") != null && !jsonObj.get("booleanNullable").isJsonNull()) { + if (!jsonObj.get("booleanNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanNullable"))); + } + } + + if (!jsonObj.get("booleanRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequired"))); + } + + if (!jsonObj.get("booleanRequiredDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredDefault"))); + } + + if (!jsonObj.get("booleanRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredNullable"))); + } + if (jsonObj.get("stringStandard") != null && !jsonObj.get("stringStandard").isJsonNull()) { if (!jsonObj.get("stringStandard").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -321,6 +509,24 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayNullable") != null && !jsonObj.get("arrayNullable").isJsonNull()) { + if (!jsonObj.get("arrayNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayNullable"))); + } + } + + if (!jsonObj.get("arrayRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayRequiredNullable"))); + } + if (jsonObj.get("arrayMinItems") != null && !jsonObj.get("arrayMinItems").isJsonNull()) { if (!jsonObj.get("arrayMinItems").isJsonArray()) { throw new IllegalArgumentException( @@ -351,6 +557,78 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayUniqueStandard") != null && !jsonObj.get("arrayUniqueStandard").isJsonNull()) { + if (!jsonObj.get("arrayUniqueStandard").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueStandard` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueStandard"))); + } + } + + if (!jsonObj.get("arrayUniqueRequired").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequired` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequired"))); + } + + if (jsonObj.get("arrayUniqueNullable") != null && !jsonObj.get("arrayUniqueNullable").isJsonNull()) { + if (!jsonObj.get("arrayUniqueNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueNullable"))); + } + } + + if (!jsonObj.get("arrayUniqueRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequiredNullable"))); + } + + if (jsonObj.get("intStandard") != null && !jsonObj.get("intStandard").isJsonNull()) { + if (!jsonObj.get("intStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intStandard"))); + } + } + + if (jsonObj.get("intNullable") != null && !jsonObj.get("intNullable").isJsonNull()) { + if (!jsonObj.get("intNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intNullable"))); + } + } + + if (!jsonObj.get("intRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequired"))); + } + + if (!jsonObj.get("intRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequiredNullable"))); + } + if (jsonObj.get("intMinimum") != null && !jsonObj.get("intMinimum").isJsonNull()) { if (!jsonObj.get("intMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -381,6 +659,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("longStandard") != null && !jsonObj.get("longStandard").isJsonNull()) { + if (!jsonObj.get("longStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longStandard"))); + } + } + + if (jsonObj.get("longNullable") != null && !jsonObj.get("longNullable").isJsonNull()) { + if (!jsonObj.get("longNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longNullable"))); + } + } + + if (!jsonObj.get("longRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequired"))); + } + + if (!jsonObj.get("longRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequiredNullable"))); + } + if (jsonObj.get("longMinimum") != null && !jsonObj.get("longMinimum").isJsonNull()) { if (!jsonObj.get("longMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -411,6 +725,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("bigDecimalStandard") != null && !jsonObj.get("bigDecimalStandard").isJsonNull()) { + if (!jsonObj.get("bigDecimalStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalStandard"))); + } + } + + if (jsonObj.get("bigDecimalNullable") != null && !jsonObj.get("bigDecimalNullable").isJsonNull()) { + if (!jsonObj.get("bigDecimalNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalNullable"))); + } + } + + if (!jsonObj.get("bigDecimalRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequired"))); + } + + if (!jsonObj.get("bigDecimalRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequiredNullable"))); + } + if (jsonObj.get("bigDecimalMinimum") != null && !jsonObj.get("bigDecimalMinimum").isJsonNull()) { if (!jsonObj.get("bigDecimalMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithNullableFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithNullableFieldsOfEachType.java index 32fb1a0f..0cc44e1b 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithNullableFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.additionalModelTypeAnnotations.ExampleNullableEnum; import io.github.chrimle.o2jrm.additionalModelTypeAnnotations.ExampleNullableRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.google.gson.Gson; @@ -46,12 +41,7 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ @@ -59,52 +49,27 @@ @io.github.chrimle.o2jrm.test.annotations.TestAnnotationTwo @io.github.chrimle.o2jrm.test.annotations.TestAnnotationThree public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6")); + Set.of("field3")); public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } @@ -148,22 +113,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -172,30 +121,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - if (jsonObj.get("field7") != null && !jsonObj.get("field7").isJsonNull()) { ExampleNullableRecord.validateJsonElement(jsonObj.get("field7")); } diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithRequiredFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithRequiredFieldsOfEachType.java index b6fb7587..1f5a48cd 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithRequiredFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithRequiredFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.additionalModelTypeAnnotations.ExampleEnum; import io.github.chrimle.o2jrm.additionalModelTypeAnnotations.ExampleRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.google.gson.Gson; import com.google.gson.JsonElement; @@ -45,12 +40,7 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ @@ -58,54 +48,29 @@ @io.github.chrimle.o2jrm.test.annotations.TestAnnotationTwo @io.github.chrimle.o2jrm.test.annotations.TestAnnotationThree public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } @@ -149,22 +114,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -173,30 +122,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - ExampleRecord.validateJsonElement(jsonObj.get("field7")); ExampleEnum.validateJsonElement(jsonObj.get("field8")); diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/ExampleRecordWithDefaultFields.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 3c6ba87e..00000000 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.enumDefaultCaseAndCaseInsensitive; - -import java.util.Objects; -import com.google.gson.TypeAdapter; -import com.google.gson.annotations.JsonAdapter; -import com.google.gson.annotations.SerializedName; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import java.io.IOException; -import java.util.Arrays; - -import com.google.gson.Gson; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.TypeAdapterFactory; -import com.google.gson.reflect.TypeToken; -import java.util.HashSet; -import java.util.Set; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - /** A set containing the names of all instance fields defined in this class. */ - public static final HashSet openapiFields = - new HashSet<>( - Set.of("field1")); - - /** A set containing the names of all required fields defined in this class. */ - public static final HashSet openapiRequiredFields = new HashSet<>(); - - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } - - /** - * Validates the JSON Element and throws an exception if issues are found. - * - * @param jsonElement to validate. - * @throws IOException if the JSON Element is not a valid {@link ExampleRecordWithDefaultFields } object. - */ - public static void validateJsonElement(final JsonElement jsonElement) throws IOException { - for (final String key : jsonElement.getAsJsonObject().keySet()) { - if (!ExampleRecordWithDefaultFields.openapiFields.contains(key)) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "The field `%s` in the JSON string is not defined in the `ExampleRecordWithDefaultFields` properties. JSON: %s", - key, - jsonElement)); - } - } - - final JsonObject jsonObj = jsonElement.getAsJsonObject(); - - if (jsonObj.get("field1") != null && !jsonObj.get("field1").isJsonNull()) { - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - } - } - - /** - * Creates {@link TypeAdapter}s for {@link ExampleRecordWithDefaultFields }s and other - * assignable types. - */ - public static class CustomTypeAdapterFactory implements TypeAdapterFactory { - - /** - * {@inheritDoc} - * - * @param gson to create the {@link TypeAdapter} from. - * @param type to serialize/deserialize. - * @return an (anonymous) instance of {@link TypeAdapter}, or - * {@code null} if {@code T} is not assignable to {@link ExampleRecordWithDefaultFields }. - * @param class to serialize/deserialize. - */ - @SuppressWarnings("unchecked") - @Override - public TypeAdapter create(final Gson gson, final TypeToken type) { - if (!ExampleRecordWithDefaultFields.class.isAssignableFrom(type.getRawType())) { - return null; - } - final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); - final TypeAdapter thisAdapter = - gson.getDelegateAdapter(this, TypeToken.get(ExampleRecordWithDefaultFields.class)); - - return (TypeAdapter) - new TypeAdapter() { - - @Override - public void write(final JsonWriter out, final ExampleRecordWithDefaultFields value) - throws IOException { - final JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); - elementAdapter.write(out, obj); - } - - @Override - public ExampleRecordWithDefaultFields read(final JsonReader in) throws IOException { - final JsonElement jsonElement = elementAdapter.read(in); - validateJsonElement(jsonElement); - return thisAdapter.fromJsonTree(jsonElement); - } - }.nullSafe(); - } - } -} diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithAllConstraints.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithAllConstraints.java index bf469689..311c4659 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithAllConstraints.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithAllConstraints.java @@ -28,7 +28,9 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,31 +45,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -79,15 +111,33 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @@ -95,7 +145,13 @@ public record RecordWithAllConstraints( /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("stringStandard", + Set.of("booleanStandard", + "booleanDefault", + "booleanNullable", + "booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringStandard", "stringDefault", "stringNullable", "stringRequired", @@ -106,15 +162,33 @@ public record RecordWithAllConstraints( "stringMinLength", "stringMaxLength", "stringMinAndMaxLength", + "arrayNullable", + "arrayRequiredNullable", "arrayMinItems", "arrayMaxItems", "arrayMinAndMaxItems", + "arrayUniqueStandard", + "arrayUniqueRequired", + "arrayUniqueNullable", + "arrayUniqueRequiredNullable", + "intStandard", + "intNullable", + "intRequired", + "intRequiredNullable", "intMinimum", "intMaximum", "intMinimumAndMaximum", + "longStandard", + "longNullable", + "longRequired", + "longRequiredNullable", "longMinimum", "longMaximum", "longMinimumAndMaximum", + "bigDecimalStandard", + "bigDecimalNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable", "bigDecimalMinimum", "bigDecimalMaximum", "bigDecimalMinimumAndMaximum")); @@ -122,11 +196,29 @@ public record RecordWithAllConstraints( /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("stringRequired", + Set.of("booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringRequired", "stringRequiredNullable", - "stringRequiredPattern")); + "stringRequiredPattern", + "arrayRequiredNullable", + "arrayUniqueRequired", + "arrayUniqueRequiredNullable", + "intRequired", + "intRequiredNullable", + "longRequired", + "longRequiredNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable")); public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -138,18 +230,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -161,15 +277,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; @@ -214,6 +348,60 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (jsonObj.get("booleanStandard") != null && !jsonObj.get("booleanStandard").isJsonNull()) { + if (!jsonObj.get("booleanStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanStandard"))); + } + } + + if (jsonObj.get("booleanDefault") != null && !jsonObj.get("booleanDefault").isJsonNull()) { + if (!jsonObj.get("booleanDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanDefault"))); + } + } + + if (jsonObj.get("booleanNullable") != null && !jsonObj.get("booleanNullable").isJsonNull()) { + if (!jsonObj.get("booleanNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanNullable"))); + } + } + + if (!jsonObj.get("booleanRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequired"))); + } + + if (!jsonObj.get("booleanRequiredDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredDefault"))); + } + + if (!jsonObj.get("booleanRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredNullable"))); + } + if (jsonObj.get("stringStandard") != null && !jsonObj.get("stringStandard").isJsonNull()) { if (!jsonObj.get("stringStandard").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -318,6 +506,24 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayNullable") != null && !jsonObj.get("arrayNullable").isJsonNull()) { + if (!jsonObj.get("arrayNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayNullable"))); + } + } + + if (!jsonObj.get("arrayRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayRequiredNullable"))); + } + if (jsonObj.get("arrayMinItems") != null && !jsonObj.get("arrayMinItems").isJsonNull()) { if (!jsonObj.get("arrayMinItems").isJsonArray()) { throw new IllegalArgumentException( @@ -348,6 +554,78 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayUniqueStandard") != null && !jsonObj.get("arrayUniqueStandard").isJsonNull()) { + if (!jsonObj.get("arrayUniqueStandard").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueStandard` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueStandard"))); + } + } + + if (!jsonObj.get("arrayUniqueRequired").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequired` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequired"))); + } + + if (jsonObj.get("arrayUniqueNullable") != null && !jsonObj.get("arrayUniqueNullable").isJsonNull()) { + if (!jsonObj.get("arrayUniqueNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueNullable"))); + } + } + + if (!jsonObj.get("arrayUniqueRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequiredNullable"))); + } + + if (jsonObj.get("intStandard") != null && !jsonObj.get("intStandard").isJsonNull()) { + if (!jsonObj.get("intStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intStandard"))); + } + } + + if (jsonObj.get("intNullable") != null && !jsonObj.get("intNullable").isJsonNull()) { + if (!jsonObj.get("intNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intNullable"))); + } + } + + if (!jsonObj.get("intRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequired"))); + } + + if (!jsonObj.get("intRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequiredNullable"))); + } + if (jsonObj.get("intMinimum") != null && !jsonObj.get("intMinimum").isJsonNull()) { if (!jsonObj.get("intMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -378,6 +656,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("longStandard") != null && !jsonObj.get("longStandard").isJsonNull()) { + if (!jsonObj.get("longStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longStandard"))); + } + } + + if (jsonObj.get("longNullable") != null && !jsonObj.get("longNullable").isJsonNull()) { + if (!jsonObj.get("longNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longNullable"))); + } + } + + if (!jsonObj.get("longRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequired"))); + } + + if (!jsonObj.get("longRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequiredNullable"))); + } + if (jsonObj.get("longMinimum") != null && !jsonObj.get("longMinimum").isJsonNull()) { if (!jsonObj.get("longMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -408,6 +722,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("bigDecimalStandard") != null && !jsonObj.get("bigDecimalStandard").isJsonNull()) { + if (!jsonObj.get("bigDecimalStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalStandard"))); + } + } + + if (jsonObj.get("bigDecimalNullable") != null && !jsonObj.get("bigDecimalNullable").isJsonNull()) { + if (!jsonObj.get("bigDecimalNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalNullable"))); + } + } + + if (!jsonObj.get("bigDecimalRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequired"))); + } + + if (!jsonObj.get("bigDecimalRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequiredNullable"))); + } + if (jsonObj.get("bigDecimalMinimum") != null && !jsonObj.get("bigDecimalMinimum").isJsonNull()) { if (!jsonObj.get("bigDecimalMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithNullableFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithNullableFieldsOfEachType.java index 88ec78bb..198f28db 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithNullableFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.enumDefaultCaseAndCaseInsensitive.ExampleNullableEnum; import io.github.chrimle.o2jrm.enumDefaultCaseAndCaseInsensitive.ExampleNullableRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.google.gson.Gson; @@ -46,62 +41,32 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6")); + Set.of("field3")); public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } @@ -145,22 +110,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -169,30 +118,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - if (jsonObj.get("field7") != null && !jsonObj.get("field7").isJsonNull()) { ExampleNullableRecord.validateJsonElement(jsonObj.get("field7")); } diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithRequiredFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithRequiredFieldsOfEachType.java index 595b126c..03c178aa 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithRequiredFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithRequiredFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.enumDefaultCaseAndCaseInsensitive.ExampleEnum; import io.github.chrimle.o2jrm.enumDefaultCaseAndCaseInsensitive.ExampleRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.google.gson.Gson; import com.google.gson.JsonElement; @@ -45,64 +40,34 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } @@ -146,22 +111,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -170,30 +119,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - ExampleRecord.validateJsonElement(jsonObj.get("field7")); ExampleEnum.validateJsonElement(jsonObj.get("field8")); diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/ExampleRecordWithDefaultFields.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/ExampleRecordWithDefaultFields.java deleted file mode 100644 index c9f18efb..00000000 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.enumUnknownDefaultCase; - -import java.util.Objects; -import com.google.gson.TypeAdapter; -import com.google.gson.annotations.JsonAdapter; -import com.google.gson.annotations.SerializedName; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import java.io.IOException; -import java.util.Arrays; - -import com.google.gson.Gson; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.TypeAdapterFactory; -import com.google.gson.reflect.TypeToken; -import java.util.HashSet; -import java.util.Set; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - /** A set containing the names of all instance fields defined in this class. */ - public static final HashSet openapiFields = - new HashSet<>( - Set.of("field1")); - - /** A set containing the names of all required fields defined in this class. */ - public static final HashSet openapiRequiredFields = new HashSet<>(); - - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } - - /** - * Validates the JSON Element and throws an exception if issues are found. - * - * @param jsonElement to validate. - * @throws IOException if the JSON Element is not a valid {@link ExampleRecordWithDefaultFields } object. - */ - public static void validateJsonElement(final JsonElement jsonElement) throws IOException { - for (final String key : jsonElement.getAsJsonObject().keySet()) { - if (!ExampleRecordWithDefaultFields.openapiFields.contains(key)) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "The field `%s` in the JSON string is not defined in the `ExampleRecordWithDefaultFields` properties. JSON: %s", - key, - jsonElement)); - } - } - - final JsonObject jsonObj = jsonElement.getAsJsonObject(); - - if (jsonObj.get("field1") != null && !jsonObj.get("field1").isJsonNull()) { - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - } - } - - /** - * Creates {@link TypeAdapter}s for {@link ExampleRecordWithDefaultFields }s and other - * assignable types. - */ - public static class CustomTypeAdapterFactory implements TypeAdapterFactory { - - /** - * {@inheritDoc} - * - * @param gson to create the {@link TypeAdapter} from. - * @param type to serialize/deserialize. - * @return an (anonymous) instance of {@link TypeAdapter}, or - * {@code null} if {@code T} is not assignable to {@link ExampleRecordWithDefaultFields }. - * @param class to serialize/deserialize. - */ - @SuppressWarnings("unchecked") - @Override - public TypeAdapter create(final Gson gson, final TypeToken type) { - if (!ExampleRecordWithDefaultFields.class.isAssignableFrom(type.getRawType())) { - return null; - } - final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); - final TypeAdapter thisAdapter = - gson.getDelegateAdapter(this, TypeToken.get(ExampleRecordWithDefaultFields.class)); - - return (TypeAdapter) - new TypeAdapter() { - - @Override - public void write(final JsonWriter out, final ExampleRecordWithDefaultFields value) - throws IOException { - final JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); - elementAdapter.write(out, obj); - } - - @Override - public ExampleRecordWithDefaultFields read(final JsonReader in) throws IOException { - final JsonElement jsonElement = elementAdapter.read(in); - validateJsonElement(jsonElement); - return thisAdapter.fromJsonTree(jsonElement); - } - }.nullSafe(); - } - } -} diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithAllConstraints.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithAllConstraints.java index fc2848a2..48d5be5a 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithAllConstraints.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithAllConstraints.java @@ -28,7 +28,9 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,31 +45,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -79,15 +111,33 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @@ -95,7 +145,13 @@ public record RecordWithAllConstraints( /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("stringStandard", + Set.of("booleanStandard", + "booleanDefault", + "booleanNullable", + "booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringStandard", "stringDefault", "stringNullable", "stringRequired", @@ -106,15 +162,33 @@ public record RecordWithAllConstraints( "stringMinLength", "stringMaxLength", "stringMinAndMaxLength", + "arrayNullable", + "arrayRequiredNullable", "arrayMinItems", "arrayMaxItems", "arrayMinAndMaxItems", + "arrayUniqueStandard", + "arrayUniqueRequired", + "arrayUniqueNullable", + "arrayUniqueRequiredNullable", + "intStandard", + "intNullable", + "intRequired", + "intRequiredNullable", "intMinimum", "intMaximum", "intMinimumAndMaximum", + "longStandard", + "longNullable", + "longRequired", + "longRequiredNullable", "longMinimum", "longMaximum", "longMinimumAndMaximum", + "bigDecimalStandard", + "bigDecimalNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable", "bigDecimalMinimum", "bigDecimalMaximum", "bigDecimalMinimumAndMaximum")); @@ -122,11 +196,29 @@ public record RecordWithAllConstraints( /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("stringRequired", + Set.of("booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringRequired", "stringRequiredNullable", - "stringRequiredPattern")); + "stringRequiredPattern", + "arrayRequiredNullable", + "arrayUniqueRequired", + "arrayUniqueRequiredNullable", + "intRequired", + "intRequiredNullable", + "longRequired", + "longRequiredNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable")); public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -138,18 +230,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -161,15 +277,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; @@ -214,6 +348,60 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (jsonObj.get("booleanStandard") != null && !jsonObj.get("booleanStandard").isJsonNull()) { + if (!jsonObj.get("booleanStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanStandard"))); + } + } + + if (jsonObj.get("booleanDefault") != null && !jsonObj.get("booleanDefault").isJsonNull()) { + if (!jsonObj.get("booleanDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanDefault"))); + } + } + + if (jsonObj.get("booleanNullable") != null && !jsonObj.get("booleanNullable").isJsonNull()) { + if (!jsonObj.get("booleanNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanNullable"))); + } + } + + if (!jsonObj.get("booleanRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequired"))); + } + + if (!jsonObj.get("booleanRequiredDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredDefault"))); + } + + if (!jsonObj.get("booleanRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredNullable"))); + } + if (jsonObj.get("stringStandard") != null && !jsonObj.get("stringStandard").isJsonNull()) { if (!jsonObj.get("stringStandard").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -318,6 +506,24 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayNullable") != null && !jsonObj.get("arrayNullable").isJsonNull()) { + if (!jsonObj.get("arrayNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayNullable"))); + } + } + + if (!jsonObj.get("arrayRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayRequiredNullable"))); + } + if (jsonObj.get("arrayMinItems") != null && !jsonObj.get("arrayMinItems").isJsonNull()) { if (!jsonObj.get("arrayMinItems").isJsonArray()) { throw new IllegalArgumentException( @@ -348,6 +554,78 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayUniqueStandard") != null && !jsonObj.get("arrayUniqueStandard").isJsonNull()) { + if (!jsonObj.get("arrayUniqueStandard").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueStandard` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueStandard"))); + } + } + + if (!jsonObj.get("arrayUniqueRequired").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequired` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequired"))); + } + + if (jsonObj.get("arrayUniqueNullable") != null && !jsonObj.get("arrayUniqueNullable").isJsonNull()) { + if (!jsonObj.get("arrayUniqueNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueNullable"))); + } + } + + if (!jsonObj.get("arrayUniqueRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequiredNullable"))); + } + + if (jsonObj.get("intStandard") != null && !jsonObj.get("intStandard").isJsonNull()) { + if (!jsonObj.get("intStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intStandard"))); + } + } + + if (jsonObj.get("intNullable") != null && !jsonObj.get("intNullable").isJsonNull()) { + if (!jsonObj.get("intNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intNullable"))); + } + } + + if (!jsonObj.get("intRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequired"))); + } + + if (!jsonObj.get("intRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequiredNullable"))); + } + if (jsonObj.get("intMinimum") != null && !jsonObj.get("intMinimum").isJsonNull()) { if (!jsonObj.get("intMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -378,6 +656,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("longStandard") != null && !jsonObj.get("longStandard").isJsonNull()) { + if (!jsonObj.get("longStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longStandard"))); + } + } + + if (jsonObj.get("longNullable") != null && !jsonObj.get("longNullable").isJsonNull()) { + if (!jsonObj.get("longNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longNullable"))); + } + } + + if (!jsonObj.get("longRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequired"))); + } + + if (!jsonObj.get("longRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequiredNullable"))); + } + if (jsonObj.get("longMinimum") != null && !jsonObj.get("longMinimum").isJsonNull()) { if (!jsonObj.get("longMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -408,6 +722,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("bigDecimalStandard") != null && !jsonObj.get("bigDecimalStandard").isJsonNull()) { + if (!jsonObj.get("bigDecimalStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalStandard"))); + } + } + + if (jsonObj.get("bigDecimalNullable") != null && !jsonObj.get("bigDecimalNullable").isJsonNull()) { + if (!jsonObj.get("bigDecimalNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalNullable"))); + } + } + + if (!jsonObj.get("bigDecimalRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequired"))); + } + + if (!jsonObj.get("bigDecimalRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequiredNullable"))); + } + if (jsonObj.get("bigDecimalMinimum") != null && !jsonObj.get("bigDecimalMinimum").isJsonNull()) { if (!jsonObj.get("bigDecimalMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithNullableFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithNullableFieldsOfEachType.java index 885914c3..0a3cc91e 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithNullableFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.enumUnknownDefaultCase.ExampleNullableEnum; import io.github.chrimle.o2jrm.enumUnknownDefaultCase.ExampleNullableRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.google.gson.Gson; @@ -46,62 +41,32 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6")); + Set.of("field3")); public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } @@ -145,22 +110,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -169,30 +118,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - if (jsonObj.get("field7") != null && !jsonObj.get("field7").isJsonNull()) { ExampleNullableRecord.validateJsonElement(jsonObj.get("field7")); } diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithRequiredFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithRequiredFieldsOfEachType.java index 95f81cd4..43e1b121 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithRequiredFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithRequiredFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.enumUnknownDefaultCase.ExampleEnum; import io.github.chrimle.o2jrm.enumUnknownDefaultCase.ExampleRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.google.gson.Gson; import com.google.gson.JsonElement; @@ -45,64 +40,34 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } @@ -146,22 +111,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -170,30 +119,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - ExampleRecord.validateJsonElement(jsonObj.get("field7")); ExampleEnum.validateJsonElement(jsonObj.get("field8")); diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/ExampleRecordWithDefaultFields.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 4e5e3427..00000000 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.generateBuilders; - -import java.util.Objects; -import com.google.gson.TypeAdapter; -import com.google.gson.annotations.JsonAdapter; -import com.google.gson.annotations.SerializedName; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import java.io.IOException; -import java.util.Arrays; - -import com.google.gson.Gson; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.TypeAdapterFactory; -import com.google.gson.reflect.TypeToken; -import java.util.HashSet; -import java.util.Set; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - /** A set containing the names of all instance fields defined in this class. */ - public static final HashSet openapiFields = - new HashSet<>( - Set.of("field1")); - - /** A set containing the names of all required fields defined in this class. */ - public static final HashSet openapiRequiredFields = new HashSet<>(); - - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } - - /** Builder class for {@link ExampleRecordWithDefaultFields }. */ - public static class Builder { - - private String field1; - - /** - * Sets the value of {@link ExampleRecordWithDefaultFields#field1 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field1 a String field with a default value. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field1(final String field1) { - this.field1 = field1; - return this; - } - - /** - * Builds a {@link ExampleRecordWithDefaultFields }-instance with the values provided in preceding - * builder methods. - * - *

NOTE: Pass-by-reference is used! - * - * @return a new {@link ExampleRecordWithDefaultFields }-instance. - */ - public ExampleRecordWithDefaultFields build() { - return new ExampleRecordWithDefaultFields( - field1); - } - } - - /** Creates a new {@link Builder}-instance. */ - public static ExampleRecordWithDefaultFields.Builder builder() { - return new ExampleRecordWithDefaultFields.Builder(); - } - - /** - * Validates the JSON Element and throws an exception if issues are found. - * - * @param jsonElement to validate. - * @throws IOException if the JSON Element is not a valid {@link ExampleRecordWithDefaultFields } object. - */ - public static void validateJsonElement(final JsonElement jsonElement) throws IOException { - for (final String key : jsonElement.getAsJsonObject().keySet()) { - if (!ExampleRecordWithDefaultFields.openapiFields.contains(key)) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "The field `%s` in the JSON string is not defined in the `ExampleRecordWithDefaultFields` properties. JSON: %s", - key, - jsonElement)); - } - } - - final JsonObject jsonObj = jsonElement.getAsJsonObject(); - - if (jsonObj.get("field1") != null && !jsonObj.get("field1").isJsonNull()) { - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - } - } - - /** - * Creates {@link TypeAdapter}s for {@link ExampleRecordWithDefaultFields }s and other - * assignable types. - */ - public static class CustomTypeAdapterFactory implements TypeAdapterFactory { - - /** - * {@inheritDoc} - * - * @param gson to create the {@link TypeAdapter} from. - * @param type to serialize/deserialize. - * @return an (anonymous) instance of {@link TypeAdapter}, or - * {@code null} if {@code T} is not assignable to {@link ExampleRecordWithDefaultFields }. - * @param class to serialize/deserialize. - */ - @SuppressWarnings("unchecked") - @Override - public TypeAdapter create(final Gson gson, final TypeToken type) { - if (!ExampleRecordWithDefaultFields.class.isAssignableFrom(type.getRawType())) { - return null; - } - final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); - final TypeAdapter thisAdapter = - gson.getDelegateAdapter(this, TypeToken.get(ExampleRecordWithDefaultFields.class)); - - return (TypeAdapter) - new TypeAdapter() { - - @Override - public void write(final JsonWriter out, final ExampleRecordWithDefaultFields value) - throws IOException { - final JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); - elementAdapter.write(out, obj); - } - - @Override - public ExampleRecordWithDefaultFields read(final JsonReader in) throws IOException { - final JsonElement jsonElement = elementAdapter.read(in); - validateJsonElement(jsonElement); - return thisAdapter.fromJsonTree(jsonElement); - } - }.nullSafe(); - } - } -} diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithAllConstraints.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithAllConstraints.java index 97cc4ec1..484ed38f 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithAllConstraints.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithAllConstraints.java @@ -28,7 +28,9 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,31 +45,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -79,15 +111,33 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @@ -95,7 +145,13 @@ public record RecordWithAllConstraints( /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("stringStandard", + Set.of("booleanStandard", + "booleanDefault", + "booleanNullable", + "booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringStandard", "stringDefault", "stringNullable", "stringRequired", @@ -106,15 +162,33 @@ public record RecordWithAllConstraints( "stringMinLength", "stringMaxLength", "stringMinAndMaxLength", + "arrayNullable", + "arrayRequiredNullable", "arrayMinItems", "arrayMaxItems", "arrayMinAndMaxItems", + "arrayUniqueStandard", + "arrayUniqueRequired", + "arrayUniqueNullable", + "arrayUniqueRequiredNullable", + "intStandard", + "intNullable", + "intRequired", + "intRequiredNullable", "intMinimum", "intMaximum", "intMinimumAndMaximum", + "longStandard", + "longNullable", + "longRequired", + "longRequiredNullable", "longMinimum", "longMaximum", "longMinimumAndMaximum", + "bigDecimalStandard", + "bigDecimalNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable", "bigDecimalMinimum", "bigDecimalMaximum", "bigDecimalMinimumAndMaximum")); @@ -122,11 +196,29 @@ public record RecordWithAllConstraints( /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("stringRequired", + Set.of("booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringRequired", "stringRequiredNullable", - "stringRequiredPattern")); + "stringRequiredPattern", + "arrayRequiredNullable", + "arrayUniqueRequired", + "arrayUniqueRequiredNullable", + "intRequired", + "intRequiredNullable", + "longRequired", + "longRequiredNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable")); public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -138,18 +230,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -161,15 +277,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; @@ -178,6 +312,12 @@ public RecordWithAllConstraints( /** Builder class for {@link RecordWithAllConstraints }. */ public static class Builder { + private Boolean booleanStandard; + private Boolean booleanDefault; + private Boolean booleanNullable; + private Boolean booleanRequired; + private Boolean booleanRequiredDefault; + private Boolean booleanRequiredNullable; private String stringStandard; private String stringDefault; private String stringNullable; @@ -189,25 +329,121 @@ public static class Builder { private String stringMinLength; private String stringMaxLength; private String stringMinAndMaxLength; + private List arrayNullable; + private List arrayRequiredNullable; private List arrayMinItems; private List arrayMaxItems; private List arrayMinAndMaxItems; + private Set arrayUniqueStandard; + private Set arrayUniqueRequired; + private Set arrayUniqueNullable; + private Set arrayUniqueRequiredNullable; + private Integer intStandard; + private Integer intNullable; + private Integer intRequired; + private Integer intRequiredNullable; private Integer intMinimum; private Integer intMaximum; private Integer intMinimumAndMaximum; + private Long longStandard; + private Long longNullable; + private Long longRequired; + private Long longRequiredNullable; private Long longMinimum; private Long longMaximum; private Long longMinimumAndMaximum; + private BigDecimal bigDecimalStandard; + private BigDecimal bigDecimalNullable; + private BigDecimal bigDecimalRequired; + private BigDecimal bigDecimalRequiredNullable; private BigDecimal bigDecimalMinimum; private BigDecimal bigDecimalMaximum; private BigDecimal bigDecimalMinimumAndMaximum; + /** + * Sets the value of {@link RecordWithAllConstraints#booleanStandard }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanStandard Non-required, non-nullable Boolean field.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanStandard(final Boolean booleanStandard) { + this.booleanStandard = booleanStandard; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#booleanDefault }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanDefault Non-required, non-nullable Boolean with a default value.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanDefault(final Boolean booleanDefault) { + this.booleanDefault = booleanDefault; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#booleanNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanNullable Non-required, nullable Boolean field.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanNullable(final Boolean booleanNullable) { + this.booleanNullable = booleanNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#booleanRequired }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanRequired Required, non-nullable Boolean field.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanRequired(final Boolean booleanRequired) { + this.booleanRequired = booleanRequired; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#booleanRequiredDefault }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanRequiredDefault(final Boolean booleanRequiredDefault) { + this.booleanRequiredDefault = booleanRequiredDefault; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#booleanRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanRequiredNullable Required, nullable Boolean field.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanRequiredNullable(final Boolean booleanRequiredNullable) { + this.booleanRequiredNullable = booleanRequiredNullable; + return this; + } + /** * Sets the value of {@link RecordWithAllConstraints#stringStandard }. * *

NOTE: Pass-by-reference is used! * - * @param stringStandard sets the value of stringStandard. + * @param stringStandard Non-required, non-nullable String field.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringStandard(final String stringStandard) { @@ -220,7 +456,7 @@ public Builder stringStandard(final String stringStandard) { * *

NOTE: Pass-by-reference is used! * - * @param stringDefault sets the value of stringDefault. + * @param stringDefault Non-required, non-nullable String field with a default value.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringDefault(final String stringDefault) { @@ -233,7 +469,7 @@ public Builder stringDefault(final String stringDefault) { * *

NOTE: Pass-by-reference is used! * - * @param stringNullable sets the value of stringNullable. + * @param stringNullable Non-required, nullable String field.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringNullable(final String stringNullable) { @@ -246,7 +482,7 @@ public Builder stringNullable(final String stringNullable) { * *

NOTE: Pass-by-reference is used! * - * @param stringRequired sets the value of stringRequired. + * @param stringRequired Required, non-nullable String field.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringRequired(final String stringRequired) { @@ -259,7 +495,7 @@ public Builder stringRequired(final String stringRequired) { * *

NOTE: Pass-by-reference is used! * - * @param stringRequiredNullable sets the value of stringRequiredNullable. + * @param stringRequiredNullable Required, nullable String field.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringRequiredNullable(final String stringRequiredNullable) { @@ -272,7 +508,7 @@ public Builder stringRequiredNullable(final String stringRequiredNullable) { * *

NOTE: Pass-by-reference is used! * - * @param stringRequiredPattern sets the value of stringRequiredPattern. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringRequiredPattern(final String stringRequiredPattern) { @@ -285,7 +521,7 @@ public Builder stringRequiredPattern(final String stringRequiredPattern) { * *

NOTE: Pass-by-reference is used! * - * @param stringEmailFormat sets the value of stringEmailFormat. + * @param stringEmailFormat Non-required, non-nullable String field with Email format.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringEmailFormat(final String stringEmailFormat) { @@ -298,7 +534,7 @@ public Builder stringEmailFormat(final String stringEmailFormat) { * *

NOTE: Pass-by-reference is used! * - * @param stringUuidFormat sets the value of stringUuidFormat. + * @param stringUuidFormat Non-required, non-nullable UUID field.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringUuidFormat(final UUID stringUuidFormat) { @@ -311,7 +547,7 @@ public Builder stringUuidFormat(final UUID stringUuidFormat) { * *

NOTE: Pass-by-reference is used! * - * @param stringMinLength sets the value of stringMinLength. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringMinLength(final String stringMinLength) { @@ -324,7 +560,7 @@ public Builder stringMinLength(final String stringMinLength) { * *

NOTE: Pass-by-reference is used! * - * @param stringMaxLength sets the value of stringMaxLength. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringMaxLength(final String stringMaxLength) { @@ -337,7 +573,7 @@ public Builder stringMaxLength(final String stringMaxLength) { * *

NOTE: Pass-by-reference is used! * - * @param stringMinAndMaxLength sets the value of stringMinAndMaxLength. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringMinAndMaxLength(final String stringMinAndMaxLength) { @@ -345,12 +581,38 @@ public Builder stringMinAndMaxLength(final String stringMinAndMaxLength) { return this; } + /** + * Sets the value of {@link RecordWithAllConstraints#arrayNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayNullable Non-required, nullable List.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayNullable(final List arrayNullable) { + this.arrayNullable = arrayNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#arrayRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayRequiredNullable Required, nullable List.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayRequiredNullable(final List arrayRequiredNullable) { + this.arrayRequiredNullable = arrayRequiredNullable; + return this; + } + /** * Sets the value of {@link RecordWithAllConstraints#arrayMinItems }. * *

NOTE: Pass-by-reference is used! * - * @param arrayMinItems sets the value of arrayMinItems. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1.. * @return this {@link Builder}-instance for method-chaining. */ public Builder arrayMinItems(final List arrayMinItems) { @@ -363,7 +625,7 @@ public Builder arrayMinItems(final List arrayMinItems) { * *

NOTE: Pass-by-reference is used! * - * @param arrayMaxItems sets the value of arrayMaxItems. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10.. * @return this {@link Builder}-instance for method-chaining. */ public Builder arrayMaxItems(final List arrayMaxItems) { @@ -376,7 +638,7 @@ public Builder arrayMaxItems(final List arrayMaxItems) { * *

NOTE: Pass-by-reference is used! * - * @param arrayMinAndMaxItems sets the value of arrayMinAndMaxItems. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10.. * @return this {@link Builder}-instance for method-chaining. */ public Builder arrayMinAndMaxItems(final List arrayMinAndMaxItems) { @@ -384,12 +646,116 @@ public Builder arrayMinAndMaxItems(final List arrayMinAndMaxItems) { return this; } + /** + * Sets the value of {@link RecordWithAllConstraints#arrayUniqueStandard }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayUniqueStandard Non-required, non-nullable Set.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayUniqueStandard(final Set arrayUniqueStandard) { + this.arrayUniqueStandard = arrayUniqueStandard; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#arrayUniqueRequired }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayUniqueRequired Required, non-nullable Set.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayUniqueRequired(final Set arrayUniqueRequired) { + this.arrayUniqueRequired = arrayUniqueRequired; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#arrayUniqueNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayUniqueNullable Non-required, nullable Set.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayUniqueNullable(final Set arrayUniqueNullable) { + this.arrayUniqueNullable = arrayUniqueNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#arrayUniqueRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayUniqueRequiredNullable Required, nullable Set.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayUniqueRequiredNullable(final Set arrayUniqueRequiredNullable) { + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#intStandard }. + * + *

NOTE: Pass-by-reference is used! + * + * @param intStandard Non-required, non-nullable Integer.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder intStandard(final Integer intStandard) { + this.intStandard = intStandard; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#intNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param intNullable Non-required, nullable Integer.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder intNullable(final Integer intNullable) { + this.intNullable = intNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#intRequired }. + * + *

NOTE: Pass-by-reference is used! + * + * @param intRequired Required, non-nullable Integer.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder intRequired(final Integer intRequired) { + this.intRequired = intRequired; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#intRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param intRequiredNullable Required, nullable Integer.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder intRequiredNullable(final Integer intRequiredNullable) { + this.intRequiredNullable = intRequiredNullable; + return this; + } + /** * Sets the value of {@link RecordWithAllConstraints#intMinimum }. * *

NOTE: Pass-by-reference is used! * - * @param intMinimum sets the value of intMinimum. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18.. * @return this {@link Builder}-instance for method-chaining. */ public Builder intMinimum(final Integer intMinimum) { @@ -402,7 +768,7 @@ public Builder intMinimum(final Integer intMinimum) { * *

NOTE: Pass-by-reference is used! * - * @param intMaximum sets the value of intMaximum. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder intMaximum(final Integer intMaximum) { @@ -415,7 +781,7 @@ public Builder intMaximum(final Integer intMaximum) { * *

NOTE: Pass-by-reference is used! * - * @param intMinimumAndMaximum sets the value of intMinimumAndMaximum. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder intMinimumAndMaximum(final Integer intMinimumAndMaximum) { @@ -423,12 +789,64 @@ public Builder intMinimumAndMaximum(final Integer intMinimumAndMaximum) { return this; } + /** + * Sets the value of {@link RecordWithAllConstraints#longStandard }. + * + *

NOTE: Pass-by-reference is used! + * + * @param longStandard Non-required, non-nullable Long.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder longStandard(final Long longStandard) { + this.longStandard = longStandard; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#longNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param longNullable Non-required, nullable Long.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder longNullable(final Long longNullable) { + this.longNullable = longNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#longRequired }. + * + *

NOTE: Pass-by-reference is used! + * + * @param longRequired Required, non-nullable Long.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder longRequired(final Long longRequired) { + this.longRequired = longRequired; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#longRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param longRequiredNullable Required, nullable Long.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder longRequiredNullable(final Long longRequiredNullable) { + this.longRequiredNullable = longRequiredNullable; + return this; + } + /** * Sets the value of {@link RecordWithAllConstraints#longMinimum }. * *

NOTE: Pass-by-reference is used! * - * @param longMinimum sets the value of longMinimum. + * @param longMinimum Non-required, non-nullable Long with minimum: 18.. * @return this {@link Builder}-instance for method-chaining. */ public Builder longMinimum(final Long longMinimum) { @@ -441,7 +859,7 @@ public Builder longMinimum(final Long longMinimum) { * *

NOTE: Pass-by-reference is used! * - * @param longMaximum sets the value of longMaximum. + * @param longMaximum Non-required, non-nullable Long with maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder longMaximum(final Long longMaximum) { @@ -454,7 +872,7 @@ public Builder longMaximum(final Long longMaximum) { * *

NOTE: Pass-by-reference is used! * - * @param longMinimumAndMaximum sets the value of longMinimumAndMaximum. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder longMinimumAndMaximum(final Long longMinimumAndMaximum) { @@ -462,12 +880,64 @@ public Builder longMinimumAndMaximum(final Long longMinimumAndMaximum) { return this; } + /** + * Sets the value of {@link RecordWithAllConstraints#bigDecimalStandard }. + * + *

NOTE: Pass-by-reference is used! + * + * @param bigDecimalStandard Non-required, non-nullable BigDecimal.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder bigDecimalStandard(final BigDecimal bigDecimalStandard) { + this.bigDecimalStandard = bigDecimalStandard; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#bigDecimalNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param bigDecimalNullable Non-required, nullable BigDecimal.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder bigDecimalNullable(final BigDecimal bigDecimalNullable) { + this.bigDecimalNullable = bigDecimalNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#bigDecimalRequired }. + * + *

NOTE: Pass-by-reference is used! + * + * @param bigDecimalRequired Required, non-nullable BigDecimal.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder bigDecimalRequired(final BigDecimal bigDecimalRequired) { + this.bigDecimalRequired = bigDecimalRequired; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#bigDecimalRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param bigDecimalRequiredNullable Required, nullable BigDecimal.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder bigDecimalRequiredNullable(final BigDecimal bigDecimalRequiredNullable) { + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; + return this; + } + /** * Sets the value of {@link RecordWithAllConstraints#bigDecimalMinimum }. * *

NOTE: Pass-by-reference is used! * - * @param bigDecimalMinimum sets the value of bigDecimalMinimum. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0.. * @return this {@link Builder}-instance for method-chaining. */ public Builder bigDecimalMinimum(final BigDecimal bigDecimalMinimum) { @@ -480,7 +950,7 @@ public Builder bigDecimalMinimum(final BigDecimal bigDecimalMinimum) { * *

NOTE: Pass-by-reference is used! * - * @param bigDecimalMaximum sets the value of bigDecimalMaximum. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder bigDecimalMaximum(final BigDecimal bigDecimalMaximum) { @@ -493,7 +963,7 @@ public Builder bigDecimalMaximum(final BigDecimal bigDecimalMaximum) { * *

NOTE: Pass-by-reference is used! * - * @param bigDecimalMinimumAndMaximum sets the value of bigDecimalMinimumAndMaximum. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder bigDecimalMinimumAndMaximum(final BigDecimal bigDecimalMinimumAndMaximum) { @@ -511,6 +981,12 @@ public Builder bigDecimalMinimumAndMaximum(final BigDecimal bigDecimalMinimumAnd */ public RecordWithAllConstraints build() { return new RecordWithAllConstraints( + booleanStandard, + booleanDefault, + booleanNullable, + booleanRequired, + booleanRequiredDefault, + booleanRequiredNullable, stringStandard, stringDefault, stringNullable, @@ -522,15 +998,33 @@ public RecordWithAllConstraints build() { stringMinLength, stringMaxLength, stringMinAndMaxLength, + arrayNullable, + arrayRequiredNullable, arrayMinItems, arrayMaxItems, arrayMinAndMaxItems, + arrayUniqueStandard, + arrayUniqueRequired, + arrayUniqueNullable, + arrayUniqueRequiredNullable, + intStandard, + intNullable, + intRequired, + intRequiredNullable, intMinimum, intMaximum, intMinimumAndMaximum, + longStandard, + longNullable, + longRequired, + longRequiredNullable, longMinimum, longMaximum, longMinimumAndMaximum, + bigDecimalStandard, + bigDecimalNullable, + bigDecimalRequired, + bigDecimalRequiredNullable, bigDecimalMinimum, bigDecimalMaximum, bigDecimalMinimumAndMaximum); @@ -581,6 +1075,60 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (jsonObj.get("booleanStandard") != null && !jsonObj.get("booleanStandard").isJsonNull()) { + if (!jsonObj.get("booleanStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanStandard"))); + } + } + + if (jsonObj.get("booleanDefault") != null && !jsonObj.get("booleanDefault").isJsonNull()) { + if (!jsonObj.get("booleanDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanDefault"))); + } + } + + if (jsonObj.get("booleanNullable") != null && !jsonObj.get("booleanNullable").isJsonNull()) { + if (!jsonObj.get("booleanNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanNullable"))); + } + } + + if (!jsonObj.get("booleanRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequired"))); + } + + if (!jsonObj.get("booleanRequiredDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredDefault"))); + } + + if (!jsonObj.get("booleanRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredNullable"))); + } + if (jsonObj.get("stringStandard") != null && !jsonObj.get("stringStandard").isJsonNull()) { if (!jsonObj.get("stringStandard").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -685,6 +1233,24 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayNullable") != null && !jsonObj.get("arrayNullable").isJsonNull()) { + if (!jsonObj.get("arrayNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayNullable"))); + } + } + + if (!jsonObj.get("arrayRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayRequiredNullable"))); + } + if (jsonObj.get("arrayMinItems") != null && !jsonObj.get("arrayMinItems").isJsonNull()) { if (!jsonObj.get("arrayMinItems").isJsonArray()) { throw new IllegalArgumentException( @@ -715,6 +1281,78 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayUniqueStandard") != null && !jsonObj.get("arrayUniqueStandard").isJsonNull()) { + if (!jsonObj.get("arrayUniqueStandard").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueStandard` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueStandard"))); + } + } + + if (!jsonObj.get("arrayUniqueRequired").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequired` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequired"))); + } + + if (jsonObj.get("arrayUniqueNullable") != null && !jsonObj.get("arrayUniqueNullable").isJsonNull()) { + if (!jsonObj.get("arrayUniqueNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueNullable"))); + } + } + + if (!jsonObj.get("arrayUniqueRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequiredNullable"))); + } + + if (jsonObj.get("intStandard") != null && !jsonObj.get("intStandard").isJsonNull()) { + if (!jsonObj.get("intStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intStandard"))); + } + } + + if (jsonObj.get("intNullable") != null && !jsonObj.get("intNullable").isJsonNull()) { + if (!jsonObj.get("intNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intNullable"))); + } + } + + if (!jsonObj.get("intRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequired"))); + } + + if (!jsonObj.get("intRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequiredNullable"))); + } + if (jsonObj.get("intMinimum") != null && !jsonObj.get("intMinimum").isJsonNull()) { if (!jsonObj.get("intMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -745,6 +1383,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("longStandard") != null && !jsonObj.get("longStandard").isJsonNull()) { + if (!jsonObj.get("longStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longStandard"))); + } + } + + if (jsonObj.get("longNullable") != null && !jsonObj.get("longNullable").isJsonNull()) { + if (!jsonObj.get("longNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longNullable"))); + } + } + + if (!jsonObj.get("longRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequired"))); + } + + if (!jsonObj.get("longRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequiredNullable"))); + } + if (jsonObj.get("longMinimum") != null && !jsonObj.get("longMinimum").isJsonNull()) { if (!jsonObj.get("longMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -775,6 +1449,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("bigDecimalStandard") != null && !jsonObj.get("bigDecimalStandard").isJsonNull()) { + if (!jsonObj.get("bigDecimalStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalStandard"))); + } + } + + if (jsonObj.get("bigDecimalNullable") != null && !jsonObj.get("bigDecimalNullable").isJsonNull()) { + if (!jsonObj.get("bigDecimalNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalNullable"))); + } + } + + if (!jsonObj.get("bigDecimalRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequired"))); + } + + if (!jsonObj.get("bigDecimalRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequiredNullable"))); + } + if (jsonObj.get("bigDecimalMinimum") != null && !jsonObj.get("bigDecimalMinimum").isJsonNull()) { if (!jsonObj.get("bigDecimalMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithNullableFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithNullableFieldsOfEachType.java index 4284726b..0c1f0ed4 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithNullableFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.generateBuilders.ExampleNullableEnum; import io.github.chrimle.o2jrm.generateBuilders.ExampleNullableRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.google.gson.Gson; @@ -46,62 +41,32 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6")); + Set.of("field3")); public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } @@ -109,41 +74,10 @@ public RecordWithNullableFieldsOfEachType( /** Builder class for {@link RecordWithNullableFieldsOfEachType }. */ public static class Builder { - private Boolean field1; - private String field2; private Integer field3; - private BigDecimal field4; - private List field5; - private Set field6; private ExampleNullableRecord field7; private ExampleNullableEnum field8; - /** - * Sets the value of {@link RecordWithNullableFieldsOfEachType#field1 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field1 a Boolean field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field1(final Boolean field1) { - this.field1 = field1; - return this; - } - - /** - * Sets the value of {@link RecordWithNullableFieldsOfEachType#field2 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field2 a String field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field2(final String field2) { - this.field2 = field2; - return this; - } - /** * Sets the value of {@link RecordWithNullableFieldsOfEachType#field3 }. * @@ -157,45 +91,6 @@ public Builder field3(final Integer field3) { return this; } - /** - * Sets the value of {@link RecordWithNullableFieldsOfEachType#field4 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field4 a Number field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field4(final BigDecimal field4) { - this.field4 = field4; - return this; - } - - /** - * Sets the value of {@link RecordWithNullableFieldsOfEachType#field5 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field5 an Array of Boolean field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field5(final List field5) { - this.field5 = field5; - return this; - } - - /** - * Sets the value of {@link RecordWithNullableFieldsOfEachType#field6 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field6 a Set field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field6(final Set field6) { - this.field6 = field6; - return this; - } - /** * Sets the value of {@link RecordWithNullableFieldsOfEachType#field7 }. * @@ -232,12 +127,7 @@ public Builder field8(final ExampleNullableEnum field8) { */ public RecordWithNullableFieldsOfEachType build() { return new RecordWithNullableFieldsOfEachType( - field1, - field2, field3, - field4, - field5, - field6, field7, field8); } @@ -287,22 +177,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -311,30 +185,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - if (jsonObj.get("field7") != null && !jsonObj.get("field7").isJsonNull()) { ExampleNullableRecord.validateJsonElement(jsonObj.get("field7")); } diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithRequiredFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithRequiredFieldsOfEachType.java index a598faa3..536d90e5 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithRequiredFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithRequiredFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.generateBuilders.ExampleEnum; import io.github.chrimle.o2jrm.generateBuilders.ExampleRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.google.gson.Gson; import com.google.gson.JsonElement; @@ -45,64 +40,34 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } @@ -110,41 +75,10 @@ public RecordWithRequiredFieldsOfEachType( /** Builder class for {@link RecordWithRequiredFieldsOfEachType }. */ public static class Builder { - private Boolean field1; - private String field2; private Integer field3; - private BigDecimal field4; - private List field5; - private Set field6; private ExampleRecord field7; private ExampleEnum field8; - /** - * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field1 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field1 a Boolean field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field1(final Boolean field1) { - this.field1 = field1; - return this; - } - - /** - * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field2 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field2 a String field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field2(final String field2) { - this.field2 = field2; - return this; - } - /** * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field3 }. * @@ -158,45 +92,6 @@ public Builder field3(final Integer field3) { return this; } - /** - * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field4 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field4 a Number field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field4(final BigDecimal field4) { - this.field4 = field4; - return this; - } - - /** - * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field5 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field5 an Array of Boolean field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field5(final List field5) { - this.field5 = field5; - return this; - } - - /** - * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field6 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field6 a Set field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field6(final Set field6) { - this.field6 = field6; - return this; - } - /** * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field7 }. * @@ -233,12 +128,7 @@ public Builder field8(final ExampleEnum field8) { */ public RecordWithRequiredFieldsOfEachType build() { return new RecordWithRequiredFieldsOfEachType( - field1, - field2, field3, - field4, - field5, - field6, field7, field8); } @@ -288,22 +178,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -312,30 +186,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - ExampleRecord.validateJsonElement(jsonObj.get("field7")); ExampleEnum.validateJsonElement(jsonObj.get("field8")); diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/ExampleRecordWithDefaultFields.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 3dc4b57c..00000000 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.serializableModel; - -import java.util.Objects; -import com.google.gson.TypeAdapter; -import com.google.gson.annotations.JsonAdapter; -import com.google.gson.annotations.SerializedName; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import java.io.IOException; -import java.util.Arrays; -import java.io.Serializable; - -import com.google.gson.Gson; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.TypeAdapterFactory; -import com.google.gson.reflect.TypeToken; -import java.util.HashSet; -import java.util.Set; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) - implements Serializable { - - /** A set containing the names of all instance fields defined in this class. */ - public static final HashSet openapiFields = - new HashSet<>( - Set.of("field1")); - - /** A set containing the names of all required fields defined in this class. */ - public static final HashSet openapiRequiredFields = new HashSet<>(); - - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } - - /** - * Validates the JSON Element and throws an exception if issues are found. - * - * @param jsonElement to validate. - * @throws IOException if the JSON Element is not a valid {@link ExampleRecordWithDefaultFields } object. - */ - public static void validateJsonElement(final JsonElement jsonElement) throws IOException { - for (final String key : jsonElement.getAsJsonObject().keySet()) { - if (!ExampleRecordWithDefaultFields.openapiFields.contains(key)) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "The field `%s` in the JSON string is not defined in the `ExampleRecordWithDefaultFields` properties. JSON: %s", - key, - jsonElement)); - } - } - - final JsonObject jsonObj = jsonElement.getAsJsonObject(); - - if (jsonObj.get("field1") != null && !jsonObj.get("field1").isJsonNull()) { - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - } - } - - /** - * Creates {@link TypeAdapter}s for {@link ExampleRecordWithDefaultFields }s and other - * assignable types. - */ - public static class CustomTypeAdapterFactory implements TypeAdapterFactory { - - /** - * {@inheritDoc} - * - * @param gson to create the {@link TypeAdapter} from. - * @param type to serialize/deserialize. - * @return an (anonymous) instance of {@link TypeAdapter}, or - * {@code null} if {@code T} is not assignable to {@link ExampleRecordWithDefaultFields }. - * @param class to serialize/deserialize. - */ - @SuppressWarnings("unchecked") - @Override - public TypeAdapter create(final Gson gson, final TypeToken type) { - if (!ExampleRecordWithDefaultFields.class.isAssignableFrom(type.getRawType())) { - return null; - } - final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); - final TypeAdapter thisAdapter = - gson.getDelegateAdapter(this, TypeToken.get(ExampleRecordWithDefaultFields.class)); - - return (TypeAdapter) - new TypeAdapter() { - - @Override - public void write(final JsonWriter out, final ExampleRecordWithDefaultFields value) - throws IOException { - final JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); - elementAdapter.write(out, obj); - } - - @Override - public ExampleRecordWithDefaultFields read(final JsonReader in) throws IOException { - final JsonElement jsonElement = elementAdapter.read(in); - validateJsonElement(jsonElement); - return thisAdapter.fromJsonTree(jsonElement); - } - }.nullSafe(); - } - } -} diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithAllConstraints.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithAllConstraints.java index 5cf4d5b3..d141f3aa 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithAllConstraints.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithAllConstraints.java @@ -28,7 +28,9 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import java.io.Serializable; @@ -44,31 +46,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -80,15 +112,33 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) @@ -97,7 +147,13 @@ public record RecordWithAllConstraints( /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("stringStandard", + Set.of("booleanStandard", + "booleanDefault", + "booleanNullable", + "booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringStandard", "stringDefault", "stringNullable", "stringRequired", @@ -108,15 +164,33 @@ public record RecordWithAllConstraints( "stringMinLength", "stringMaxLength", "stringMinAndMaxLength", + "arrayNullable", + "arrayRequiredNullable", "arrayMinItems", "arrayMaxItems", "arrayMinAndMaxItems", + "arrayUniqueStandard", + "arrayUniqueRequired", + "arrayUniqueNullable", + "arrayUniqueRequiredNullable", + "intStandard", + "intNullable", + "intRequired", + "intRequiredNullable", "intMinimum", "intMaximum", "intMinimumAndMaximum", + "longStandard", + "longNullable", + "longRequired", + "longRequiredNullable", "longMinimum", "longMaximum", "longMinimumAndMaximum", + "bigDecimalStandard", + "bigDecimalNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable", "bigDecimalMinimum", "bigDecimalMaximum", "bigDecimalMinimumAndMaximum")); @@ -124,11 +198,29 @@ public record RecordWithAllConstraints( /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("stringRequired", + Set.of("booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringRequired", "stringRequiredNullable", - "stringRequiredPattern")); + "stringRequiredPattern", + "arrayRequiredNullable", + "arrayUniqueRequired", + "arrayUniqueRequiredNullable", + "intRequired", + "intRequiredNullable", + "longRequired", + "longRequiredNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable")); public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -140,18 +232,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -163,15 +279,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; @@ -216,6 +350,60 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (jsonObj.get("booleanStandard") != null && !jsonObj.get("booleanStandard").isJsonNull()) { + if (!jsonObj.get("booleanStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanStandard"))); + } + } + + if (jsonObj.get("booleanDefault") != null && !jsonObj.get("booleanDefault").isJsonNull()) { + if (!jsonObj.get("booleanDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanDefault"))); + } + } + + if (jsonObj.get("booleanNullable") != null && !jsonObj.get("booleanNullable").isJsonNull()) { + if (!jsonObj.get("booleanNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanNullable"))); + } + } + + if (!jsonObj.get("booleanRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequired"))); + } + + if (!jsonObj.get("booleanRequiredDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredDefault"))); + } + + if (!jsonObj.get("booleanRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredNullable"))); + } + if (jsonObj.get("stringStandard") != null && !jsonObj.get("stringStandard").isJsonNull()) { if (!jsonObj.get("stringStandard").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -320,6 +508,24 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayNullable") != null && !jsonObj.get("arrayNullable").isJsonNull()) { + if (!jsonObj.get("arrayNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayNullable"))); + } + } + + if (!jsonObj.get("arrayRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayRequiredNullable"))); + } + if (jsonObj.get("arrayMinItems") != null && !jsonObj.get("arrayMinItems").isJsonNull()) { if (!jsonObj.get("arrayMinItems").isJsonArray()) { throw new IllegalArgumentException( @@ -350,6 +556,78 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayUniqueStandard") != null && !jsonObj.get("arrayUniqueStandard").isJsonNull()) { + if (!jsonObj.get("arrayUniqueStandard").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueStandard` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueStandard"))); + } + } + + if (!jsonObj.get("arrayUniqueRequired").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequired` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequired"))); + } + + if (jsonObj.get("arrayUniqueNullable") != null && !jsonObj.get("arrayUniqueNullable").isJsonNull()) { + if (!jsonObj.get("arrayUniqueNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueNullable"))); + } + } + + if (!jsonObj.get("arrayUniqueRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequiredNullable"))); + } + + if (jsonObj.get("intStandard") != null && !jsonObj.get("intStandard").isJsonNull()) { + if (!jsonObj.get("intStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intStandard"))); + } + } + + if (jsonObj.get("intNullable") != null && !jsonObj.get("intNullable").isJsonNull()) { + if (!jsonObj.get("intNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intNullable"))); + } + } + + if (!jsonObj.get("intRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequired"))); + } + + if (!jsonObj.get("intRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequiredNullable"))); + } + if (jsonObj.get("intMinimum") != null && !jsonObj.get("intMinimum").isJsonNull()) { if (!jsonObj.get("intMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -380,6 +658,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("longStandard") != null && !jsonObj.get("longStandard").isJsonNull()) { + if (!jsonObj.get("longStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longStandard"))); + } + } + + if (jsonObj.get("longNullable") != null && !jsonObj.get("longNullable").isJsonNull()) { + if (!jsonObj.get("longNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longNullable"))); + } + } + + if (!jsonObj.get("longRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequired"))); + } + + if (!jsonObj.get("longRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequiredNullable"))); + } + if (jsonObj.get("longMinimum") != null && !jsonObj.get("longMinimum").isJsonNull()) { if (!jsonObj.get("longMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -410,6 +724,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("bigDecimalStandard") != null && !jsonObj.get("bigDecimalStandard").isJsonNull()) { + if (!jsonObj.get("bigDecimalStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalStandard"))); + } + } + + if (jsonObj.get("bigDecimalNullable") != null && !jsonObj.get("bigDecimalNullable").isJsonNull()) { + if (!jsonObj.get("bigDecimalNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalNullable"))); + } + } + + if (!jsonObj.get("bigDecimalRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequired"))); + } + + if (!jsonObj.get("bigDecimalRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequiredNullable"))); + } + if (jsonObj.get("bigDecimalMinimum") != null && !jsonObj.get("bigDecimalMinimum").isJsonNull()) { if (!jsonObj.get("bigDecimalMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithNullableFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithNullableFieldsOfEachType.java index 50fc1df2..c17812e1 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithNullableFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.serializableModel.ExampleNullableEnum; import io.github.chrimle.o2jrm.serializableModel.ExampleNullableRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import java.io.Serializable; @@ -47,22 +42,12 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) implements Serializable { @@ -70,40 +55,20 @@ public record RecordWithNullableFieldsOfEachType( /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6")); + Set.of("field3")); public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } @@ -147,22 +112,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -171,30 +120,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - if (jsonObj.get("field7") != null && !jsonObj.get("field7").isJsonNull()) { ExampleNullableRecord.validateJsonElement(jsonObj.get("field7")); } diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithRequiredFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithRequiredFieldsOfEachType.java index c408801e..e8aec62e 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithRequiredFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithRequiredFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.serializableModel.ExampleEnum; import io.github.chrimle.o2jrm.serializableModel.ExampleRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import java.io.Serializable; import com.google.gson.Gson; @@ -46,22 +41,12 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) implements Serializable { @@ -69,42 +54,22 @@ public record RecordWithRequiredFieldsOfEachType( /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } @@ -148,22 +113,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -172,30 +121,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - ExampleRecord.validateJsonElement(jsonObj.get("field7")); ExampleEnum.validateJsonElement(jsonObj.get("field8")); diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/ExampleRecordWithDefaultFields.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 99276e09..00000000 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.standard; - -import java.util.Objects; -import com.google.gson.TypeAdapter; -import com.google.gson.annotations.JsonAdapter; -import com.google.gson.annotations.SerializedName; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import java.io.IOException; -import java.util.Arrays; - -import com.google.gson.Gson; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.TypeAdapterFactory; -import com.google.gson.reflect.TypeToken; -import java.util.HashSet; -import java.util.Set; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - /** A set containing the names of all instance fields defined in this class. */ - public static final HashSet openapiFields = - new HashSet<>( - Set.of("field1")); - - /** A set containing the names of all required fields defined in this class. */ - public static final HashSet openapiRequiredFields = new HashSet<>(); - - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } - - /** - * Validates the JSON Element and throws an exception if issues are found. - * - * @param jsonElement to validate. - * @throws IOException if the JSON Element is not a valid {@link ExampleRecordWithDefaultFields } object. - */ - public static void validateJsonElement(final JsonElement jsonElement) throws IOException { - for (final String key : jsonElement.getAsJsonObject().keySet()) { - if (!ExampleRecordWithDefaultFields.openapiFields.contains(key)) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "The field `%s` in the JSON string is not defined in the `ExampleRecordWithDefaultFields` properties. JSON: %s", - key, - jsonElement)); - } - } - - final JsonObject jsonObj = jsonElement.getAsJsonObject(); - - if (jsonObj.get("field1") != null && !jsonObj.get("field1").isJsonNull()) { - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - } - } - - /** - * Creates {@link TypeAdapter}s for {@link ExampleRecordWithDefaultFields }s and other - * assignable types. - */ - public static class CustomTypeAdapterFactory implements TypeAdapterFactory { - - /** - * {@inheritDoc} - * - * @param gson to create the {@link TypeAdapter} from. - * @param type to serialize/deserialize. - * @return an (anonymous) instance of {@link TypeAdapter}, or - * {@code null} if {@code T} is not assignable to {@link ExampleRecordWithDefaultFields }. - * @param class to serialize/deserialize. - */ - @SuppressWarnings("unchecked") - @Override - public TypeAdapter create(final Gson gson, final TypeToken type) { - if (!ExampleRecordWithDefaultFields.class.isAssignableFrom(type.getRawType())) { - return null; - } - final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); - final TypeAdapter thisAdapter = - gson.getDelegateAdapter(this, TypeToken.get(ExampleRecordWithDefaultFields.class)); - - return (TypeAdapter) - new TypeAdapter() { - - @Override - public void write(final JsonWriter out, final ExampleRecordWithDefaultFields value) - throws IOException { - final JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); - elementAdapter.write(out, obj); - } - - @Override - public ExampleRecordWithDefaultFields read(final JsonReader in) throws IOException { - final JsonElement jsonElement = elementAdapter.read(in); - validateJsonElement(jsonElement); - return thisAdapter.fromJsonTree(jsonElement); - } - }.nullSafe(); - } - } -} diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithAllConstraints.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithAllConstraints.java index bc939307..8775805b 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithAllConstraints.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithAllConstraints.java @@ -28,7 +28,9 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,31 +45,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -79,15 +111,33 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @@ -95,7 +145,13 @@ public record RecordWithAllConstraints( /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("stringStandard", + Set.of("booleanStandard", + "booleanDefault", + "booleanNullable", + "booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringStandard", "stringDefault", "stringNullable", "stringRequired", @@ -106,15 +162,33 @@ public record RecordWithAllConstraints( "stringMinLength", "stringMaxLength", "stringMinAndMaxLength", + "arrayNullable", + "arrayRequiredNullable", "arrayMinItems", "arrayMaxItems", "arrayMinAndMaxItems", + "arrayUniqueStandard", + "arrayUniqueRequired", + "arrayUniqueNullable", + "arrayUniqueRequiredNullable", + "intStandard", + "intNullable", + "intRequired", + "intRequiredNullable", "intMinimum", "intMaximum", "intMinimumAndMaximum", + "longStandard", + "longNullable", + "longRequired", + "longRequiredNullable", "longMinimum", "longMaximum", "longMinimumAndMaximum", + "bigDecimalStandard", + "bigDecimalNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable", "bigDecimalMinimum", "bigDecimalMaximum", "bigDecimalMinimumAndMaximum")); @@ -122,11 +196,29 @@ public record RecordWithAllConstraints( /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("stringRequired", + Set.of("booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringRequired", "stringRequiredNullable", - "stringRequiredPattern")); + "stringRequiredPattern", + "arrayRequiredNullable", + "arrayUniqueRequired", + "arrayUniqueRequiredNullable", + "intRequired", + "intRequiredNullable", + "longRequired", + "longRequiredNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable")); public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -138,18 +230,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -161,15 +277,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; @@ -214,6 +348,60 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (jsonObj.get("booleanStandard") != null && !jsonObj.get("booleanStandard").isJsonNull()) { + if (!jsonObj.get("booleanStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanStandard"))); + } + } + + if (jsonObj.get("booleanDefault") != null && !jsonObj.get("booleanDefault").isJsonNull()) { + if (!jsonObj.get("booleanDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanDefault"))); + } + } + + if (jsonObj.get("booleanNullable") != null && !jsonObj.get("booleanNullable").isJsonNull()) { + if (!jsonObj.get("booleanNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanNullable"))); + } + } + + if (!jsonObj.get("booleanRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequired"))); + } + + if (!jsonObj.get("booleanRequiredDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredDefault"))); + } + + if (!jsonObj.get("booleanRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredNullable"))); + } + if (jsonObj.get("stringStandard") != null && !jsonObj.get("stringStandard").isJsonNull()) { if (!jsonObj.get("stringStandard").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -318,6 +506,24 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayNullable") != null && !jsonObj.get("arrayNullable").isJsonNull()) { + if (!jsonObj.get("arrayNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayNullable"))); + } + } + + if (!jsonObj.get("arrayRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayRequiredNullable"))); + } + if (jsonObj.get("arrayMinItems") != null && !jsonObj.get("arrayMinItems").isJsonNull()) { if (!jsonObj.get("arrayMinItems").isJsonArray()) { throw new IllegalArgumentException( @@ -348,6 +554,78 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayUniqueStandard") != null && !jsonObj.get("arrayUniqueStandard").isJsonNull()) { + if (!jsonObj.get("arrayUniqueStandard").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueStandard` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueStandard"))); + } + } + + if (!jsonObj.get("arrayUniqueRequired").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequired` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequired"))); + } + + if (jsonObj.get("arrayUniqueNullable") != null && !jsonObj.get("arrayUniqueNullable").isJsonNull()) { + if (!jsonObj.get("arrayUniqueNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueNullable"))); + } + } + + if (!jsonObj.get("arrayUniqueRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequiredNullable"))); + } + + if (jsonObj.get("intStandard") != null && !jsonObj.get("intStandard").isJsonNull()) { + if (!jsonObj.get("intStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intStandard"))); + } + } + + if (jsonObj.get("intNullable") != null && !jsonObj.get("intNullable").isJsonNull()) { + if (!jsonObj.get("intNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intNullable"))); + } + } + + if (!jsonObj.get("intRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequired"))); + } + + if (!jsonObj.get("intRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequiredNullable"))); + } + if (jsonObj.get("intMinimum") != null && !jsonObj.get("intMinimum").isJsonNull()) { if (!jsonObj.get("intMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -378,6 +656,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("longStandard") != null && !jsonObj.get("longStandard").isJsonNull()) { + if (!jsonObj.get("longStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longStandard"))); + } + } + + if (jsonObj.get("longNullable") != null && !jsonObj.get("longNullable").isJsonNull()) { + if (!jsonObj.get("longNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longNullable"))); + } + } + + if (!jsonObj.get("longRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequired"))); + } + + if (!jsonObj.get("longRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequiredNullable"))); + } + if (jsonObj.get("longMinimum") != null && !jsonObj.get("longMinimum").isJsonNull()) { if (!jsonObj.get("longMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -408,6 +722,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("bigDecimalStandard") != null && !jsonObj.get("bigDecimalStandard").isJsonNull()) { + if (!jsonObj.get("bigDecimalStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalStandard"))); + } + } + + if (jsonObj.get("bigDecimalNullable") != null && !jsonObj.get("bigDecimalNullable").isJsonNull()) { + if (!jsonObj.get("bigDecimalNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalNullable"))); + } + } + + if (!jsonObj.get("bigDecimalRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequired"))); + } + + if (!jsonObj.get("bigDecimalRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequiredNullable"))); + } + if (jsonObj.get("bigDecimalMinimum") != null && !jsonObj.get("bigDecimalMinimum").isJsonNull()) { if (!jsonObj.get("bigDecimalMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithNullableFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithNullableFieldsOfEachType.java index ac26e6fb..bb46785a 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithNullableFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.standard.ExampleNullableEnum; import io.github.chrimle.o2jrm.standard.ExampleNullableRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.google.gson.Gson; @@ -46,62 +41,32 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6")); + Set.of("field3")); public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } @@ -145,22 +110,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -169,30 +118,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - if (jsonObj.get("field7") != null && !jsonObj.get("field7").isJsonNull()) { ExampleNullableRecord.validateJsonElement(jsonObj.get("field7")); } diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithRequiredFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithRequiredFieldsOfEachType.java index 863bda51..ea1d96bd 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithRequiredFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithRequiredFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.standard.ExampleEnum; import io.github.chrimle.o2jrm.standard.ExampleRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.google.gson.Gson; import com.google.gson.JsonElement; @@ -45,64 +40,34 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } @@ -146,22 +111,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -170,30 +119,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - ExampleRecord.validateJsonElement(jsonObj.get("field7")); ExampleEnum.validateJsonElement(jsonObj.get("field8")); diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/ExampleRecordWithDefaultFields.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 442c3503..00000000 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.useBeanValidation; - -import java.util.Objects; -import com.google.gson.TypeAdapter; -import com.google.gson.annotations.JsonAdapter; -import com.google.gson.annotations.SerializedName; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import java.io.IOException; -import java.util.Arrays; -import javax.validation.constraints.*; -import javax.validation.Valid; - -import com.google.gson.Gson; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.TypeAdapterFactory; -import com.google.gson.reflect.TypeToken; -import java.util.HashSet; -import java.util.Set; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - /** A set containing the names of all instance fields defined in this class. */ - public static final HashSet openapiFields = - new HashSet<>( - Set.of("field1")); - - /** A set containing the names of all required fields defined in this class. */ - public static final HashSet openapiRequiredFields = new HashSet<>(); - - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } - - /** - * Validates the JSON Element and throws an exception if issues are found. - * - * @param jsonElement to validate. - * @throws IOException if the JSON Element is not a valid {@link ExampleRecordWithDefaultFields } object. - */ - public static void validateJsonElement(final JsonElement jsonElement) throws IOException { - for (final String key : jsonElement.getAsJsonObject().keySet()) { - if (!ExampleRecordWithDefaultFields.openapiFields.contains(key)) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "The field `%s` in the JSON string is not defined in the `ExampleRecordWithDefaultFields` properties. JSON: %s", - key, - jsonElement)); - } - } - - final JsonObject jsonObj = jsonElement.getAsJsonObject(); - - if (jsonObj.get("field1") != null && !jsonObj.get("field1").isJsonNull()) { - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - } - } - - /** - * Creates {@link TypeAdapter}s for {@link ExampleRecordWithDefaultFields }s and other - * assignable types. - */ - public static class CustomTypeAdapterFactory implements TypeAdapterFactory { - - /** - * {@inheritDoc} - * - * @param gson to create the {@link TypeAdapter} from. - * @param type to serialize/deserialize. - * @return an (anonymous) instance of {@link TypeAdapter}, or - * {@code null} if {@code T} is not assignable to {@link ExampleRecordWithDefaultFields }. - * @param class to serialize/deserialize. - */ - @SuppressWarnings("unchecked") - @Override - public TypeAdapter create(final Gson gson, final TypeToken type) { - if (!ExampleRecordWithDefaultFields.class.isAssignableFrom(type.getRawType())) { - return null; - } - final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); - final TypeAdapter thisAdapter = - gson.getDelegateAdapter(this, TypeToken.get(ExampleRecordWithDefaultFields.class)); - - return (TypeAdapter) - new TypeAdapter() { - - @Override - public void write(final JsonWriter out, final ExampleRecordWithDefaultFields value) - throws IOException { - final JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); - elementAdapter.write(out, obj); - } - - @Override - public ExampleRecordWithDefaultFields read(final JsonReader in) throws IOException { - final JsonElement jsonElement = elementAdapter.read(in); - validateJsonElement(jsonElement); - return thisAdapter.fromJsonTree(jsonElement); - } - }.nullSafe(); - } - } -} diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithAllConstraints.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithAllConstraints.java index 2d930a37..82fe9640 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithAllConstraints.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithAllConstraints.java @@ -28,7 +28,9 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import javax.validation.constraints.*; @@ -45,31 +47,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + @NotNull Boolean booleanRequired, + @NotNull Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -81,15 +113,33 @@ public record RecordWithAllConstraints( @Size(min = 3) String stringMinLength, @Size(max = 7) String stringMaxLength, @Size(min = 3, max = 7) String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, @Size(min = 1) List arrayMinItems, @Size(max = 10) List arrayMaxItems, @Size(min = 1, max = 10) List arrayMinAndMaxItems, + Set arrayUniqueStandard, + @NotNull Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + @NotNull Integer intRequired, + Integer intRequiredNullable, @Min(18) Integer intMinimum, @Max(100) Integer intMaximum, @Min(0) @Max(100) Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + @NotNull Long longRequired, + Long longRequiredNullable, @Min(18L) Long longMinimum, @Max(100L) Long longMaximum, @Min(0L) @Max(100L) Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + @NotNull BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, @DecimalMin("0") BigDecimal bigDecimalMinimum, @DecimalMax("100") BigDecimal bigDecimalMaximum, @DecimalMin("0") @DecimalMax("100") BigDecimal bigDecimalMinimumAndMaximum) { @@ -97,7 +147,13 @@ public record RecordWithAllConstraints( /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("stringStandard", + Set.of("booleanStandard", + "booleanDefault", + "booleanNullable", + "booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringStandard", "stringDefault", "stringNullable", "stringRequired", @@ -108,15 +164,33 @@ public record RecordWithAllConstraints( "stringMinLength", "stringMaxLength", "stringMinAndMaxLength", + "arrayNullable", + "arrayRequiredNullable", "arrayMinItems", "arrayMaxItems", "arrayMinAndMaxItems", + "arrayUniqueStandard", + "arrayUniqueRequired", + "arrayUniqueNullable", + "arrayUniqueRequiredNullable", + "intStandard", + "intNullable", + "intRequired", + "intRequiredNullable", "intMinimum", "intMaximum", "intMinimumAndMaximum", + "longStandard", + "longNullable", + "longRequired", + "longRequiredNullable", "longMinimum", "longMaximum", "longMinimumAndMaximum", + "bigDecimalStandard", + "bigDecimalNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable", "bigDecimalMinimum", "bigDecimalMaximum", "bigDecimalMinimumAndMaximum")); @@ -124,11 +198,29 @@ public record RecordWithAllConstraints( /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("stringRequired", + Set.of("booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringRequired", "stringRequiredNullable", - "stringRequiredPattern")); + "stringRequiredPattern", + "arrayRequiredNullable", + "arrayUniqueRequired", + "arrayUniqueRequiredNullable", + "intRequired", + "intRequiredNullable", + "longRequired", + "longRequiredNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable")); public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -140,18 +232,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -163,15 +279,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; @@ -216,6 +350,60 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (jsonObj.get("booleanStandard") != null && !jsonObj.get("booleanStandard").isJsonNull()) { + if (!jsonObj.get("booleanStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanStandard"))); + } + } + + if (jsonObj.get("booleanDefault") != null && !jsonObj.get("booleanDefault").isJsonNull()) { + if (!jsonObj.get("booleanDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanDefault"))); + } + } + + if (jsonObj.get("booleanNullable") != null && !jsonObj.get("booleanNullable").isJsonNull()) { + if (!jsonObj.get("booleanNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanNullable"))); + } + } + + if (!jsonObj.get("booleanRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequired"))); + } + + if (!jsonObj.get("booleanRequiredDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredDefault"))); + } + + if (!jsonObj.get("booleanRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredNullable"))); + } + if (jsonObj.get("stringStandard") != null && !jsonObj.get("stringStandard").isJsonNull()) { if (!jsonObj.get("stringStandard").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -320,6 +508,24 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayNullable") != null && !jsonObj.get("arrayNullable").isJsonNull()) { + if (!jsonObj.get("arrayNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayNullable"))); + } + } + + if (!jsonObj.get("arrayRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayRequiredNullable"))); + } + if (jsonObj.get("arrayMinItems") != null && !jsonObj.get("arrayMinItems").isJsonNull()) { if (!jsonObj.get("arrayMinItems").isJsonArray()) { throw new IllegalArgumentException( @@ -350,6 +556,78 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayUniqueStandard") != null && !jsonObj.get("arrayUniqueStandard").isJsonNull()) { + if (!jsonObj.get("arrayUniqueStandard").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueStandard` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueStandard"))); + } + } + + if (!jsonObj.get("arrayUniqueRequired").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequired` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequired"))); + } + + if (jsonObj.get("arrayUniqueNullable") != null && !jsonObj.get("arrayUniqueNullable").isJsonNull()) { + if (!jsonObj.get("arrayUniqueNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueNullable"))); + } + } + + if (!jsonObj.get("arrayUniqueRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequiredNullable"))); + } + + if (jsonObj.get("intStandard") != null && !jsonObj.get("intStandard").isJsonNull()) { + if (!jsonObj.get("intStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intStandard"))); + } + } + + if (jsonObj.get("intNullable") != null && !jsonObj.get("intNullable").isJsonNull()) { + if (!jsonObj.get("intNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intNullable"))); + } + } + + if (!jsonObj.get("intRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequired"))); + } + + if (!jsonObj.get("intRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequiredNullable"))); + } + if (jsonObj.get("intMinimum") != null && !jsonObj.get("intMinimum").isJsonNull()) { if (!jsonObj.get("intMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -380,6 +658,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("longStandard") != null && !jsonObj.get("longStandard").isJsonNull()) { + if (!jsonObj.get("longStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longStandard"))); + } + } + + if (jsonObj.get("longNullable") != null && !jsonObj.get("longNullable").isJsonNull()) { + if (!jsonObj.get("longNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longNullable"))); + } + } + + if (!jsonObj.get("longRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequired"))); + } + + if (!jsonObj.get("longRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequiredNullable"))); + } + if (jsonObj.get("longMinimum") != null && !jsonObj.get("longMinimum").isJsonNull()) { if (!jsonObj.get("longMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -410,6 +724,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("bigDecimalStandard") != null && !jsonObj.get("bigDecimalStandard").isJsonNull()) { + if (!jsonObj.get("bigDecimalStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalStandard"))); + } + } + + if (jsonObj.get("bigDecimalNullable") != null && !jsonObj.get("bigDecimalNullable").isJsonNull()) { + if (!jsonObj.get("bigDecimalNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalNullable"))); + } + } + + if (!jsonObj.get("bigDecimalRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequired"))); + } + + if (!jsonObj.get("bigDecimalRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequiredNullable"))); + } + if (jsonObj.get("bigDecimalMinimum") != null && !jsonObj.get("bigDecimalMinimum").isJsonNull()) { if (!jsonObj.get("bigDecimalMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithNullableFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithNullableFieldsOfEachType.java index 8273a2e9..1f09dbb5 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithNullableFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.useBeanValidation.ExampleNullableEnum; import io.github.chrimle.o2jrm.useBeanValidation.ExampleNullableRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import javax.validation.constraints.*; import javax.validation.Valid; @@ -48,62 +43,32 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, @Valid ExampleNullableRecord field7, ExampleNullableEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6")); + Set.of("field3")); public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } @@ -147,22 +112,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -171,30 +120,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - if (jsonObj.get("field7") != null && !jsonObj.get("field7").isJsonNull()) { ExampleNullableRecord.validateJsonElement(jsonObj.get("field7")); } diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithRequiredFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithRequiredFieldsOfEachType.java index abdb61c5..c67b8640 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithRequiredFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithRequiredFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.useBeanValidation.ExampleEnum; import io.github.chrimle.o2jrm.useBeanValidation.ExampleRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import javax.validation.constraints.*; import javax.validation.Valid; @@ -47,64 +42,34 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - @NotNull Boolean field1, - @NotNull String field2, @NotNull Integer field3, - @NotNull BigDecimal field4, - @NotNull List field5, - @NotNull Set field6, @Valid @NotNull ExampleRecord field7, @NotNull ExampleEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } @@ -148,22 +113,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -172,30 +121,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - ExampleRecord.validateJsonElement(jsonObj.get("field7")); ExampleEnum.validateJsonElement(jsonObj.get("field8")); diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/ExampleRecordWithDefaultFields.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/ExampleRecordWithDefaultFields.java deleted file mode 100644 index bcd3744c..00000000 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.useEnumCaseInsensitive; - -import java.util.Objects; -import com.google.gson.TypeAdapter; -import com.google.gson.annotations.JsonAdapter; -import com.google.gson.annotations.SerializedName; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import java.io.IOException; -import java.util.Arrays; - -import com.google.gson.Gson; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.TypeAdapterFactory; -import com.google.gson.reflect.TypeToken; -import java.util.HashSet; -import java.util.Set; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - /** A set containing the names of all instance fields defined in this class. */ - public static final HashSet openapiFields = - new HashSet<>( - Set.of("field1")); - - /** A set containing the names of all required fields defined in this class. */ - public static final HashSet openapiRequiredFields = new HashSet<>(); - - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } - - /** - * Validates the JSON Element and throws an exception if issues are found. - * - * @param jsonElement to validate. - * @throws IOException if the JSON Element is not a valid {@link ExampleRecordWithDefaultFields } object. - */ - public static void validateJsonElement(final JsonElement jsonElement) throws IOException { - for (final String key : jsonElement.getAsJsonObject().keySet()) { - if (!ExampleRecordWithDefaultFields.openapiFields.contains(key)) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "The field `%s` in the JSON string is not defined in the `ExampleRecordWithDefaultFields` properties. JSON: %s", - key, - jsonElement)); - } - } - - final JsonObject jsonObj = jsonElement.getAsJsonObject(); - - if (jsonObj.get("field1") != null && !jsonObj.get("field1").isJsonNull()) { - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - } - } - - /** - * Creates {@link TypeAdapter}s for {@link ExampleRecordWithDefaultFields }s and other - * assignable types. - */ - public static class CustomTypeAdapterFactory implements TypeAdapterFactory { - - /** - * {@inheritDoc} - * - * @param gson to create the {@link TypeAdapter} from. - * @param type to serialize/deserialize. - * @return an (anonymous) instance of {@link TypeAdapter}, or - * {@code null} if {@code T} is not assignable to {@link ExampleRecordWithDefaultFields }. - * @param class to serialize/deserialize. - */ - @SuppressWarnings("unchecked") - @Override - public TypeAdapter create(final Gson gson, final TypeToken type) { - if (!ExampleRecordWithDefaultFields.class.isAssignableFrom(type.getRawType())) { - return null; - } - final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); - final TypeAdapter thisAdapter = - gson.getDelegateAdapter(this, TypeToken.get(ExampleRecordWithDefaultFields.class)); - - return (TypeAdapter) - new TypeAdapter() { - - @Override - public void write(final JsonWriter out, final ExampleRecordWithDefaultFields value) - throws IOException { - final JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); - elementAdapter.write(out, obj); - } - - @Override - public ExampleRecordWithDefaultFields read(final JsonReader in) throws IOException { - final JsonElement jsonElement = elementAdapter.read(in); - validateJsonElement(jsonElement); - return thisAdapter.fromJsonTree(jsonElement); - } - }.nullSafe(); - } - } -} diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithAllConstraints.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithAllConstraints.java index 5eb974da..4ecd050f 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithAllConstraints.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithAllConstraints.java @@ -28,7 +28,9 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,31 +45,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -79,15 +111,33 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @@ -95,7 +145,13 @@ public record RecordWithAllConstraints( /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("stringStandard", + Set.of("booleanStandard", + "booleanDefault", + "booleanNullable", + "booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringStandard", "stringDefault", "stringNullable", "stringRequired", @@ -106,15 +162,33 @@ public record RecordWithAllConstraints( "stringMinLength", "stringMaxLength", "stringMinAndMaxLength", + "arrayNullable", + "arrayRequiredNullable", "arrayMinItems", "arrayMaxItems", "arrayMinAndMaxItems", + "arrayUniqueStandard", + "arrayUniqueRequired", + "arrayUniqueNullable", + "arrayUniqueRequiredNullable", + "intStandard", + "intNullable", + "intRequired", + "intRequiredNullable", "intMinimum", "intMaximum", "intMinimumAndMaximum", + "longStandard", + "longNullable", + "longRequired", + "longRequiredNullable", "longMinimum", "longMaximum", "longMinimumAndMaximum", + "bigDecimalStandard", + "bigDecimalNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable", "bigDecimalMinimum", "bigDecimalMaximum", "bigDecimalMinimumAndMaximum")); @@ -122,11 +196,29 @@ public record RecordWithAllConstraints( /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("stringRequired", + Set.of("booleanRequired", + "booleanRequiredDefault", + "booleanRequiredNullable", + "stringRequired", "stringRequiredNullable", - "stringRequiredPattern")); + "stringRequiredPattern", + "arrayRequiredNullable", + "arrayUniqueRequired", + "arrayUniqueRequiredNullable", + "intRequired", + "intRequiredNullable", + "longRequired", + "longRequiredNullable", + "bigDecimalRequired", + "bigDecimalRequiredNullable")); public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -138,18 +230,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -161,15 +277,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; @@ -214,6 +348,60 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (jsonObj.get("booleanStandard") != null && !jsonObj.get("booleanStandard").isJsonNull()) { + if (!jsonObj.get("booleanStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanStandard"))); + } + } + + if (jsonObj.get("booleanDefault") != null && !jsonObj.get("booleanDefault").isJsonNull()) { + if (!jsonObj.get("booleanDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanDefault"))); + } + } + + if (jsonObj.get("booleanNullable") != null && !jsonObj.get("booleanNullable").isJsonNull()) { + if (!jsonObj.get("booleanNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanNullable"))); + } + } + + if (!jsonObj.get("booleanRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequired"))); + } + + if (!jsonObj.get("booleanRequiredDefault").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredDefault` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredDefault"))); + } + + if (!jsonObj.get("booleanRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `booleanRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("booleanRequiredNullable"))); + } + if (jsonObj.get("stringStandard") != null && !jsonObj.get("stringStandard").isJsonNull()) { if (!jsonObj.get("stringStandard").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -318,6 +506,24 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayNullable") != null && !jsonObj.get("arrayNullable").isJsonNull()) { + if (!jsonObj.get("arrayNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayNullable"))); + } + } + + if (!jsonObj.get("arrayRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayRequiredNullable"))); + } + if (jsonObj.get("arrayMinItems") != null && !jsonObj.get("arrayMinItems").isJsonNull()) { if (!jsonObj.get("arrayMinItems").isJsonArray()) { throw new IllegalArgumentException( @@ -348,6 +554,78 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("arrayUniqueStandard") != null && !jsonObj.get("arrayUniqueStandard").isJsonNull()) { + if (!jsonObj.get("arrayUniqueStandard").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueStandard` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueStandard"))); + } + } + + if (!jsonObj.get("arrayUniqueRequired").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequired` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequired"))); + } + + if (jsonObj.get("arrayUniqueNullable") != null && !jsonObj.get("arrayUniqueNullable").isJsonNull()) { + if (!jsonObj.get("arrayUniqueNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueNullable"))); + } + } + + if (!jsonObj.get("arrayUniqueRequiredNullable").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `arrayUniqueRequiredNullable` to be an array in the JSON string but got `%s`", + jsonObj.get("arrayUniqueRequiredNullable"))); + } + + if (jsonObj.get("intStandard") != null && !jsonObj.get("intStandard").isJsonNull()) { + if (!jsonObj.get("intStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intStandard"))); + } + } + + if (jsonObj.get("intNullable") != null && !jsonObj.get("intNullable").isJsonNull()) { + if (!jsonObj.get("intNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intNullable"))); + } + } + + if (!jsonObj.get("intRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequired"))); + } + + if (!jsonObj.get("intRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `intRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("intRequiredNullable"))); + } + if (jsonObj.get("intMinimum") != null && !jsonObj.get("intMinimum").isJsonNull()) { if (!jsonObj.get("intMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -378,6 +656,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("longStandard") != null && !jsonObj.get("longStandard").isJsonNull()) { + if (!jsonObj.get("longStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longStandard"))); + } + } + + if (jsonObj.get("longNullable") != null && !jsonObj.get("longNullable").isJsonNull()) { + if (!jsonObj.get("longNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longNullable"))); + } + } + + if (!jsonObj.get("longRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequired"))); + } + + if (!jsonObj.get("longRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `longRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("longRequiredNullable"))); + } + if (jsonObj.get("longMinimum") != null && !jsonObj.get("longMinimum").isJsonNull()) { if (!jsonObj.get("longMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( @@ -408,6 +722,42 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE } } + if (jsonObj.get("bigDecimalStandard") != null && !jsonObj.get("bigDecimalStandard").isJsonNull()) { + if (!jsonObj.get("bigDecimalStandard").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalStandard` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalStandard"))); + } + } + + if (jsonObj.get("bigDecimalNullable") != null && !jsonObj.get("bigDecimalNullable").isJsonNull()) { + if (!jsonObj.get("bigDecimalNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalNullable"))); + } + } + + if (!jsonObj.get("bigDecimalRequired").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequired` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequired"))); + } + + if (!jsonObj.get("bigDecimalRequiredNullable").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + java.util.Locale.ROOT, + "Expected the field `bigDecimalRequiredNullable` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("bigDecimalRequiredNullable"))); + } + if (jsonObj.get("bigDecimalMinimum") != null && !jsonObj.get("bigDecimalMinimum").isJsonNull()) { if (!jsonObj.get("bigDecimalMinimum").isJsonPrimitive()) { throw new IllegalArgumentException( diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithNullableFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithNullableFieldsOfEachType.java index 810bca0f..237ea0b1 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithNullableFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.useEnumCaseInsensitive.ExampleNullableEnum; import io.github.chrimle.o2jrm.useEnumCaseInsensitive.ExampleNullableRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.google.gson.Gson; @@ -46,62 +41,32 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6")); + Set.of("field3")); public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } @@ -145,22 +110,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -169,30 +118,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - if (jsonObj.get("field7") != null && !jsonObj.get("field7").isJsonNull()) { ExampleNullableRecord.validateJsonElement(jsonObj.get("field7")); } diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithRequiredFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithRequiredFieldsOfEachType.java index 53625a2c..9a29114f 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithRequiredFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithRequiredFieldsOfEachType.java @@ -27,12 +27,7 @@ import io.github.chrimle.o2jrm.useEnumCaseInsensitive.ExampleEnum; import io.github.chrimle.o2jrm.useEnumCaseInsensitive.ExampleRecord; import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.google.gson.Gson; import com.google.gson.JsonElement; @@ -45,64 +40,34 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { /** A set containing the names of all instance fields defined in this class. */ public static final HashSet openapiFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); /** A set containing the names of all required fields defined in this class. */ public static final HashSet openapiRequiredFields = new HashSet<>( - Set.of("field1", - "field2", - "field3", - "field4", - "field5", - "field6", + Set.of("field3", "field7", "field8")); public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } @@ -146,22 +111,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE final JsonObject jsonObj = jsonElement.getAsJsonObject(); - if (!jsonObj.get("field1").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field1` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field1"))); - } - - if (!jsonObj.get("field2").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field2` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field2"))); - } - if (!jsonObj.get("field3").isJsonPrimitive()) { throw new IllegalArgumentException( String.format( @@ -170,30 +119,6 @@ public static void validateJsonElement(final JsonElement jsonElement) throws IOE jsonObj.get("field3"))); } - if (!jsonObj.get("field4").isJsonPrimitive()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field4` to be a primitive type in the JSON string but got `%s`", - jsonObj.get("field4"))); - } - - if (!jsonObj.get("field5").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field5` to be an array in the JSON string but got `%s`", - jsonObj.get("field5"))); - } - - if (!jsonObj.get("field6").isJsonArray()) { - throw new IllegalArgumentException( - String.format( - java.util.Locale.ROOT, - "Expected the field `field6` to be an array in the JSON string but got `%s`", - jsonObj.get("field6"))); - } - ExampleRecord.validateJsonElement(jsonObj.get("field7")); ExampleEnum.validateJsonElement(jsonObj.get("field8")); diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/ExampleRecordWithDefaultFields.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 8c594384..00000000 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.webclient.additionalEnumTypeAnnotations; - -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - @JsonCreator - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } -} diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/RecordWithAllConstraints.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/RecordWithAllConstraints.java index ff1bc370..3e0d33e8 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/RecordWithAllConstraints.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/RecordWithAllConstraints.java @@ -25,10 +25,13 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -40,31 +43,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -76,21 +109,45 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @JsonCreator public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -102,18 +159,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -125,15 +206,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/RecordWithNullableFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/RecordWithNullableFieldsOfEachType.java index 3572d311..4a56374c 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/RecordWithNullableFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.github.chrimle.o2jrm.webclient.additionalEnumTypeAnnotations.ExampleNullableEnum; import io.github.chrimle.o2jrm.webclient.additionalEnumTypeAnnotations.ExampleNullableRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,41 +37,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { @JsonCreator public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/RecordWithRequiredFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/RecordWithRequiredFieldsOfEachType.java index e849a3b6..84d806bf 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/RecordWithRequiredFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalEnumTypeAnnotations/RecordWithRequiredFieldsOfEachType.java @@ -25,56 +25,29 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.github.chrimle.o2jrm.webclient.additionalEnumTypeAnnotations.ExampleEnum; import io.github.chrimle.o2jrm.webclient.additionalEnumTypeAnnotations.ExampleRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonTypeName; /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { @JsonCreator public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/ExampleRecordWithDefaultFields.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 79bc3c8d..00000000 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.webclient.additionalModelTypeAnnotations; - -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -@io.github.chrimle.o2jrm.test.annotations.TestAnnotationOne -@io.github.chrimle.o2jrm.test.annotations.TestAnnotationTwo -@io.github.chrimle.o2jrm.test.annotations.TestAnnotationThree -public record ExampleRecordWithDefaultFields(String field1) { - - @JsonCreator - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } -} diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/RecordWithAllConstraints.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/RecordWithAllConstraints.java index 92ef9749..7d7b571f 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/RecordWithAllConstraints.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/RecordWithAllConstraints.java @@ -25,10 +25,13 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -40,34 +43,64 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ @io.github.chrimle.o2jrm.test.annotations.TestAnnotationOne @io.github.chrimle.o2jrm.test.annotations.TestAnnotationTwo @io.github.chrimle.o2jrm.test.annotations.TestAnnotationThree public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -79,21 +112,45 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @JsonCreator public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -105,18 +162,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -128,15 +209,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/RecordWithNullableFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/RecordWithNullableFieldsOfEachType.java index dc69983b..58ab4c81 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/RecordWithNullableFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.github.chrimle.o2jrm.webclient.additionalModelTypeAnnotations.ExampleNullableEnum; import io.github.chrimle.o2jrm.webclient.additionalModelTypeAnnotations.ExampleNullableRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,12 +37,7 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ @@ -56,31 +45,16 @@ @io.github.chrimle.o2jrm.test.annotations.TestAnnotationTwo @io.github.chrimle.o2jrm.test.annotations.TestAnnotationThree public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { @JsonCreator public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/RecordWithRequiredFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/RecordWithRequiredFieldsOfEachType.java index 7ba77cae..60a765db 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/RecordWithRequiredFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/additionalModelTypeAnnotations/RecordWithRequiredFieldsOfEachType.java @@ -25,27 +25,15 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.github.chrimle.o2jrm.webclient.additionalModelTypeAnnotations.ExampleEnum; import io.github.chrimle.o2jrm.webclient.additionalModelTypeAnnotations.ExampleRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonTypeName; /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ @@ -53,31 +41,16 @@ @io.github.chrimle.o2jrm.test.annotations.TestAnnotationTwo @io.github.chrimle.o2jrm.test.annotations.TestAnnotationThree public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { @JsonCreator public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/ExampleRecordWithDefaultFields.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 2f80567b..00000000 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.webclient.enumDefaultCaseAndCaseInsensitive; - -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - @JsonCreator - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } -} diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/RecordWithAllConstraints.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/RecordWithAllConstraints.java index 9014aa8c..564261f5 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/RecordWithAllConstraints.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/RecordWithAllConstraints.java @@ -25,10 +25,13 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -40,31 +43,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -76,21 +109,45 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @JsonCreator public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -102,18 +159,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -125,15 +206,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/RecordWithNullableFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/RecordWithNullableFieldsOfEachType.java index b126f4df..e3ed53bb 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/RecordWithNullableFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.github.chrimle.o2jrm.webclient.enumDefaultCaseAndCaseInsensitive.ExampleNullableEnum; import io.github.chrimle.o2jrm.webclient.enumDefaultCaseAndCaseInsensitive.ExampleNullableRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,41 +37,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { @JsonCreator public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/RecordWithRequiredFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/RecordWithRequiredFieldsOfEachType.java index 737dc2ef..1d0b3b80 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/RecordWithRequiredFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumDefaultCaseAndCaseInsensitive/RecordWithRequiredFieldsOfEachType.java @@ -25,56 +25,29 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.github.chrimle.o2jrm.webclient.enumDefaultCaseAndCaseInsensitive.ExampleEnum; import io.github.chrimle.o2jrm.webclient.enumDefaultCaseAndCaseInsensitive.ExampleRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonTypeName; /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { @JsonCreator public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/ExampleRecordWithDefaultFields.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 896ac886..00000000 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.webclient.enumUnknownDefaultCase; - -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - @JsonCreator - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } -} diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/RecordWithAllConstraints.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/RecordWithAllConstraints.java index 8849c1a4..dddc6677 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/RecordWithAllConstraints.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/RecordWithAllConstraints.java @@ -25,10 +25,13 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -40,31 +43,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -76,21 +109,45 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @JsonCreator public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -102,18 +159,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -125,15 +206,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/RecordWithNullableFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/RecordWithNullableFieldsOfEachType.java index 07241c12..1f824ca1 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/RecordWithNullableFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.github.chrimle.o2jrm.webclient.enumUnknownDefaultCase.ExampleNullableEnum; import io.github.chrimle.o2jrm.webclient.enumUnknownDefaultCase.ExampleNullableRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,41 +37,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { @JsonCreator public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/RecordWithRequiredFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/RecordWithRequiredFieldsOfEachType.java index d5f1e372..829b844c 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/RecordWithRequiredFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/enumUnknownDefaultCase/RecordWithRequiredFieldsOfEachType.java @@ -25,56 +25,29 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.github.chrimle.o2jrm.webclient.enumUnknownDefaultCase.ExampleEnum; import io.github.chrimle.o2jrm.webclient.enumUnknownDefaultCase.ExampleRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonTypeName; /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { @JsonCreator public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/ExampleRecordWithDefaultFields.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/ExampleRecordWithDefaultFields.java deleted file mode 100644 index d2912304..00000000 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.webclient.generateBuilders; - -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - @JsonCreator - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } - - /** Builder class for {@link ExampleRecordWithDefaultFields }. */ - public static class Builder { - - private String field1; - - /** - * Sets the value of {@link ExampleRecordWithDefaultFields#field1 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field1 a String field with a default value. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field1(final String field1) { - this.field1 = field1; - return this; - } - - /** - * Builds a {@link ExampleRecordWithDefaultFields }-instance with the values provided in preceding - * builder methods. - * - *

NOTE: Pass-by-reference is used! - * - * @return a new {@link ExampleRecordWithDefaultFields }-instance. - */ - public ExampleRecordWithDefaultFields build() { - return new ExampleRecordWithDefaultFields( - field1); - } - } - - /** Creates a new {@link Builder}-instance. */ - public static ExampleRecordWithDefaultFields.Builder builder() { - return new ExampleRecordWithDefaultFields.Builder(); - } -} diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/RecordWithAllConstraints.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/RecordWithAllConstraints.java index 0bae3409..a0950d89 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/RecordWithAllConstraints.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/RecordWithAllConstraints.java @@ -25,10 +25,13 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -40,31 +43,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -76,21 +109,45 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @JsonCreator public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -102,18 +159,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -125,15 +206,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; @@ -142,6 +241,12 @@ public RecordWithAllConstraints( /** Builder class for {@link RecordWithAllConstraints }. */ public static class Builder { + private Boolean booleanStandard; + private Boolean booleanDefault; + private Boolean booleanNullable; + private Boolean booleanRequired; + private Boolean booleanRequiredDefault; + private Boolean booleanRequiredNullable; private String stringStandard; private String stringDefault; private String stringNullable; @@ -153,25 +258,121 @@ public static class Builder { private String stringMinLength; private String stringMaxLength; private String stringMinAndMaxLength; + private List arrayNullable; + private List arrayRequiredNullable; private List arrayMinItems; private List arrayMaxItems; private List arrayMinAndMaxItems; + private Set arrayUniqueStandard; + private Set arrayUniqueRequired; + private Set arrayUniqueNullable; + private Set arrayUniqueRequiredNullable; + private Integer intStandard; + private Integer intNullable; + private Integer intRequired; + private Integer intRequiredNullable; private Integer intMinimum; private Integer intMaximum; private Integer intMinimumAndMaximum; + private Long longStandard; + private Long longNullable; + private Long longRequired; + private Long longRequiredNullable; private Long longMinimum; private Long longMaximum; private Long longMinimumAndMaximum; + private BigDecimal bigDecimalStandard; + private BigDecimal bigDecimalNullable; + private BigDecimal bigDecimalRequired; + private BigDecimal bigDecimalRequiredNullable; private BigDecimal bigDecimalMinimum; private BigDecimal bigDecimalMaximum; private BigDecimal bigDecimalMinimumAndMaximum; + /** + * Sets the value of {@link RecordWithAllConstraints#booleanStandard }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanStandard Non-required, non-nullable Boolean field.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanStandard(final Boolean booleanStandard) { + this.booleanStandard = booleanStandard; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#booleanDefault }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanDefault Non-required, non-nullable Boolean with a default value.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanDefault(final Boolean booleanDefault) { + this.booleanDefault = booleanDefault; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#booleanNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanNullable Non-required, nullable Boolean field.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanNullable(final Boolean booleanNullable) { + this.booleanNullable = booleanNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#booleanRequired }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanRequired Required, non-nullable Boolean field.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanRequired(final Boolean booleanRequired) { + this.booleanRequired = booleanRequired; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#booleanRequiredDefault }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanRequiredDefault(final Boolean booleanRequiredDefault) { + this.booleanRequiredDefault = booleanRequiredDefault; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#booleanRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanRequiredNullable Required, nullable Boolean field.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanRequiredNullable(final Boolean booleanRequiredNullable) { + this.booleanRequiredNullable = booleanRequiredNullable; + return this; + } + /** * Sets the value of {@link RecordWithAllConstraints#stringStandard }. * *

NOTE: Pass-by-reference is used! * - * @param stringStandard sets the value of stringStandard. + * @param stringStandard Non-required, non-nullable String field.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringStandard(final String stringStandard) { @@ -184,7 +385,7 @@ public Builder stringStandard(final String stringStandard) { * *

NOTE: Pass-by-reference is used! * - * @param stringDefault sets the value of stringDefault. + * @param stringDefault Non-required, non-nullable String field with a default value.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringDefault(final String stringDefault) { @@ -197,7 +398,7 @@ public Builder stringDefault(final String stringDefault) { * *

NOTE: Pass-by-reference is used! * - * @param stringNullable sets the value of stringNullable. + * @param stringNullable Non-required, nullable String field.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringNullable(final String stringNullable) { @@ -210,7 +411,7 @@ public Builder stringNullable(final String stringNullable) { * *

NOTE: Pass-by-reference is used! * - * @param stringRequired sets the value of stringRequired. + * @param stringRequired Required, non-nullable String field.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringRequired(final String stringRequired) { @@ -223,7 +424,7 @@ public Builder stringRequired(final String stringRequired) { * *

NOTE: Pass-by-reference is used! * - * @param stringRequiredNullable sets the value of stringRequiredNullable. + * @param stringRequiredNullable Required, nullable String field.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringRequiredNullable(final String stringRequiredNullable) { @@ -236,7 +437,7 @@ public Builder stringRequiredNullable(final String stringRequiredNullable) { * *

NOTE: Pass-by-reference is used! * - * @param stringRequiredPattern sets the value of stringRequiredPattern. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringRequiredPattern(final String stringRequiredPattern) { @@ -249,7 +450,7 @@ public Builder stringRequiredPattern(final String stringRequiredPattern) { * *

NOTE: Pass-by-reference is used! * - * @param stringEmailFormat sets the value of stringEmailFormat. + * @param stringEmailFormat Non-required, non-nullable String field with Email format.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringEmailFormat(final String stringEmailFormat) { @@ -262,7 +463,7 @@ public Builder stringEmailFormat(final String stringEmailFormat) { * *

NOTE: Pass-by-reference is used! * - * @param stringUuidFormat sets the value of stringUuidFormat. + * @param stringUuidFormat Non-required, non-nullable UUID field.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringUuidFormat(final UUID stringUuidFormat) { @@ -275,7 +476,7 @@ public Builder stringUuidFormat(final UUID stringUuidFormat) { * *

NOTE: Pass-by-reference is used! * - * @param stringMinLength sets the value of stringMinLength. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringMinLength(final String stringMinLength) { @@ -288,7 +489,7 @@ public Builder stringMinLength(final String stringMinLength) { * *

NOTE: Pass-by-reference is used! * - * @param stringMaxLength sets the value of stringMaxLength. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringMaxLength(final String stringMaxLength) { @@ -301,7 +502,7 @@ public Builder stringMaxLength(final String stringMaxLength) { * *

NOTE: Pass-by-reference is used! * - * @param stringMinAndMaxLength sets the value of stringMinAndMaxLength. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringMinAndMaxLength(final String stringMinAndMaxLength) { @@ -309,12 +510,38 @@ public Builder stringMinAndMaxLength(final String stringMinAndMaxLength) { return this; } + /** + * Sets the value of {@link RecordWithAllConstraints#arrayNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayNullable Non-required, nullable List.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayNullable(final List arrayNullable) { + this.arrayNullable = arrayNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#arrayRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayRequiredNullable Required, nullable List.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayRequiredNullable(final List arrayRequiredNullable) { + this.arrayRequiredNullable = arrayRequiredNullable; + return this; + } + /** * Sets the value of {@link RecordWithAllConstraints#arrayMinItems }. * *

NOTE: Pass-by-reference is used! * - * @param arrayMinItems sets the value of arrayMinItems. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1.. * @return this {@link Builder}-instance for method-chaining. */ public Builder arrayMinItems(final List arrayMinItems) { @@ -327,7 +554,7 @@ public Builder arrayMinItems(final List arrayMinItems) { * *

NOTE: Pass-by-reference is used! * - * @param arrayMaxItems sets the value of arrayMaxItems. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10.. * @return this {@link Builder}-instance for method-chaining. */ public Builder arrayMaxItems(final List arrayMaxItems) { @@ -340,7 +567,7 @@ public Builder arrayMaxItems(final List arrayMaxItems) { * *

NOTE: Pass-by-reference is used! * - * @param arrayMinAndMaxItems sets the value of arrayMinAndMaxItems. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10.. * @return this {@link Builder}-instance for method-chaining. */ public Builder arrayMinAndMaxItems(final List arrayMinAndMaxItems) { @@ -348,12 +575,116 @@ public Builder arrayMinAndMaxItems(final List arrayMinAndMaxItems) { return this; } + /** + * Sets the value of {@link RecordWithAllConstraints#arrayUniqueStandard }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayUniqueStandard Non-required, non-nullable Set.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayUniqueStandard(final Set arrayUniqueStandard) { + this.arrayUniqueStandard = arrayUniqueStandard; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#arrayUniqueRequired }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayUniqueRequired Required, non-nullable Set.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayUniqueRequired(final Set arrayUniqueRequired) { + this.arrayUniqueRequired = arrayUniqueRequired; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#arrayUniqueNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayUniqueNullable Non-required, nullable Set.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayUniqueNullable(final Set arrayUniqueNullable) { + this.arrayUniqueNullable = arrayUniqueNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#arrayUniqueRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayUniqueRequiredNullable Required, nullable Set.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayUniqueRequiredNullable(final Set arrayUniqueRequiredNullable) { + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#intStandard }. + * + *

NOTE: Pass-by-reference is used! + * + * @param intStandard Non-required, non-nullable Integer.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder intStandard(final Integer intStandard) { + this.intStandard = intStandard; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#intNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param intNullable Non-required, nullable Integer.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder intNullable(final Integer intNullable) { + this.intNullable = intNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#intRequired }. + * + *

NOTE: Pass-by-reference is used! + * + * @param intRequired Required, non-nullable Integer.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder intRequired(final Integer intRequired) { + this.intRequired = intRequired; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#intRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param intRequiredNullable Required, nullable Integer.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder intRequiredNullable(final Integer intRequiredNullable) { + this.intRequiredNullable = intRequiredNullable; + return this; + } + /** * Sets the value of {@link RecordWithAllConstraints#intMinimum }. * *

NOTE: Pass-by-reference is used! * - * @param intMinimum sets the value of intMinimum. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18.. * @return this {@link Builder}-instance for method-chaining. */ public Builder intMinimum(final Integer intMinimum) { @@ -366,7 +697,7 @@ public Builder intMinimum(final Integer intMinimum) { * *

NOTE: Pass-by-reference is used! * - * @param intMaximum sets the value of intMaximum. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder intMaximum(final Integer intMaximum) { @@ -379,7 +710,7 @@ public Builder intMaximum(final Integer intMaximum) { * *

NOTE: Pass-by-reference is used! * - * @param intMinimumAndMaximum sets the value of intMinimumAndMaximum. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder intMinimumAndMaximum(final Integer intMinimumAndMaximum) { @@ -387,12 +718,64 @@ public Builder intMinimumAndMaximum(final Integer intMinimumAndMaximum) { return this; } + /** + * Sets the value of {@link RecordWithAllConstraints#longStandard }. + * + *

NOTE: Pass-by-reference is used! + * + * @param longStandard Non-required, non-nullable Long.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder longStandard(final Long longStandard) { + this.longStandard = longStandard; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#longNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param longNullable Non-required, nullable Long.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder longNullable(final Long longNullable) { + this.longNullable = longNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#longRequired }. + * + *

NOTE: Pass-by-reference is used! + * + * @param longRequired Required, non-nullable Long.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder longRequired(final Long longRequired) { + this.longRequired = longRequired; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#longRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param longRequiredNullable Required, nullable Long.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder longRequiredNullable(final Long longRequiredNullable) { + this.longRequiredNullable = longRequiredNullable; + return this; + } + /** * Sets the value of {@link RecordWithAllConstraints#longMinimum }. * *

NOTE: Pass-by-reference is used! * - * @param longMinimum sets the value of longMinimum. + * @param longMinimum Non-required, non-nullable Long with minimum: 18.. * @return this {@link Builder}-instance for method-chaining. */ public Builder longMinimum(final Long longMinimum) { @@ -405,7 +788,7 @@ public Builder longMinimum(final Long longMinimum) { * *

NOTE: Pass-by-reference is used! * - * @param longMaximum sets the value of longMaximum. + * @param longMaximum Non-required, non-nullable Long with maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder longMaximum(final Long longMaximum) { @@ -418,7 +801,7 @@ public Builder longMaximum(final Long longMaximum) { * *

NOTE: Pass-by-reference is used! * - * @param longMinimumAndMaximum sets the value of longMinimumAndMaximum. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder longMinimumAndMaximum(final Long longMinimumAndMaximum) { @@ -426,12 +809,64 @@ public Builder longMinimumAndMaximum(final Long longMinimumAndMaximum) { return this; } + /** + * Sets the value of {@link RecordWithAllConstraints#bigDecimalStandard }. + * + *

NOTE: Pass-by-reference is used! + * + * @param bigDecimalStandard Non-required, non-nullable BigDecimal.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder bigDecimalStandard(final BigDecimal bigDecimalStandard) { + this.bigDecimalStandard = bigDecimalStandard; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#bigDecimalNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param bigDecimalNullable Non-required, nullable BigDecimal.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder bigDecimalNullable(final BigDecimal bigDecimalNullable) { + this.bigDecimalNullable = bigDecimalNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#bigDecimalRequired }. + * + *

NOTE: Pass-by-reference is used! + * + * @param bigDecimalRequired Required, non-nullable BigDecimal.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder bigDecimalRequired(final BigDecimal bigDecimalRequired) { + this.bigDecimalRequired = bigDecimalRequired; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#bigDecimalRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param bigDecimalRequiredNullable Required, nullable BigDecimal.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder bigDecimalRequiredNullable(final BigDecimal bigDecimalRequiredNullable) { + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; + return this; + } + /** * Sets the value of {@link RecordWithAllConstraints#bigDecimalMinimum }. * *

NOTE: Pass-by-reference is used! * - * @param bigDecimalMinimum sets the value of bigDecimalMinimum. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0.. * @return this {@link Builder}-instance for method-chaining. */ public Builder bigDecimalMinimum(final BigDecimal bigDecimalMinimum) { @@ -444,7 +879,7 @@ public Builder bigDecimalMinimum(final BigDecimal bigDecimalMinimum) { * *

NOTE: Pass-by-reference is used! * - * @param bigDecimalMaximum sets the value of bigDecimalMaximum. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder bigDecimalMaximum(final BigDecimal bigDecimalMaximum) { @@ -457,7 +892,7 @@ public Builder bigDecimalMaximum(final BigDecimal bigDecimalMaximum) { * *

NOTE: Pass-by-reference is used! * - * @param bigDecimalMinimumAndMaximum sets the value of bigDecimalMinimumAndMaximum. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder bigDecimalMinimumAndMaximum(final BigDecimal bigDecimalMinimumAndMaximum) { @@ -475,6 +910,12 @@ public Builder bigDecimalMinimumAndMaximum(final BigDecimal bigDecimalMinimumAnd */ public RecordWithAllConstraints build() { return new RecordWithAllConstraints( + booleanStandard, + booleanDefault, + booleanNullable, + booleanRequired, + booleanRequiredDefault, + booleanRequiredNullable, stringStandard, stringDefault, stringNullable, @@ -486,15 +927,33 @@ public RecordWithAllConstraints build() { stringMinLength, stringMaxLength, stringMinAndMaxLength, + arrayNullable, + arrayRequiredNullable, arrayMinItems, arrayMaxItems, arrayMinAndMaxItems, + arrayUniqueStandard, + arrayUniqueRequired, + arrayUniqueNullable, + arrayUniqueRequiredNullable, + intStandard, + intNullable, + intRequired, + intRequiredNullable, intMinimum, intMaximum, intMinimumAndMaximum, + longStandard, + longNullable, + longRequired, + longRequiredNullable, longMinimum, longMaximum, longMinimumAndMaximum, + bigDecimalStandard, + bigDecimalNullable, + bigDecimalRequired, + bigDecimalRequiredNullable, bigDecimalMinimum, bigDecimalMaximum, bigDecimalMinimumAndMaximum); diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/RecordWithNullableFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/RecordWithNullableFieldsOfEachType.java index 579bb7d1..e166143d 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/RecordWithNullableFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.github.chrimle.o2jrm.webclient.generateBuilders.ExampleNullableEnum; import io.github.chrimle.o2jrm.webclient.generateBuilders.ExampleNullableRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,41 +37,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { @JsonCreator public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } @@ -85,41 +59,10 @@ public RecordWithNullableFieldsOfEachType( /** Builder class for {@link RecordWithNullableFieldsOfEachType }. */ public static class Builder { - private Boolean field1; - private String field2; private Integer field3; - private BigDecimal field4; - private List field5; - private Set field6; private ExampleNullableRecord field7; private ExampleNullableEnum field8; - /** - * Sets the value of {@link RecordWithNullableFieldsOfEachType#field1 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field1 a Boolean field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field1(final Boolean field1) { - this.field1 = field1; - return this; - } - - /** - * Sets the value of {@link RecordWithNullableFieldsOfEachType#field2 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field2 a String field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field2(final String field2) { - this.field2 = field2; - return this; - } - /** * Sets the value of {@link RecordWithNullableFieldsOfEachType#field3 }. * @@ -133,45 +76,6 @@ public Builder field3(final Integer field3) { return this; } - /** - * Sets the value of {@link RecordWithNullableFieldsOfEachType#field4 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field4 a Number field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field4(final BigDecimal field4) { - this.field4 = field4; - return this; - } - - /** - * Sets the value of {@link RecordWithNullableFieldsOfEachType#field5 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field5 an Array of Boolean field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field5(final List field5) { - this.field5 = field5; - return this; - } - - /** - * Sets the value of {@link RecordWithNullableFieldsOfEachType#field6 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field6 a Set field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field6(final Set field6) { - this.field6 = field6; - return this; - } - /** * Sets the value of {@link RecordWithNullableFieldsOfEachType#field7 }. * @@ -208,12 +112,7 @@ public Builder field8(final ExampleNullableEnum field8) { */ public RecordWithNullableFieldsOfEachType build() { return new RecordWithNullableFieldsOfEachType( - field1, - field2, field3, - field4, - field5, - field6, field7, field8); } diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/RecordWithRequiredFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/RecordWithRequiredFieldsOfEachType.java index e1278efc..97c54b53 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/RecordWithRequiredFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/generateBuilders/RecordWithRequiredFieldsOfEachType.java @@ -25,56 +25,29 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.github.chrimle.o2jrm.webclient.generateBuilders.ExampleEnum; import io.github.chrimle.o2jrm.webclient.generateBuilders.ExampleRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonTypeName; /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { @JsonCreator public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } @@ -82,41 +55,10 @@ public RecordWithRequiredFieldsOfEachType( /** Builder class for {@link RecordWithRequiredFieldsOfEachType }. */ public static class Builder { - private Boolean field1; - private String field2; private Integer field3; - private BigDecimal field4; - private List field5; - private Set field6; private ExampleRecord field7; private ExampleEnum field8; - /** - * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field1 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field1 a Boolean field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field1(final Boolean field1) { - this.field1 = field1; - return this; - } - - /** - * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field2 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field2 a String field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field2(final String field2) { - this.field2 = field2; - return this; - } - /** * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field3 }. * @@ -130,45 +72,6 @@ public Builder field3(final Integer field3) { return this; } - /** - * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field4 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field4 a Number field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field4(final BigDecimal field4) { - this.field4 = field4; - return this; - } - - /** - * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field5 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field5 an Array of Boolean field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field5(final List field5) { - this.field5 = field5; - return this; - } - - /** - * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field6 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field6 a Set field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field6(final Set field6) { - this.field6 = field6; - return this; - } - /** * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field7 }. * @@ -205,12 +108,7 @@ public Builder field8(final ExampleEnum field8) { */ public RecordWithRequiredFieldsOfEachType build() { return new RecordWithRequiredFieldsOfEachType( - field1, - field2, field3, - field4, - field5, - field6, field7, field8); } diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/ExampleRecordWithDefaultFields.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 67502915..00000000 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.webclient.serializableModel; - -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import java.io.Serializable; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) - implements Serializable { - - @JsonCreator - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } -} diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/RecordWithAllConstraints.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/RecordWithAllConstraints.java index 249a66b7..dac5612a 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/RecordWithAllConstraints.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/RecordWithAllConstraints.java @@ -25,10 +25,13 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -41,31 +44,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -77,15 +110,33 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) @@ -93,6 +144,12 @@ public record RecordWithAllConstraints( @JsonCreator public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -104,18 +161,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -127,15 +208,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/RecordWithNullableFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/RecordWithNullableFieldsOfEachType.java index aeab5d10..13e25597 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/RecordWithNullableFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.github.chrimle.o2jrm.webclient.serializableModel.ExampleNullableEnum; import io.github.chrimle.o2jrm.webclient.serializableModel.ExampleNullableRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; import org.openapitools.jackson.nullable.JsonNullable; @@ -44,42 +38,22 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) implements Serializable { @JsonCreator public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/RecordWithRequiredFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/RecordWithRequiredFieldsOfEachType.java index 9f1b724f..6cfe0904 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/RecordWithRequiredFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/serializableModel/RecordWithRequiredFieldsOfEachType.java @@ -25,15 +25,8 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.github.chrimle.o2jrm.webclient.serializableModel.ExampleEnum; import io.github.chrimle.o2jrm.webclient.serializableModel.ExampleRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import java.io.Serializable; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonTypeName; @@ -41,42 +34,22 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) implements Serializable { @JsonCreator public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/ExampleRecordWithDefaultFields.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 2cfb3e2a..00000000 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.webclient.standard; - -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - @JsonCreator - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } -} diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/RecordWithAllConstraints.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/RecordWithAllConstraints.java index 6968efb1..6f1bf5c4 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/RecordWithAllConstraints.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/RecordWithAllConstraints.java @@ -25,10 +25,13 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -40,31 +43,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -76,21 +109,45 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @JsonCreator public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -102,18 +159,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -125,15 +206,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/RecordWithNullableFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/RecordWithNullableFieldsOfEachType.java index c0c151cb..f6e0bb69 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/RecordWithNullableFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.github.chrimle.o2jrm.webclient.standard.ExampleNullableEnum; import io.github.chrimle.o2jrm.webclient.standard.ExampleNullableRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,41 +37,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { @JsonCreator public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/RecordWithRequiredFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/RecordWithRequiredFieldsOfEachType.java index 502c93da..cbb69fc7 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/RecordWithRequiredFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/RecordWithRequiredFieldsOfEachType.java @@ -25,56 +25,29 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.github.chrimle.o2jrm.webclient.standard.ExampleEnum; import io.github.chrimle.o2jrm.webclient.standard.ExampleRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonTypeName; /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { @JsonCreator public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/ExampleRecordWithDefaultFields.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/ExampleRecordWithDefaultFields.java deleted file mode 100644 index ed621491..00000000 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.webclient.useBeanValidation; - -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; -import javax.validation.constraints.*; -import javax.validation.Valid; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - @JsonCreator - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } -} diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/RecordWithAllConstraints.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/RecordWithAllConstraints.java index 32dc7b19..59ad479d 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/RecordWithAllConstraints.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/RecordWithAllConstraints.java @@ -25,10 +25,13 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -42,31 +45,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + @NotNull Boolean booleanRequired, + @NotNull Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -78,21 +111,45 @@ public record RecordWithAllConstraints( @Size(min = 3) String stringMinLength, @Size(max = 7) String stringMaxLength, @Size(min = 3, max = 7) String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, @Size(min = 1) List arrayMinItems, @Size(max = 10) List arrayMaxItems, @Size(min = 1, max = 10) List arrayMinAndMaxItems, + Set arrayUniqueStandard, + @NotNull Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + @NotNull Integer intRequired, + Integer intRequiredNullable, @Min(18) Integer intMinimum, @Max(100) Integer intMaximum, @Min(0) @Max(100) Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + @NotNull Long longRequired, + Long longRequiredNullable, @Min(18L) Long longMinimum, @Max(100L) Long longMaximum, @Min(0L) @Max(100L) Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + @NotNull BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, @DecimalMin("0") BigDecimal bigDecimalMinimum, @DecimalMax("100") BigDecimal bigDecimalMaximum, @DecimalMin("0") @DecimalMax("100") BigDecimal bigDecimalMinimumAndMaximum) { @JsonCreator public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -104,18 +161,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -127,15 +208,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/RecordWithNullableFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/RecordWithNullableFieldsOfEachType.java index 75279a80..c9234c3c 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/RecordWithNullableFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.github.chrimle.o2jrm.webclient.useBeanValidation.ExampleNullableEnum; import io.github.chrimle.o2jrm.webclient.useBeanValidation.ExampleNullableRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; import org.openapitools.jackson.nullable.JsonNullable; @@ -45,41 +39,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, @Valid ExampleNullableRecord field7, ExampleNullableEnum field8) { @JsonCreator public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/RecordWithRequiredFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/RecordWithRequiredFieldsOfEachType.java index 73fd2e5b..7e1f3f28 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/RecordWithRequiredFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useBeanValidation/RecordWithRequiredFieldsOfEachType.java @@ -25,15 +25,8 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.github.chrimle.o2jrm.webclient.useBeanValidation.ExampleEnum; import io.github.chrimle.o2jrm.webclient.useBeanValidation.ExampleRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonTypeName; import javax.validation.constraints.*; @@ -42,41 +35,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - @NotNull Boolean field1, - @NotNull String field2, @NotNull Integer field3, - @NotNull BigDecimal field4, - @NotNull List field5, - @NotNull Set field6, @Valid @NotNull ExampleRecord field7, @NotNull ExampleEnum field8) { @JsonCreator public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/ExampleRecordWithDefaultFields.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 3ec2d6e7..00000000 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Example OpenAPI Spec. - * An example OpenAPI-spec to generate example Java records. - * - * The version of the OpenAPI document: 0.0.1 - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - * - * This class was generated using custom mustache templates from - * openapi-to-java-records-mustache-templates. For further information, - * questions, requesting features or reporting issues, please visit: - * https://github.com/Chrimle/openapi-to-java-records-mustache-templates. - * Generated with Version: 3.11.0 - * - */ - -package io.github.chrimle.o2jrm.webclient.useEnumCaseInsensitive; - -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - @JsonCreator - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } -} diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/RecordWithAllConstraints.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/RecordWithAllConstraints.java index 6d59544b..5149b3dc 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/RecordWithAllConstraints.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/RecordWithAllConstraints.java @@ -25,10 +25,13 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -40,31 +43,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + Boolean booleanRequired, + Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -76,21 +109,45 @@ public record RecordWithAllConstraints( String stringMinLength, String stringMaxLength, String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, List arrayMinItems, List arrayMaxItems, List arrayMinAndMaxItems, + Set arrayUniqueStandard, + Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + Integer intRequired, + Integer intRequiredNullable, Integer intMinimum, Integer intMaximum, Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + Long longRequired, + Long longRequiredNullable, Long longMinimum, Long longMaximum, Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, BigDecimal bigDecimalMinimum, BigDecimal bigDecimalMaximum, BigDecimal bigDecimalMinimumAndMaximum) { @JsonCreator public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -102,18 +159,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -125,15 +206,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/RecordWithNullableFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/RecordWithNullableFieldsOfEachType.java index 074d7399..f803d97e 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/RecordWithNullableFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/RecordWithNullableFieldsOfEachType.java @@ -27,12 +27,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.github.chrimle.o2jrm.webclient.useEnumCaseInsensitive.ExampleNullableEnum; import io.github.chrimle.o2jrm.webclient.useEnumCaseInsensitive.ExampleNullableRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import com.fasterxml.jackson.annotation.JsonIgnore; import org.openapitools.jackson.nullable.JsonNullable; @@ -43,41 +37,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleNullableRecord field7, ExampleNullableEnum field8) { @JsonCreator public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } diff --git a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/RecordWithRequiredFieldsOfEachType.java b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/RecordWithRequiredFieldsOfEachType.java index 98b4e8bb..054f713c 100644 --- a/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/RecordWithRequiredFieldsOfEachType.java +++ b/test/java/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/webclient/useEnumCaseInsensitive/RecordWithRequiredFieldsOfEachType.java @@ -25,56 +25,29 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.github.chrimle.o2jrm.webclient.useEnumCaseInsensitive.ExampleEnum; import io.github.chrimle.o2jrm.webclient.useEnumCaseInsensitive.ExampleRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonTypeName; /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, ExampleRecord field7, ExampleEnum field8) { @JsonCreator public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } diff --git a/test/spring/src/test/java/io/github/chrimle/o2jrm/models/GeneratedRecordImpl.java b/test/spring/src/test/java/io/github/chrimle/o2jrm/models/GeneratedRecordImpl.java index 40d74e7a..2981a353 100644 --- a/test/spring/src/test/java/io/github/chrimle/o2jrm/models/GeneratedRecordImpl.java +++ b/test/spring/src/test/java/io/github/chrimle/o2jrm/models/GeneratedRecordImpl.java @@ -52,12 +52,6 @@ public enum GeneratedRecordImpl implements GeneratedRecord { List.of(), List.of(), GeneratedField.of("field1", Boolean.class).build()), - EXAMPLE_RECORD_WITH_DEFAULT_FIELDS( - "ExampleRecordWithDefaultFields", - false, - List.of(), - List.of(), - GeneratedField.of("field1", String.class).defaultValue("someDefaultValue").build()), EXAMPLE_RECORD_WITH_EXTRA_FIELD_ANNOTATIONS( "ExampleRecordWithExtraFieldAnnotations", false, @@ -124,6 +118,15 @@ public enum GeneratedRecordImpl implements GeneratedRecord { false, List.of(), List.of(), + GeneratedField.of("booleanStandard", Boolean.class).build(), + GeneratedField.of("booleanDefault", Boolean.class).defaultValue(Boolean.TRUE).build(), + GeneratedField.of("booleanNullable", Boolean.class).isNullable().build(), + GeneratedField.of("booleanRequired", Boolean.class).isRequired().build(), + GeneratedField.of("booleanRequiredDefault", Boolean.class) + .isRequired() + .defaultValue(Boolean.TRUE) + .build(), + GeneratedField.of("booleanRequiredNullable", Boolean.class).isRequired().isNullable().build(), GeneratedField.of("stringStandard", String.class).build(), GeneratedField.of("stringDefault", String.class).defaultValue("someDefaultValue").build(), GeneratedField.of("stringNullable", String.class).isNullable().build(), @@ -138,18 +141,45 @@ public enum GeneratedRecordImpl implements GeneratedRecord { GeneratedField.of("stringMinLength", String.class).minLength(3).build(), GeneratedField.of("stringMaxLength", String.class).maxLength(7).build(), GeneratedField.of("stringMinAndMaxLength", String.class).minLength(3).maxLength(7).build(), + GeneratedField.of("arrayNullable", List.class, String.class).isNullable().build(), + GeneratedField.of("arrayRequiredNullable", List.class, String.class) + .isRequired() + .isNullable() + .build(), GeneratedField.of("arrayMinItems", List.class, String.class).minItems(1).build(), GeneratedField.of("arrayMaxItems", List.class, String.class).maxItems(10).build(), GeneratedField.of("arrayMinAndMaxItems", List.class, String.class) .minItems(1) .maxItems(10) .build(), + GeneratedField.of("arrayUniqueStandard", Set.class, String.class).build(), + GeneratedField.of("arrayUniqueRequired", Set.class, String.class).isRequired().build(), + GeneratedField.of("arrayUniqueNullable", Set.class, String.class).isNullable().build(), + GeneratedField.of("arrayUniqueRequiredNullable", Set.class, String.class) + .isRequired() + .isNullable() + .build(), + GeneratedField.of("intStandard", Integer.class).build(), + GeneratedField.of("intNullable", Integer.class).isNullable().build(), + GeneratedField.of("intRequired", Integer.class).isRequired().build(), + GeneratedField.of("intRequiredNullable", Integer.class).isRequired().isNullable().build(), GeneratedField.of("intMinimum", Integer.class).minimum(18).build(), GeneratedField.of("intMaximum", Integer.class).maximum(100).build(), GeneratedField.of("intMinimumAndMaximum", Integer.class).minimum(0).maximum(100).build(), + GeneratedField.of("longStandard", Long.class).build(), + GeneratedField.of("longNullable", Long.class).isNullable().build(), + GeneratedField.of("longRequired", Long.class).isRequired().build(), + GeneratedField.of("longRequiredNullable", Long.class).isRequired().isNullable().build(), GeneratedField.of("longMinimum", Long.class).minimum(18).build(), GeneratedField.of("longMaximum", Long.class).maximum(100).build(), GeneratedField.of("longMinimumAndMaximum", Long.class).minimum(0).maximum(100).build(), + GeneratedField.of("bigDecimalStandard", BigDecimal.class).build(), + GeneratedField.of("bigDecimalNullable", BigDecimal.class).isNullable().build(), + GeneratedField.of("bigDecimalRequired", BigDecimal.class).isRequired().build(), + GeneratedField.of("bigDecimalRequiredNullable", BigDecimal.class) + .isRequired() + .isNullable() + .build(), GeneratedField.of("bigDecimalMinimum", BigDecimal.class).decimalMin("0").build(), GeneratedField.of("bigDecimalMaximum", BigDecimal.class).decimalMax("100").build(), GeneratedField.of("bigDecimalMinimumAndMaximum", BigDecimal.class) @@ -285,12 +315,7 @@ public GeneratedField[] getGeneratedFields( .toArray(new GeneratedField[] {}); case RECORD_WITH_REQUIRED_FIELDS_OF_EACH_TYPE -> List.of( - GeneratedField.of("field1", Boolean.class).isRequired().build(), - GeneratedField.of("field2", String.class).isRequired().build(), GeneratedField.of("field3", Integer.class).isRequired().build(), - GeneratedField.of("field4", BigDecimal.class).isRequired().build(), - GeneratedField.of("field5", List.class, Boolean.class).isRequired().build(), - GeneratedField.of("field6", Set.class, Boolean.class).isRequired().build(), GeneratedField.of( "field7", GeneratedRecordImpl.EXAMPLE_RECORD.getClass(pluginExecution)) .isRequired() @@ -303,18 +328,7 @@ public GeneratedField[] getGeneratedFields( .toArray(new GeneratedField[] {}); case RECORD_WITH_NULLABLE_FIELDS_OF_EACH_TYPE -> List.of( - GeneratedField.of("field1", Boolean.class).isNullable().isRequired().build(), - GeneratedField.of("field2", String.class).isNullable().isRequired().build(), GeneratedField.of("field3", Integer.class).isNullable().isRequired().build(), - GeneratedField.of("field4", BigDecimal.class).isNullable().isRequired().build(), - GeneratedField.of("field5", List.class, Boolean.class) - .isNullable() - .isRequired() - .build(), - GeneratedField.of("field6", Set.class, Boolean.class) - .isNullable() - .isRequired() - .build(), GeneratedField.of( "field7", GeneratedRecordImpl.EXAMPLE_NULLABLE_RECORD.getClass(pluginExecution)) diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/ExampleRecordWithDefaultFields.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 677abefa..00000000 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,30 +0,0 @@ -package io.github.chrimle.o2jrm.additionalEnumTypeAnnotations; - -import java.net.URI; -import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import org.springframework.lang.Nullable; -import org.openapitools.jackson.nullable.JsonNullable; -import java.time.OffsetDateTime; -import jakarta.validation.Valid; -import jakarta.validation.constraints.*; -import io.swagger.v3.oas.annotations.media.Schema; - - -import java.util.*; -import jakarta.annotation.Generated; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - @JsonCreator - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } -} diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithAllConstraints.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithAllConstraints.java index 68a1a61a..1d51591a 100644 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithAllConstraints.java +++ b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithAllConstraints.java @@ -5,10 +5,13 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import org.springframework.lang.Nullable; @@ -26,31 +29,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + @NotNull Boolean booleanRequired, + @NotNull Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -62,21 +95,45 @@ public record RecordWithAllConstraints( @Size(min = 3) String stringMinLength, @Size(max = 7) String stringMaxLength, @Size(min = 3, max = 7) String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, @Size(min = 1) List arrayMinItems, @Size(max = 10) List arrayMaxItems, @Size(min = 1, max = 10) List arrayMinAndMaxItems, + Set arrayUniqueStandard, + @NotNull Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + @NotNull Integer intRequired, + Integer intRequiredNullable, @Min(18) Integer intMinimum, @Max(100) Integer intMaximum, @Min(0) @Max(100) Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + @NotNull Long longRequired, + Long longRequiredNullable, @Min(18L) Long longMinimum, @Max(100L) Long longMaximum, @Min(0L) @Max(100L) Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + @NotNull BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, @DecimalMin("0") BigDecimal bigDecimalMinimum, @DecimalMax("100") BigDecimal bigDecimalMaximum, @DecimalMin("0") @DecimalMax("100") BigDecimal bigDecimalMinimumAndMaximum) { @JsonCreator public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -88,18 +145,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -111,15 +192,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithNullableFieldsOfEachType.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithNullableFieldsOfEachType.java index e5f4c687..20315528 100644 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithNullableFieldsOfEachType.java +++ b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithNullableFieldsOfEachType.java @@ -8,12 +8,7 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.github.chrimle.o2jrm.additionalEnumTypeAnnotations.ExampleNullableEnum; import io.github.chrimle.o2jrm.additionalEnumTypeAnnotations.ExampleNullableRecord; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import org.springframework.lang.Nullable; import java.util.NoSuchElementException; @@ -30,41 +25,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, @Valid ExampleNullableRecord field7, ExampleNullableEnum field8) { @JsonCreator public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithRequiredFieldsOfEachType.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithRequiredFieldsOfEachType.java index c02625ee..abfbde46 100644 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithRequiredFieldsOfEachType.java +++ b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalEnumTypeAnnotations/RecordWithRequiredFieldsOfEachType.java @@ -5,15 +5,8 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.github.chrimle.o2jrm.additionalEnumTypeAnnotations.ExampleEnum; import io.github.chrimle.o2jrm.additionalEnumTypeAnnotations.ExampleRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.springframework.lang.Nullable; import org.openapitools.jackson.nullable.JsonNullable; import java.time.OffsetDateTime; @@ -28,41 +21,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - @NotNull Boolean field1, - @NotNull String field2, @NotNull Integer field3, - @NotNull BigDecimal field4, - @NotNull List field5, - @NotNull Set field6, @Valid @NotNull ExampleRecord field7, @NotNull ExampleEnum field8) { @JsonCreator public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/ExampleRecordWithDefaultFields.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 19a6860b..00000000 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,33 +0,0 @@ -package io.github.chrimle.o2jrm.additionalModelTypeAnnotations; - -import java.net.URI; -import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import org.springframework.lang.Nullable; -import org.openapitools.jackson.nullable.JsonNullable; -import java.time.OffsetDateTime; -import jakarta.validation.Valid; -import jakarta.validation.constraints.*; -import io.swagger.v3.oas.annotations.media.Schema; - - -import java.util.*; -import jakarta.annotation.Generated; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -@io.github.chrimle.o2jrm.test.annotations.TestAnnotationOne -@io.github.chrimle.o2jrm.test.annotations.TestAnnotationTwo -@io.github.chrimle.o2jrm.test.annotations.TestAnnotationThree -public record ExampleRecordWithDefaultFields(String field1) { - - @JsonCreator - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } -} diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithAllConstraints.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithAllConstraints.java index 7f290c77..fe932afd 100644 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithAllConstraints.java +++ b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithAllConstraints.java @@ -5,10 +5,13 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import org.springframework.lang.Nullable; @@ -26,34 +29,64 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ @io.github.chrimle.o2jrm.test.annotations.TestAnnotationOne @io.github.chrimle.o2jrm.test.annotations.TestAnnotationTwo @io.github.chrimle.o2jrm.test.annotations.TestAnnotationThree public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + @NotNull Boolean booleanRequired, + @NotNull Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -65,21 +98,45 @@ public record RecordWithAllConstraints( @Size(min = 3) String stringMinLength, @Size(max = 7) String stringMaxLength, @Size(min = 3, max = 7) String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, @Size(min = 1) List arrayMinItems, @Size(max = 10) List arrayMaxItems, @Size(min = 1, max = 10) List arrayMinAndMaxItems, + Set arrayUniqueStandard, + @NotNull Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + @NotNull Integer intRequired, + Integer intRequiredNullable, @Min(18) Integer intMinimum, @Max(100) Integer intMaximum, @Min(0) @Max(100) Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + @NotNull Long longRequired, + Long longRequiredNullable, @Min(18L) Long longMinimum, @Max(100L) Long longMaximum, @Min(0L) @Max(100L) Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + @NotNull BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, @DecimalMin("0") BigDecimal bigDecimalMinimum, @DecimalMax("100") BigDecimal bigDecimalMaximum, @DecimalMin("0") @DecimalMax("100") BigDecimal bigDecimalMinimumAndMaximum) { @JsonCreator public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -91,18 +148,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -114,15 +195,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithNullableFieldsOfEachType.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithNullableFieldsOfEachType.java index 6960a28d..4da1cef9 100644 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithNullableFieldsOfEachType.java +++ b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithNullableFieldsOfEachType.java @@ -8,12 +8,7 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.github.chrimle.o2jrm.additionalModelTypeAnnotations.ExampleNullableEnum; import io.github.chrimle.o2jrm.additionalModelTypeAnnotations.ExampleNullableRecord; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import org.springframework.lang.Nullable; import java.util.NoSuchElementException; @@ -30,12 +25,7 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ @@ -43,31 +33,16 @@ @io.github.chrimle.o2jrm.test.annotations.TestAnnotationTwo @io.github.chrimle.o2jrm.test.annotations.TestAnnotationThree public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, @Valid ExampleNullableRecord field7, ExampleNullableEnum field8) { @JsonCreator public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithRequiredFieldsOfEachType.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithRequiredFieldsOfEachType.java index 16e09c1d..166c3481 100644 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithRequiredFieldsOfEachType.java +++ b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/additionalModelTypeAnnotations/RecordWithRequiredFieldsOfEachType.java @@ -5,15 +5,8 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.github.chrimle.o2jrm.additionalModelTypeAnnotations.ExampleEnum; import io.github.chrimle.o2jrm.additionalModelTypeAnnotations.ExampleRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.springframework.lang.Nullable; import org.openapitools.jackson.nullable.JsonNullable; import java.time.OffsetDateTime; @@ -28,12 +21,7 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ @@ -41,31 +29,16 @@ @io.github.chrimle.o2jrm.test.annotations.TestAnnotationTwo @io.github.chrimle.o2jrm.test.annotations.TestAnnotationThree public record RecordWithRequiredFieldsOfEachType( - @NotNull Boolean field1, - @NotNull String field2, @NotNull Integer field3, - @NotNull BigDecimal field4, - @NotNull List field5, - @NotNull Set field6, @Valid @NotNull ExampleRecord field7, @NotNull ExampleEnum field8) { @JsonCreator public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/ExampleRecordWithDefaultFields.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/ExampleRecordWithDefaultFields.java deleted file mode 100644 index e673e2a7..00000000 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,30 +0,0 @@ -package io.github.chrimle.o2jrm.enumDefaultCaseAndCaseInsensitive; - -import java.net.URI; -import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import org.springframework.lang.Nullable; -import org.openapitools.jackson.nullable.JsonNullable; -import java.time.OffsetDateTime; -import jakarta.validation.Valid; -import jakarta.validation.constraints.*; -import io.swagger.v3.oas.annotations.media.Schema; - - -import java.util.*; -import jakarta.annotation.Generated; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - @JsonCreator - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } -} diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithAllConstraints.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithAllConstraints.java index 97020816..2ae5a1b0 100644 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithAllConstraints.java +++ b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithAllConstraints.java @@ -5,10 +5,13 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import org.springframework.lang.Nullable; @@ -26,31 +29,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + @NotNull Boolean booleanRequired, + @NotNull Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -62,21 +95,45 @@ public record RecordWithAllConstraints( @Size(min = 3) String stringMinLength, @Size(max = 7) String stringMaxLength, @Size(min = 3, max = 7) String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, @Size(min = 1) List arrayMinItems, @Size(max = 10) List arrayMaxItems, @Size(min = 1, max = 10) List arrayMinAndMaxItems, + Set arrayUniqueStandard, + @NotNull Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + @NotNull Integer intRequired, + Integer intRequiredNullable, @Min(18) Integer intMinimum, @Max(100) Integer intMaximum, @Min(0) @Max(100) Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + @NotNull Long longRequired, + Long longRequiredNullable, @Min(18L) Long longMinimum, @Max(100L) Long longMaximum, @Min(0L) @Max(100L) Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + @NotNull BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, @DecimalMin("0") BigDecimal bigDecimalMinimum, @DecimalMax("100") BigDecimal bigDecimalMaximum, @DecimalMin("0") @DecimalMax("100") BigDecimal bigDecimalMinimumAndMaximum) { @JsonCreator public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -88,18 +145,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -111,15 +192,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithNullableFieldsOfEachType.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithNullableFieldsOfEachType.java index 2e8f9bd4..32749199 100644 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithNullableFieldsOfEachType.java +++ b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithNullableFieldsOfEachType.java @@ -8,12 +8,7 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.github.chrimle.o2jrm.enumDefaultCaseAndCaseInsensitive.ExampleNullableEnum; import io.github.chrimle.o2jrm.enumDefaultCaseAndCaseInsensitive.ExampleNullableRecord; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import org.springframework.lang.Nullable; import java.util.NoSuchElementException; @@ -30,41 +25,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, @Valid ExampleNullableRecord field7, ExampleNullableEnum field8) { @JsonCreator public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithRequiredFieldsOfEachType.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithRequiredFieldsOfEachType.java index 8745385b..436f5652 100644 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithRequiredFieldsOfEachType.java +++ b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumDefaultCaseAndCaseInsensitive/RecordWithRequiredFieldsOfEachType.java @@ -5,15 +5,8 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.github.chrimle.o2jrm.enumDefaultCaseAndCaseInsensitive.ExampleEnum; import io.github.chrimle.o2jrm.enumDefaultCaseAndCaseInsensitive.ExampleRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.springframework.lang.Nullable; import org.openapitools.jackson.nullable.JsonNullable; import java.time.OffsetDateTime; @@ -28,41 +21,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - @NotNull Boolean field1, - @NotNull String field2, @NotNull Integer field3, - @NotNull BigDecimal field4, - @NotNull List field5, - @NotNull Set field6, @Valid @NotNull ExampleRecord field7, @NotNull ExampleEnum field8) { @JsonCreator public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/ExampleRecordWithDefaultFields.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/ExampleRecordWithDefaultFields.java deleted file mode 100644 index f5517052..00000000 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,30 +0,0 @@ -package io.github.chrimle.o2jrm.enumUnknownDefaultCase; - -import java.net.URI; -import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import org.springframework.lang.Nullable; -import org.openapitools.jackson.nullable.JsonNullable; -import java.time.OffsetDateTime; -import jakarta.validation.Valid; -import jakarta.validation.constraints.*; -import io.swagger.v3.oas.annotations.media.Schema; - - -import java.util.*; -import jakarta.annotation.Generated; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - @JsonCreator - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } -} diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithAllConstraints.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithAllConstraints.java index eca2cc3e..41ca1f40 100644 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithAllConstraints.java +++ b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithAllConstraints.java @@ -5,10 +5,13 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import org.springframework.lang.Nullable; @@ -26,31 +29,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + @NotNull Boolean booleanRequired, + @NotNull Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -62,21 +95,45 @@ public record RecordWithAllConstraints( @Size(min = 3) String stringMinLength, @Size(max = 7) String stringMaxLength, @Size(min = 3, max = 7) String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, @Size(min = 1) List arrayMinItems, @Size(max = 10) List arrayMaxItems, @Size(min = 1, max = 10) List arrayMinAndMaxItems, + Set arrayUniqueStandard, + @NotNull Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + @NotNull Integer intRequired, + Integer intRequiredNullable, @Min(18) Integer intMinimum, @Max(100) Integer intMaximum, @Min(0) @Max(100) Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + @NotNull Long longRequired, + Long longRequiredNullable, @Min(18L) Long longMinimum, @Max(100L) Long longMaximum, @Min(0L) @Max(100L) Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + @NotNull BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, @DecimalMin("0") BigDecimal bigDecimalMinimum, @DecimalMax("100") BigDecimal bigDecimalMaximum, @DecimalMin("0") @DecimalMax("100") BigDecimal bigDecimalMinimumAndMaximum) { @JsonCreator public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -88,18 +145,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -111,15 +192,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithNullableFieldsOfEachType.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithNullableFieldsOfEachType.java index f27630b5..42b65c7f 100644 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithNullableFieldsOfEachType.java +++ b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithNullableFieldsOfEachType.java @@ -8,12 +8,7 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.github.chrimle.o2jrm.enumUnknownDefaultCase.ExampleNullableEnum; import io.github.chrimle.o2jrm.enumUnknownDefaultCase.ExampleNullableRecord; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import org.springframework.lang.Nullable; import java.util.NoSuchElementException; @@ -30,41 +25,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, @Valid ExampleNullableRecord field7, ExampleNullableEnum field8) { @JsonCreator public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithRequiredFieldsOfEachType.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithRequiredFieldsOfEachType.java index 4372f0dc..efcf60b1 100644 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithRequiredFieldsOfEachType.java +++ b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/enumUnknownDefaultCase/RecordWithRequiredFieldsOfEachType.java @@ -5,15 +5,8 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.github.chrimle.o2jrm.enumUnknownDefaultCase.ExampleEnum; import io.github.chrimle.o2jrm.enumUnknownDefaultCase.ExampleRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.springframework.lang.Nullable; import org.openapitools.jackson.nullable.JsonNullable; import java.time.OffsetDateTime; @@ -28,41 +21,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - @NotNull Boolean field1, - @NotNull String field2, @NotNull Integer field3, - @NotNull BigDecimal field4, - @NotNull List field5, - @NotNull Set field6, @Valid @NotNull ExampleRecord field7, @NotNull ExampleEnum field8) { @JsonCreator public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/ExampleRecordWithDefaultFields.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/ExampleRecordWithDefaultFields.java deleted file mode 100644 index d8ed44c0..00000000 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,67 +0,0 @@ -package io.github.chrimle.o2jrm.generateBuilders; - -import java.net.URI; -import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import org.springframework.lang.Nullable; -import org.openapitools.jackson.nullable.JsonNullable; -import java.time.OffsetDateTime; -import jakarta.validation.Valid; -import jakarta.validation.constraints.*; -import io.swagger.v3.oas.annotations.media.Schema; - - -import java.util.*; -import jakarta.annotation.Generated; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - @JsonCreator - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } - - /** Builder class for {@link ExampleRecordWithDefaultFields }. */ - public static class Builder { - - private String field1; - - /** - * Sets the value of {@link ExampleRecordWithDefaultFields#field1 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field1 a String field with a default value. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field1(final String field1) { - this.field1 = field1; - return this; - } - - /** - * Builds a {@link ExampleRecordWithDefaultFields }-instance with the values provided in preceding - * builder methods. - * - *

NOTE: Pass-by-reference is used! - * - * @return a new {@link ExampleRecordWithDefaultFields }-instance. - */ - public ExampleRecordWithDefaultFields build() { - return new ExampleRecordWithDefaultFields( - field1); - } - } - - /** Creates a new {@link Builder}-instance. */ - public static ExampleRecordWithDefaultFields.Builder builder() { - return new ExampleRecordWithDefaultFields.Builder(); - } -} diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithAllConstraints.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithAllConstraints.java index ce0bc65d..464dd29b 100644 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithAllConstraints.java +++ b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithAllConstraints.java @@ -5,10 +5,13 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import org.springframework.lang.Nullable; @@ -26,31 +29,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + @NotNull Boolean booleanRequired, + @NotNull Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -62,21 +95,45 @@ public record RecordWithAllConstraints( @Size(min = 3) String stringMinLength, @Size(max = 7) String stringMaxLength, @Size(min = 3, max = 7) String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, @Size(min = 1) List arrayMinItems, @Size(max = 10) List arrayMaxItems, @Size(min = 1, max = 10) List arrayMinAndMaxItems, + Set arrayUniqueStandard, + @NotNull Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + @NotNull Integer intRequired, + Integer intRequiredNullable, @Min(18) Integer intMinimum, @Max(100) Integer intMaximum, @Min(0) @Max(100) Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + @NotNull Long longRequired, + Long longRequiredNullable, @Min(18L) Long longMinimum, @Max(100L) Long longMaximum, @Min(0L) @Max(100L) Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + @NotNull BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, @DecimalMin("0") BigDecimal bigDecimalMinimum, @DecimalMax("100") BigDecimal bigDecimalMaximum, @DecimalMin("0") @DecimalMax("100") BigDecimal bigDecimalMinimumAndMaximum) { @JsonCreator public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -88,18 +145,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -111,15 +192,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; @@ -128,6 +227,12 @@ public RecordWithAllConstraints( /** Builder class for {@link RecordWithAllConstraints }. */ public static class Builder { + private Boolean booleanStandard; + private Boolean booleanDefault; + private Boolean booleanNullable; + private Boolean booleanRequired; + private Boolean booleanRequiredDefault; + private Boolean booleanRequiredNullable; private String stringStandard; private String stringDefault; private String stringNullable; @@ -139,25 +244,121 @@ public static class Builder { private String stringMinLength; private String stringMaxLength; private String stringMinAndMaxLength; + private List arrayNullable; + private List arrayRequiredNullable; private List arrayMinItems; private List arrayMaxItems; private List arrayMinAndMaxItems; + private Set arrayUniqueStandard; + private Set arrayUniqueRequired; + private Set arrayUniqueNullable; + private Set arrayUniqueRequiredNullable; + private Integer intStandard; + private Integer intNullable; + private Integer intRequired; + private Integer intRequiredNullable; private Integer intMinimum; private Integer intMaximum; private Integer intMinimumAndMaximum; + private Long longStandard; + private Long longNullable; + private Long longRequired; + private Long longRequiredNullable; private Long longMinimum; private Long longMaximum; private Long longMinimumAndMaximum; + private BigDecimal bigDecimalStandard; + private BigDecimal bigDecimalNullable; + private BigDecimal bigDecimalRequired; + private BigDecimal bigDecimalRequiredNullable; private BigDecimal bigDecimalMinimum; private BigDecimal bigDecimalMaximum; private BigDecimal bigDecimalMinimumAndMaximum; + /** + * Sets the value of {@link RecordWithAllConstraints#booleanStandard }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanStandard Non-required, non-nullable Boolean field.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanStandard(final Boolean booleanStandard) { + this.booleanStandard = booleanStandard; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#booleanDefault }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanDefault Non-required, non-nullable Boolean with a default value.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanDefault(final Boolean booleanDefault) { + this.booleanDefault = booleanDefault; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#booleanNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanNullable Non-required, nullable Boolean field.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanNullable(final Boolean booleanNullable) { + this.booleanNullable = booleanNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#booleanRequired }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanRequired Required, non-nullable Boolean field.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanRequired(final Boolean booleanRequired) { + this.booleanRequired = booleanRequired; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#booleanRequiredDefault }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanRequiredDefault(final Boolean booleanRequiredDefault) { + this.booleanRequiredDefault = booleanRequiredDefault; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#booleanRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param booleanRequiredNullable Required, nullable Boolean field.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder booleanRequiredNullable(final Boolean booleanRequiredNullable) { + this.booleanRequiredNullable = booleanRequiredNullable; + return this; + } + /** * Sets the value of {@link RecordWithAllConstraints#stringStandard }. * *

NOTE: Pass-by-reference is used! * - * @param stringStandard sets the value of stringStandard. + * @param stringStandard Non-required, non-nullable String field.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringStandard(final String stringStandard) { @@ -170,7 +371,7 @@ public Builder stringStandard(final String stringStandard) { * *

NOTE: Pass-by-reference is used! * - * @param stringDefault sets the value of stringDefault. + * @param stringDefault Non-required, non-nullable String field with a default value.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringDefault(final String stringDefault) { @@ -183,7 +384,7 @@ public Builder stringDefault(final String stringDefault) { * *

NOTE: Pass-by-reference is used! * - * @param stringNullable sets the value of stringNullable. + * @param stringNullable Non-required, nullable String field.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringNullable(final String stringNullable) { @@ -196,7 +397,7 @@ public Builder stringNullable(final String stringNullable) { * *

NOTE: Pass-by-reference is used! * - * @param stringRequired sets the value of stringRequired. + * @param stringRequired Required, non-nullable String field.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringRequired(final String stringRequired) { @@ -209,7 +410,7 @@ public Builder stringRequired(final String stringRequired) { * *

NOTE: Pass-by-reference is used! * - * @param stringRequiredNullable sets the value of stringRequiredNullable. + * @param stringRequiredNullable Required, nullable String field.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringRequiredNullable(final String stringRequiredNullable) { @@ -222,7 +423,7 @@ public Builder stringRequiredNullable(final String stringRequiredNullable) { * *

NOTE: Pass-by-reference is used! * - * @param stringRequiredPattern sets the value of stringRequiredPattern. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringRequiredPattern(final String stringRequiredPattern) { @@ -235,7 +436,7 @@ public Builder stringRequiredPattern(final String stringRequiredPattern) { * *

NOTE: Pass-by-reference is used! * - * @param stringEmailFormat sets the value of stringEmailFormat. + * @param stringEmailFormat Non-required, non-nullable String field with Email format.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringEmailFormat(final String stringEmailFormat) { @@ -248,7 +449,7 @@ public Builder stringEmailFormat(final String stringEmailFormat) { * *

NOTE: Pass-by-reference is used! * - * @param stringUuidFormat sets the value of stringUuidFormat. + * @param stringUuidFormat Non-required, non-nullable UUID field.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringUuidFormat(final UUID stringUuidFormat) { @@ -261,7 +462,7 @@ public Builder stringUuidFormat(final UUID stringUuidFormat) { * *

NOTE: Pass-by-reference is used! * - * @param stringMinLength sets the value of stringMinLength. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringMinLength(final String stringMinLength) { @@ -274,7 +475,7 @@ public Builder stringMinLength(final String stringMinLength) { * *

NOTE: Pass-by-reference is used! * - * @param stringMaxLength sets the value of stringMaxLength. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringMaxLength(final String stringMaxLength) { @@ -287,7 +488,7 @@ public Builder stringMaxLength(final String stringMaxLength) { * *

NOTE: Pass-by-reference is used! * - * @param stringMinAndMaxLength sets the value of stringMinAndMaxLength. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7.. * @return this {@link Builder}-instance for method-chaining. */ public Builder stringMinAndMaxLength(final String stringMinAndMaxLength) { @@ -295,12 +496,38 @@ public Builder stringMinAndMaxLength(final String stringMinAndMaxLength) { return this; } + /** + * Sets the value of {@link RecordWithAllConstraints#arrayNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayNullable Non-required, nullable List.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayNullable(final List arrayNullable) { + this.arrayNullable = arrayNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#arrayRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayRequiredNullable Required, nullable List.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayRequiredNullable(final List arrayRequiredNullable) { + this.arrayRequiredNullable = arrayRequiredNullable; + return this; + } + /** * Sets the value of {@link RecordWithAllConstraints#arrayMinItems }. * *

NOTE: Pass-by-reference is used! * - * @param arrayMinItems sets the value of arrayMinItems. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1.. * @return this {@link Builder}-instance for method-chaining. */ public Builder arrayMinItems(final List arrayMinItems) { @@ -313,7 +540,7 @@ public Builder arrayMinItems(final List arrayMinItems) { * *

NOTE: Pass-by-reference is used! * - * @param arrayMaxItems sets the value of arrayMaxItems. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10.. * @return this {@link Builder}-instance for method-chaining. */ public Builder arrayMaxItems(final List arrayMaxItems) { @@ -326,7 +553,7 @@ public Builder arrayMaxItems(final List arrayMaxItems) { * *

NOTE: Pass-by-reference is used! * - * @param arrayMinAndMaxItems sets the value of arrayMinAndMaxItems. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10.. * @return this {@link Builder}-instance for method-chaining. */ public Builder arrayMinAndMaxItems(final List arrayMinAndMaxItems) { @@ -334,12 +561,116 @@ public Builder arrayMinAndMaxItems(final List arrayMinAndMaxItems) { return this; } + /** + * Sets the value of {@link RecordWithAllConstraints#arrayUniqueStandard }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayUniqueStandard Non-required, non-nullable Set.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayUniqueStandard(final Set arrayUniqueStandard) { + this.arrayUniqueStandard = arrayUniqueStandard; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#arrayUniqueRequired }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayUniqueRequired Required, non-nullable Set.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayUniqueRequired(final Set arrayUniqueRequired) { + this.arrayUniqueRequired = arrayUniqueRequired; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#arrayUniqueNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayUniqueNullable Non-required, nullable Set.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayUniqueNullable(final Set arrayUniqueNullable) { + this.arrayUniqueNullable = arrayUniqueNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#arrayUniqueRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param arrayUniqueRequiredNullable Required, nullable Set.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder arrayUniqueRequiredNullable(final Set arrayUniqueRequiredNullable) { + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#intStandard }. + * + *

NOTE: Pass-by-reference is used! + * + * @param intStandard Non-required, non-nullable Integer.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder intStandard(final Integer intStandard) { + this.intStandard = intStandard; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#intNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param intNullable Non-required, nullable Integer.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder intNullable(final Integer intNullable) { + this.intNullable = intNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#intRequired }. + * + *

NOTE: Pass-by-reference is used! + * + * @param intRequired Required, non-nullable Integer.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder intRequired(final Integer intRequired) { + this.intRequired = intRequired; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#intRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param intRequiredNullable Required, nullable Integer.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder intRequiredNullable(final Integer intRequiredNullable) { + this.intRequiredNullable = intRequiredNullable; + return this; + } + /** * Sets the value of {@link RecordWithAllConstraints#intMinimum }. * *

NOTE: Pass-by-reference is used! * - * @param intMinimum sets the value of intMinimum. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18.. * @return this {@link Builder}-instance for method-chaining. */ public Builder intMinimum(final Integer intMinimum) { @@ -352,7 +683,7 @@ public Builder intMinimum(final Integer intMinimum) { * *

NOTE: Pass-by-reference is used! * - * @param intMaximum sets the value of intMaximum. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder intMaximum(final Integer intMaximum) { @@ -365,7 +696,7 @@ public Builder intMaximum(final Integer intMaximum) { * *

NOTE: Pass-by-reference is used! * - * @param intMinimumAndMaximum sets the value of intMinimumAndMaximum. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder intMinimumAndMaximum(final Integer intMinimumAndMaximum) { @@ -373,12 +704,64 @@ public Builder intMinimumAndMaximum(final Integer intMinimumAndMaximum) { return this; } + /** + * Sets the value of {@link RecordWithAllConstraints#longStandard }. + * + *

NOTE: Pass-by-reference is used! + * + * @param longStandard Non-required, non-nullable Long.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder longStandard(final Long longStandard) { + this.longStandard = longStandard; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#longNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param longNullable Non-required, nullable Long.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder longNullable(final Long longNullable) { + this.longNullable = longNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#longRequired }. + * + *

NOTE: Pass-by-reference is used! + * + * @param longRequired Required, non-nullable Long.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder longRequired(final Long longRequired) { + this.longRequired = longRequired; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#longRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param longRequiredNullable Required, nullable Long.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder longRequiredNullable(final Long longRequiredNullable) { + this.longRequiredNullable = longRequiredNullable; + return this; + } + /** * Sets the value of {@link RecordWithAllConstraints#longMinimum }. * *

NOTE: Pass-by-reference is used! * - * @param longMinimum sets the value of longMinimum. + * @param longMinimum Non-required, non-nullable Long with minimum: 18.. * @return this {@link Builder}-instance for method-chaining. */ public Builder longMinimum(final Long longMinimum) { @@ -391,7 +774,7 @@ public Builder longMinimum(final Long longMinimum) { * *

NOTE: Pass-by-reference is used! * - * @param longMaximum sets the value of longMaximum. + * @param longMaximum Non-required, non-nullable Long with maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder longMaximum(final Long longMaximum) { @@ -404,7 +787,7 @@ public Builder longMaximum(final Long longMaximum) { * *

NOTE: Pass-by-reference is used! * - * @param longMinimumAndMaximum sets the value of longMinimumAndMaximum. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder longMinimumAndMaximum(final Long longMinimumAndMaximum) { @@ -412,12 +795,64 @@ public Builder longMinimumAndMaximum(final Long longMinimumAndMaximum) { return this; } + /** + * Sets the value of {@link RecordWithAllConstraints#bigDecimalStandard }. + * + *

NOTE: Pass-by-reference is used! + * + * @param bigDecimalStandard Non-required, non-nullable BigDecimal.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder bigDecimalStandard(final BigDecimal bigDecimalStandard) { + this.bigDecimalStandard = bigDecimalStandard; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#bigDecimalNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param bigDecimalNullable Non-required, nullable BigDecimal.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder bigDecimalNullable(final BigDecimal bigDecimalNullable) { + this.bigDecimalNullable = bigDecimalNullable; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#bigDecimalRequired }. + * + *

NOTE: Pass-by-reference is used! + * + * @param bigDecimalRequired Required, non-nullable BigDecimal.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder bigDecimalRequired(final BigDecimal bigDecimalRequired) { + this.bigDecimalRequired = bigDecimalRequired; + return this; + } + + /** + * Sets the value of {@link RecordWithAllConstraints#bigDecimalRequiredNullable }. + * + *

NOTE: Pass-by-reference is used! + * + * @param bigDecimalRequiredNullable Required, nullable BigDecimal.. + * @return this {@link Builder}-instance for method-chaining. + */ + public Builder bigDecimalRequiredNullable(final BigDecimal bigDecimalRequiredNullable) { + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; + return this; + } + /** * Sets the value of {@link RecordWithAllConstraints#bigDecimalMinimum }. * *

NOTE: Pass-by-reference is used! * - * @param bigDecimalMinimum sets the value of bigDecimalMinimum. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0.. * @return this {@link Builder}-instance for method-chaining. */ public Builder bigDecimalMinimum(final BigDecimal bigDecimalMinimum) { @@ -430,7 +865,7 @@ public Builder bigDecimalMinimum(final BigDecimal bigDecimalMinimum) { * *

NOTE: Pass-by-reference is used! * - * @param bigDecimalMaximum sets the value of bigDecimalMaximum. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder bigDecimalMaximum(final BigDecimal bigDecimalMaximum) { @@ -443,7 +878,7 @@ public Builder bigDecimalMaximum(final BigDecimal bigDecimalMaximum) { * *

NOTE: Pass-by-reference is used! * - * @param bigDecimalMinimumAndMaximum sets the value of bigDecimalMinimumAndMaximum. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100.. * @return this {@link Builder}-instance for method-chaining. */ public Builder bigDecimalMinimumAndMaximum(final BigDecimal bigDecimalMinimumAndMaximum) { @@ -461,6 +896,12 @@ public Builder bigDecimalMinimumAndMaximum(final BigDecimal bigDecimalMinimumAnd */ public RecordWithAllConstraints build() { return new RecordWithAllConstraints( + booleanStandard, + booleanDefault, + booleanNullable, + booleanRequired, + booleanRequiredDefault, + booleanRequiredNullable, stringStandard, stringDefault, stringNullable, @@ -472,15 +913,33 @@ public RecordWithAllConstraints build() { stringMinLength, stringMaxLength, stringMinAndMaxLength, + arrayNullable, + arrayRequiredNullable, arrayMinItems, arrayMaxItems, arrayMinAndMaxItems, + arrayUniqueStandard, + arrayUniqueRequired, + arrayUniqueNullable, + arrayUniqueRequiredNullable, + intStandard, + intNullable, + intRequired, + intRequiredNullable, intMinimum, intMaximum, intMinimumAndMaximum, + longStandard, + longNullable, + longRequired, + longRequiredNullable, longMinimum, longMaximum, longMinimumAndMaximum, + bigDecimalStandard, + bigDecimalNullable, + bigDecimalRequired, + bigDecimalRequiredNullable, bigDecimalMinimum, bigDecimalMaximum, bigDecimalMinimumAndMaximum); diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithNullableFieldsOfEachType.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithNullableFieldsOfEachType.java index 74e34db8..f734eccf 100644 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithNullableFieldsOfEachType.java +++ b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithNullableFieldsOfEachType.java @@ -8,12 +8,7 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.github.chrimle.o2jrm.generateBuilders.ExampleNullableEnum; import io.github.chrimle.o2jrm.generateBuilders.ExampleNullableRecord; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import org.springframework.lang.Nullable; import java.util.NoSuchElementException; @@ -30,41 +25,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, @Valid ExampleNullableRecord field7, ExampleNullableEnum field8) { @JsonCreator public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } @@ -72,41 +47,10 @@ public RecordWithNullableFieldsOfEachType( /** Builder class for {@link RecordWithNullableFieldsOfEachType }. */ public static class Builder { - private Boolean field1; - private String field2; private Integer field3; - private BigDecimal field4; - private List field5; - private Set field6; private ExampleNullableRecord field7; private ExampleNullableEnum field8; - /** - * Sets the value of {@link RecordWithNullableFieldsOfEachType#field1 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field1 a Boolean field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field1(final Boolean field1) { - this.field1 = field1; - return this; - } - - /** - * Sets the value of {@link RecordWithNullableFieldsOfEachType#field2 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field2 a String field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field2(final String field2) { - this.field2 = field2; - return this; - } - /** * Sets the value of {@link RecordWithNullableFieldsOfEachType#field3 }. * @@ -120,45 +64,6 @@ public Builder field3(final Integer field3) { return this; } - /** - * Sets the value of {@link RecordWithNullableFieldsOfEachType#field4 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field4 a Number field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field4(final BigDecimal field4) { - this.field4 = field4; - return this; - } - - /** - * Sets the value of {@link RecordWithNullableFieldsOfEachType#field5 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field5 an Array of Boolean field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field5(final List field5) { - this.field5 = field5; - return this; - } - - /** - * Sets the value of {@link RecordWithNullableFieldsOfEachType#field6 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field6 a Set field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field6(final Set field6) { - this.field6 = field6; - return this; - } - /** * Sets the value of {@link RecordWithNullableFieldsOfEachType#field7 }. * @@ -195,12 +100,7 @@ public Builder field8(final ExampleNullableEnum field8) { */ public RecordWithNullableFieldsOfEachType build() { return new RecordWithNullableFieldsOfEachType( - field1, - field2, field3, - field4, - field5, - field6, field7, field8); } diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithRequiredFieldsOfEachType.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithRequiredFieldsOfEachType.java index 42df956b..0abc4aa5 100644 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithRequiredFieldsOfEachType.java +++ b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/generateBuilders/RecordWithRequiredFieldsOfEachType.java @@ -5,15 +5,8 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.github.chrimle.o2jrm.generateBuilders.ExampleEnum; import io.github.chrimle.o2jrm.generateBuilders.ExampleRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.springframework.lang.Nullable; import org.openapitools.jackson.nullable.JsonNullable; import java.time.OffsetDateTime; @@ -28,41 +21,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - @NotNull Boolean field1, - @NotNull String field2, @NotNull Integer field3, - @NotNull BigDecimal field4, - @NotNull List field5, - @NotNull Set field6, @Valid @NotNull ExampleRecord field7, @NotNull ExampleEnum field8) { @JsonCreator public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } @@ -70,41 +43,10 @@ public RecordWithRequiredFieldsOfEachType( /** Builder class for {@link RecordWithRequiredFieldsOfEachType }. */ public static class Builder { - private Boolean field1; - private String field2; private Integer field3; - private BigDecimal field4; - private List field5; - private Set field6; private ExampleRecord field7; private ExampleEnum field8; - /** - * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field1 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field1 a Boolean field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field1(final Boolean field1) { - this.field1 = field1; - return this; - } - - /** - * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field2 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field2 a String field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field2(final String field2) { - this.field2 = field2; - return this; - } - /** * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field3 }. * @@ -118,45 +60,6 @@ public Builder field3(final Integer field3) { return this; } - /** - * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field4 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field4 a Number field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field4(final BigDecimal field4) { - this.field4 = field4; - return this; - } - - /** - * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field5 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field5 an Array of Boolean field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field5(final List field5) { - this.field5 = field5; - return this; - } - - /** - * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field6 }. - * - *

NOTE: Pass-by-reference is used! - * - * @param field6 a Set field. - * @return this {@link Builder}-instance for method-chaining. - */ - public Builder field6(final Set field6) { - this.field6 = field6; - return this; - } - /** * Sets the value of {@link RecordWithRequiredFieldsOfEachType#field7 }. * @@ -193,12 +96,7 @@ public Builder field8(final ExampleEnum field8) { */ public RecordWithRequiredFieldsOfEachType build() { return new RecordWithRequiredFieldsOfEachType( - field1, - field2, field3, - field4, - field5, - field6, field7, field8); } diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/ExampleRecordWithDefaultFields.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/ExampleRecordWithDefaultFields.java deleted file mode 100644 index a1e1ed27..00000000 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,32 +0,0 @@ -package io.github.chrimle.o2jrm.serializableModel; - -import java.net.URI; -import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import org.springframework.lang.Nullable; -import org.openapitools.jackson.nullable.JsonNullable; -import java.io.Serializable; -import java.time.OffsetDateTime; -import jakarta.validation.Valid; -import jakarta.validation.constraints.*; -import io.swagger.v3.oas.annotations.media.Schema; - - -import java.util.*; -import jakarta.annotation.Generated; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) - implements Serializable { - - @JsonCreator - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } -} diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithAllConstraints.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithAllConstraints.java index 65731c6b..df3055ae 100644 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithAllConstraints.java +++ b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithAllConstraints.java @@ -5,10 +5,13 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import org.springframework.lang.Nullable; @@ -27,31 +30,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + @NotNull Boolean booleanRequired, + @NotNull Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -63,15 +96,33 @@ public record RecordWithAllConstraints( @Size(min = 3) String stringMinLength, @Size(max = 7) String stringMaxLength, @Size(min = 3, max = 7) String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, @Size(min = 1) List arrayMinItems, @Size(max = 10) List arrayMaxItems, @Size(min = 1, max = 10) List arrayMinAndMaxItems, + Set arrayUniqueStandard, + @NotNull Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + @NotNull Integer intRequired, + Integer intRequiredNullable, @Min(18) Integer intMinimum, @Max(100) Integer intMaximum, @Min(0) @Max(100) Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + @NotNull Long longRequired, + Long longRequiredNullable, @Min(18L) Long longMinimum, @Max(100L) Long longMaximum, @Min(0L) @Max(100L) Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + @NotNull BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, @DecimalMin("0") BigDecimal bigDecimalMinimum, @DecimalMax("100") BigDecimal bigDecimalMaximum, @DecimalMin("0") @DecimalMax("100") BigDecimal bigDecimalMinimumAndMaximum) @@ -79,6 +130,12 @@ public record RecordWithAllConstraints( @JsonCreator public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -90,18 +147,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -113,15 +194,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithNullableFieldsOfEachType.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithNullableFieldsOfEachType.java index e840376e..339cf71c 100644 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithNullableFieldsOfEachType.java +++ b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithNullableFieldsOfEachType.java @@ -8,12 +8,7 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.github.chrimle.o2jrm.serializableModel.ExampleNullableEnum; import io.github.chrimle.o2jrm.serializableModel.ExampleNullableRecord; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import org.springframework.lang.Nullable; import java.util.NoSuchElementException; @@ -31,42 +26,22 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, @Valid ExampleNullableRecord field7, ExampleNullableEnum field8) implements Serializable { @JsonCreator public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithRequiredFieldsOfEachType.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithRequiredFieldsOfEachType.java index 1e029126..da4ad462 100644 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithRequiredFieldsOfEachType.java +++ b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/serializableModel/RecordWithRequiredFieldsOfEachType.java @@ -5,15 +5,8 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.github.chrimle.o2jrm.serializableModel.ExampleEnum; import io.github.chrimle.o2jrm.serializableModel.ExampleRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.springframework.lang.Nullable; import org.openapitools.jackson.nullable.JsonNullable; import java.io.Serializable; @@ -29,42 +22,22 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - @NotNull Boolean field1, - @NotNull String field2, @NotNull Integer field3, - @NotNull BigDecimal field4, - @NotNull List field5, - @NotNull Set field6, @Valid @NotNull ExampleRecord field7, @NotNull ExampleEnum field8) implements Serializable { @JsonCreator public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/ExampleRecordWithDefaultFields.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 77e46821..00000000 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,30 +0,0 @@ -package io.github.chrimle.o2jrm.standard; - -import java.net.URI; -import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import org.springframework.lang.Nullable; -import org.openapitools.jackson.nullable.JsonNullable; -import java.time.OffsetDateTime; -import jakarta.validation.Valid; -import jakarta.validation.constraints.*; -import io.swagger.v3.oas.annotations.media.Schema; - - -import java.util.*; -import jakarta.annotation.Generated; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - @JsonCreator - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } -} diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithAllConstraints.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithAllConstraints.java index d5512420..d2356bf1 100644 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithAllConstraints.java +++ b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithAllConstraints.java @@ -5,10 +5,13 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import org.springframework.lang.Nullable; @@ -26,31 +29,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + @NotNull Boolean booleanRequired, + @NotNull Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -62,21 +95,45 @@ public record RecordWithAllConstraints( @Size(min = 3) String stringMinLength, @Size(max = 7) String stringMaxLength, @Size(min = 3, max = 7) String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, @Size(min = 1) List arrayMinItems, @Size(max = 10) List arrayMaxItems, @Size(min = 1, max = 10) List arrayMinAndMaxItems, + Set arrayUniqueStandard, + @NotNull Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + @NotNull Integer intRequired, + Integer intRequiredNullable, @Min(18) Integer intMinimum, @Max(100) Integer intMaximum, @Min(0) @Max(100) Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + @NotNull Long longRequired, + Long longRequiredNullable, @Min(18L) Long longMinimum, @Max(100L) Long longMaximum, @Min(0L) @Max(100L) Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + @NotNull BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, @DecimalMin("0") BigDecimal bigDecimalMinimum, @DecimalMax("100") BigDecimal bigDecimalMaximum, @DecimalMin("0") @DecimalMax("100") BigDecimal bigDecimalMinimumAndMaximum) { @JsonCreator public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -88,18 +145,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -111,15 +192,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithNullableFieldsOfEachType.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithNullableFieldsOfEachType.java index 0bbd6b2b..8ca70d9e 100644 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithNullableFieldsOfEachType.java +++ b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithNullableFieldsOfEachType.java @@ -8,12 +8,7 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.github.chrimle.o2jrm.standard.ExampleNullableEnum; import io.github.chrimle.o2jrm.standard.ExampleNullableRecord; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import org.springframework.lang.Nullable; import java.util.NoSuchElementException; @@ -30,41 +25,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, @Valid ExampleNullableRecord field7, ExampleNullableEnum field8) { @JsonCreator public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithRequiredFieldsOfEachType.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithRequiredFieldsOfEachType.java index dc2455a3..7c8e9671 100644 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithRequiredFieldsOfEachType.java +++ b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/standard/RecordWithRequiredFieldsOfEachType.java @@ -5,15 +5,8 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.github.chrimle.o2jrm.standard.ExampleEnum; import io.github.chrimle.o2jrm.standard.ExampleRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.springframework.lang.Nullable; import org.openapitools.jackson.nullable.JsonNullable; import java.time.OffsetDateTime; @@ -28,41 +21,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - @NotNull Boolean field1, - @NotNull String field2, @NotNull Integer field3, - @NotNull BigDecimal field4, - @NotNull List field5, - @NotNull Set field6, @Valid @NotNull ExampleRecord field7, @NotNull ExampleEnum field8) { @JsonCreator public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/ExampleRecordWithDefaultFields.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 8ffc0a71..00000000 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,30 +0,0 @@ -package io.github.chrimle.o2jrm.useBeanValidation; - -import java.net.URI; -import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import org.springframework.lang.Nullable; -import org.openapitools.jackson.nullable.JsonNullable; -import java.time.OffsetDateTime; -import jakarta.validation.Valid; -import jakarta.validation.constraints.*; -import io.swagger.v3.oas.annotations.media.Schema; - - -import java.util.*; -import jakarta.annotation.Generated; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - @JsonCreator - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } -} diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithAllConstraints.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithAllConstraints.java index 60803b86..1e2a4333 100644 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithAllConstraints.java +++ b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithAllConstraints.java @@ -5,10 +5,13 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import org.springframework.lang.Nullable; @@ -26,31 +29,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + @NotNull Boolean booleanRequired, + @NotNull Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -62,21 +95,45 @@ public record RecordWithAllConstraints( @Size(min = 3) String stringMinLength, @Size(max = 7) String stringMaxLength, @Size(min = 3, max = 7) String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, @Size(min = 1) List arrayMinItems, @Size(max = 10) List arrayMaxItems, @Size(min = 1, max = 10) List arrayMinAndMaxItems, + Set arrayUniqueStandard, + @NotNull Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + @NotNull Integer intRequired, + Integer intRequiredNullable, @Min(18) Integer intMinimum, @Max(100) Integer intMaximum, @Min(0) @Max(100) Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + @NotNull Long longRequired, + Long longRequiredNullable, @Min(18L) Long longMinimum, @Max(100L) Long longMaximum, @Min(0L) @Max(100L) Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + @NotNull BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, @DecimalMin("0") BigDecimal bigDecimalMinimum, @DecimalMax("100") BigDecimal bigDecimalMaximum, @DecimalMin("0") @DecimalMax("100") BigDecimal bigDecimalMinimumAndMaximum) { @JsonCreator public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -88,18 +145,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -111,15 +192,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithNullableFieldsOfEachType.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithNullableFieldsOfEachType.java index e9c5a90f..2a4477a8 100644 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithNullableFieldsOfEachType.java +++ b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithNullableFieldsOfEachType.java @@ -8,12 +8,7 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.github.chrimle.o2jrm.useBeanValidation.ExampleNullableEnum; import io.github.chrimle.o2jrm.useBeanValidation.ExampleNullableRecord; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import org.springframework.lang.Nullable; import java.util.NoSuchElementException; @@ -30,41 +25,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, @Valid ExampleNullableRecord field7, ExampleNullableEnum field8) { @JsonCreator public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithRequiredFieldsOfEachType.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithRequiredFieldsOfEachType.java index 3edc8b81..a89148a6 100644 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithRequiredFieldsOfEachType.java +++ b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useBeanValidation/RecordWithRequiredFieldsOfEachType.java @@ -5,15 +5,8 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.github.chrimle.o2jrm.useBeanValidation.ExampleEnum; import io.github.chrimle.o2jrm.useBeanValidation.ExampleRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.springframework.lang.Nullable; import org.openapitools.jackson.nullable.JsonNullable; import java.time.OffsetDateTime; @@ -28,41 +21,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - @NotNull Boolean field1, - @NotNull String field2, @NotNull Integer field3, - @NotNull BigDecimal field4, - @NotNull List field5, - @NotNull Set field6, @Valid @NotNull ExampleRecord field7, @NotNull ExampleEnum field8) { @JsonCreator public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/ExampleRecordWithDefaultFields.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/ExampleRecordWithDefaultFields.java deleted file mode 100644 index 54f7922d..00000000 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/ExampleRecordWithDefaultFields.java +++ /dev/null @@ -1,30 +0,0 @@ -package io.github.chrimle.o2jrm.useEnumCaseInsensitive; - -import java.net.URI; -import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import org.springframework.lang.Nullable; -import org.openapitools.jackson.nullable.JsonNullable; -import java.time.OffsetDateTime; -import jakarta.validation.Valid; -import jakarta.validation.constraints.*; -import io.swagger.v3.oas.annotations.media.Schema; - - -import java.util.*; -import jakarta.annotation.Generated; - -/** - * Example of a Record with default fields - * - * @param field1 a String field with a default value - */ -public record ExampleRecordWithDefaultFields(String field1) { - - @JsonCreator - public ExampleRecordWithDefaultFields(final String field1) { - this.field1 = Objects.requireNonNullElse(field1, "someDefaultValue"); - } -} diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithAllConstraints.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithAllConstraints.java index 4aeeb335..17e10365 100644 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithAllConstraints.java +++ b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithAllConstraints.java @@ -5,10 +5,13 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import org.openapitools.jackson.nullable.JsonNullable; import org.springframework.lang.Nullable; @@ -26,31 +29,61 @@ /** * Example of a Record which has fields with constraints * - * @param stringStandard String. - * @param stringDefault String. - * @param stringNullable String. - * @param stringRequired String. - * @param stringRequiredNullable String. - * @param stringRequiredPattern String. - * @param stringEmailFormat String. - * @param stringUuidFormat UUID. - * @param stringMinLength String. - * @param stringMaxLength String. - * @param stringMinAndMaxLength String. - * @param arrayMinItems List. - * @param arrayMaxItems List. - * @param arrayMinAndMaxItems List. - * @param intMinimum Integer. - * @param intMaximum Integer. - * @param intMinimumAndMaximum Integer. - * @param longMinimum Long. - * @param longMaximum Long. - * @param longMinimumAndMaximum Long. - * @param bigDecimalMinimum BigDecimal. - * @param bigDecimalMaximum BigDecimal. - * @param bigDecimalMinimumAndMaximum BigDecimal. + * @param booleanStandard Non-required, non-nullable Boolean field. + * @param booleanDefault Non-required, non-nullable Boolean with a default value. + * @param booleanNullable Non-required, nullable Boolean field. + * @param booleanRequired Required, non-nullable Boolean field. + * @param booleanRequiredDefault Required, non-nullable Boolean field with a default value. + * @param booleanRequiredNullable Required, nullable Boolean field. + * @param stringStandard Non-required, non-nullable String field. + * @param stringDefault Non-required, non-nullable String field with a default value. + * @param stringNullable Non-required, nullable String field. + * @param stringRequired Required, non-nullable String field. + * @param stringRequiredNullable Required, nullable String field. + * @param stringRequiredPattern Required, non-nullable String field with a RegEx-pattern. + * @param stringEmailFormat Non-required, non-nullable String field with Email format. + * @param stringUuidFormat Non-required, non-nullable UUID field. + * @param stringMinLength Non-required, non-nullable String field with minLength: 3. + * @param stringMaxLength Non-required, non-nullable String field with maxLength: 7. + * @param stringMinAndMaxLength Non-required, non-nullable String with minLength: 3 and maxLength: 7. + * @param arrayNullable Non-required, nullable List. + * @param arrayRequiredNullable Required, nullable List. + * @param arrayMinItems Non-required, non-nullable List with minItems: 1. + * @param arrayMaxItems Non-required, non-nullable List with maxItems: 10. + * @param arrayMinAndMaxItems Non-required, non-nullable List with minItems: 1 and maxItems: 10. + * @param arrayUniqueStandard Non-required, non-nullable Set. + * @param arrayUniqueRequired Required, non-nullable Set. + * @param arrayUniqueNullable Non-required, nullable Set. + * @param arrayUniqueRequiredNullable Required, nullable Set. + * @param intStandard Non-required, non-nullable Integer. + * @param intNullable Non-required, nullable Integer. + * @param intRequired Required, non-nullable Integer. + * @param intRequiredNullable Required, nullable Integer. + * @param intMinimum Non-required, non-nullable Integer with minimum: 18. + * @param intMaximum Non-required, non-nullable Integer with maximum: 100. + * @param intMinimumAndMaximum Non-required, non-nullable Integer with minimum: 0 and maximum: 100. + * @param longStandard Non-required, non-nullable Long. + * @param longNullable Non-required, nullable Long. + * @param longRequired Required, non-nullable Long. + * @param longRequiredNullable Required, nullable Long. + * @param longMinimum Non-required, non-nullable Long with minimum: 18. + * @param longMaximum Non-required, non-nullable Long with maximum: 100. + * @param longMinimumAndMaximum Non-required, non-nullable Long with minimum: 0 and maximum: 100. + * @param bigDecimalStandard Non-required, non-nullable BigDecimal. + * @param bigDecimalNullable Non-required, nullable BigDecimal. + * @param bigDecimalRequired Required, non-nullable BigDecimal. + * @param bigDecimalRequiredNullable Required, nullable BigDecimal. + * @param bigDecimalMinimum Non-required, non-nullable BigDecimal with minimum: 0. + * @param bigDecimalMaximum Non-required, non-nullable BigDecimal with maximum: 100. + * @param bigDecimalMinimumAndMaximum Non-required, non-nullable BigDecimal with minimum: 0 and maximum: 100. */ public record RecordWithAllConstraints( + Boolean booleanStandard, + Boolean booleanDefault, + Boolean booleanNullable, + @NotNull Boolean booleanRequired, + @NotNull Boolean booleanRequiredDefault, + Boolean booleanRequiredNullable, String stringStandard, String stringDefault, String stringNullable, @@ -62,21 +95,45 @@ public record RecordWithAllConstraints( @Size(min = 3) String stringMinLength, @Size(max = 7) String stringMaxLength, @Size(min = 3, max = 7) String stringMinAndMaxLength, + List arrayNullable, + List arrayRequiredNullable, @Size(min = 1) List arrayMinItems, @Size(max = 10) List arrayMaxItems, @Size(min = 1, max = 10) List arrayMinAndMaxItems, + Set arrayUniqueStandard, + @NotNull Set arrayUniqueRequired, + Set arrayUniqueNullable, + Set arrayUniqueRequiredNullable, + Integer intStandard, + Integer intNullable, + @NotNull Integer intRequired, + Integer intRequiredNullable, @Min(18) Integer intMinimum, @Max(100) Integer intMaximum, @Min(0) @Max(100) Integer intMinimumAndMaximum, + Long longStandard, + Long longNullable, + @NotNull Long longRequired, + Long longRequiredNullable, @Min(18L) Long longMinimum, @Max(100L) Long longMaximum, @Min(0L) @Max(100L) Long longMinimumAndMaximum, + BigDecimal bigDecimalStandard, + BigDecimal bigDecimalNullable, + @NotNull BigDecimal bigDecimalRequired, + BigDecimal bigDecimalRequiredNullable, @DecimalMin("0") BigDecimal bigDecimalMinimum, @DecimalMax("100") BigDecimal bigDecimalMaximum, @DecimalMin("0") @DecimalMax("100") BigDecimal bigDecimalMinimumAndMaximum) { @JsonCreator public RecordWithAllConstraints( + final Boolean booleanStandard, + final Boolean booleanDefault, + final Boolean booleanNullable, + final Boolean booleanRequired, + final Boolean booleanRequiredDefault, + final Boolean booleanRequiredNullable, final String stringStandard, final String stringDefault, final String stringNullable, @@ -88,18 +145,42 @@ public RecordWithAllConstraints( final String stringMinLength, final String stringMaxLength, final String stringMinAndMaxLength, + final List arrayNullable, + final List arrayRequiredNullable, final List arrayMinItems, final List arrayMaxItems, final List arrayMinAndMaxItems, + final Set arrayUniqueStandard, + final Set arrayUniqueRequired, + final Set arrayUniqueNullable, + final Set arrayUniqueRequiredNullable, + final Integer intStandard, + final Integer intNullable, + final Integer intRequired, + final Integer intRequiredNullable, final Integer intMinimum, final Integer intMaximum, final Integer intMinimumAndMaximum, + final Long longStandard, + final Long longNullable, + final Long longRequired, + final Long longRequiredNullable, final Long longMinimum, final Long longMaximum, final Long longMinimumAndMaximum, + final BigDecimal bigDecimalStandard, + final BigDecimal bigDecimalNullable, + final BigDecimal bigDecimalRequired, + final BigDecimal bigDecimalRequiredNullable, final BigDecimal bigDecimalMinimum, final BigDecimal bigDecimalMaximum, final BigDecimal bigDecimalMinimumAndMaximum) { + this.booleanStandard = booleanStandard; + this.booleanDefault = Objects.requireNonNullElse(booleanDefault, true); + this.booleanNullable = booleanNullable; + this.booleanRequired = booleanRequired; + this.booleanRequiredDefault = Objects.requireNonNullElse(booleanRequiredDefault, true); + this.booleanRequiredNullable = booleanRequiredNullable; this.stringStandard = stringStandard; this.stringDefault = Objects.requireNonNullElse(stringDefault, "someDefaultValue"); this.stringNullable = stringNullable; @@ -111,15 +192,33 @@ public RecordWithAllConstraints( this.stringMinLength = stringMinLength; this.stringMaxLength = stringMaxLength; this.stringMinAndMaxLength = stringMinAndMaxLength; + this.arrayNullable = arrayNullable; + this.arrayRequiredNullable = arrayRequiredNullable; this.arrayMinItems = Objects.requireNonNullElseGet(arrayMinItems, () -> new ArrayList<>()); this.arrayMaxItems = Objects.requireNonNullElseGet(arrayMaxItems, () -> new ArrayList<>()); this.arrayMinAndMaxItems = Objects.requireNonNullElseGet(arrayMinAndMaxItems, () -> new ArrayList<>()); + this.arrayUniqueStandard = Objects.requireNonNullElseGet(arrayUniqueStandard, () -> new LinkedHashSet<>()); + this.arrayUniqueRequired = Objects.requireNonNullElseGet(arrayUniqueRequired, () -> new LinkedHashSet<>()); + this.arrayUniqueNullable = arrayUniqueNullable; + this.arrayUniqueRequiredNullable = arrayUniqueRequiredNullable; + this.intStandard = intStandard; + this.intNullable = intNullable; + this.intRequired = intRequired; + this.intRequiredNullable = intRequiredNullable; this.intMinimum = intMinimum; this.intMaximum = intMaximum; this.intMinimumAndMaximum = intMinimumAndMaximum; + this.longStandard = longStandard; + this.longNullable = longNullable; + this.longRequired = longRequired; + this.longRequiredNullable = longRequiredNullable; this.longMinimum = longMinimum; this.longMaximum = longMaximum; this.longMinimumAndMaximum = longMinimumAndMaximum; + this.bigDecimalStandard = bigDecimalStandard; + this.bigDecimalNullable = bigDecimalNullable; + this.bigDecimalRequired = bigDecimalRequired; + this.bigDecimalRequiredNullable = bigDecimalRequiredNullable; this.bigDecimalMinimum = bigDecimalMinimum; this.bigDecimalMaximum = bigDecimalMaximum; this.bigDecimalMinimumAndMaximum = bigDecimalMinimumAndMaximum; diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithNullableFieldsOfEachType.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithNullableFieldsOfEachType.java index 5994a0ab..9c401635 100644 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithNullableFieldsOfEachType.java +++ b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithNullableFieldsOfEachType.java @@ -8,12 +8,7 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.github.chrimle.o2jrm.useEnumCaseInsensitive.ExampleNullableEnum; import io.github.chrimle.o2jrm.useEnumCaseInsensitive.ExampleNullableRecord; -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.openapitools.jackson.nullable.JsonNullable; import org.springframework.lang.Nullable; import java.util.NoSuchElementException; @@ -30,41 +25,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleNullableRecord. * @param field8 ExampleNullableEnum. */ public record RecordWithNullableFieldsOfEachType( - Boolean field1, - String field2, Integer field3, - BigDecimal field4, - List field5, - Set field6, @Valid ExampleNullableRecord field7, ExampleNullableEnum field8) { @JsonCreator public RecordWithNullableFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleNullableRecord field7, final ExampleNullableEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = field5; - this.field6 = field6; this.field7 = field7; this.field8 = field8; } diff --git a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithRequiredFieldsOfEachType.java b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithRequiredFieldsOfEachType.java index 394f3a64..40726ed2 100644 --- a/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithRequiredFieldsOfEachType.java +++ b/test/spring/target/generated-sources/src/gen/java/main/io/github/chrimle/o2jrm/useEnumCaseInsensitive/RecordWithRequiredFieldsOfEachType.java @@ -5,15 +5,8 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.github.chrimle.o2jrm.useEnumCaseInsensitive.ExampleEnum; import io.github.chrimle.o2jrm.useEnumCaseInsensitive.ExampleRecord; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; import org.springframework.lang.Nullable; import org.openapitools.jackson.nullable.JsonNullable; import java.time.OffsetDateTime; @@ -28,41 +21,21 @@ /** * Example of a Record with fields of each type * - * @param field1 a Boolean field - * @param field2 a String field * @param field3 an Integer field - * @param field4 a Number field - * @param field5 an Array of Boolean field - * @param field6 a Set field * @param field7 ExampleRecord. * @param field8 ExampleEnum. */ public record RecordWithRequiredFieldsOfEachType( - @NotNull Boolean field1, - @NotNull String field2, @NotNull Integer field3, - @NotNull BigDecimal field4, - @NotNull List field5, - @NotNull Set field6, @Valid @NotNull ExampleRecord field7, @NotNull ExampleEnum field8) { @JsonCreator public RecordWithRequiredFieldsOfEachType( - final Boolean field1, - final String field2, final Integer field3, - final BigDecimal field4, - final List field5, - final Set field6, final ExampleRecord field7, final ExampleEnum field8) { - this.field1 = field1; - this.field2 = field2; this.field3 = field3; - this.field4 = field4; - this.field5 = Objects.requireNonNullElseGet(field5, () -> new ArrayList<>()); - this.field6 = Objects.requireNonNullElseGet(field6, () -> new LinkedHashSet<>()); this.field7 = field7; this.field8 = field8; } diff --git a/test/utils/src/main/java/io/github/chrimle/o2jrm/test/meta/models/GeneratedField.java b/test/utils/src/main/java/io/github/chrimle/o2jrm/test/meta/models/GeneratedField.java index e85b5335..bcc9ac36 100644 --- a/test/utils/src/main/java/io/github/chrimle/o2jrm/test/meta/models/GeneratedField.java +++ b/test/utils/src/main/java/io/github/chrimle/o2jrm/test/meta/models/GeneratedField.java @@ -175,6 +175,7 @@ public static Builder of(final String name, final Class type, final T return new Builder<>(name, type, enumValue, null); } + @SuppressWarnings("OptionalUsedAsFieldOrParameterType") public static class Builder { private final String name; private final Class type;