Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 29 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,13 @@ def getCheckedOutGitCommitHash() {

apply from: './publish-common.gradle'

// Java toolchain configuration - Use Java 21 for modern features
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}

def lombokVersion = '1.18.30'
def lazysodiumVersion = '5.1.4'
def jnaVersion = '5.15.0'
Expand All @@ -39,6 +46,8 @@ def jsonVersion = '20240303'
def structuredFieldsVersion = '0.4'
def jakartaAnnotationVersion = '2.1.1'
def jacksonNullableVersion = '0.2.6'
def jakartaValidationVersion = '3.0.2'
def hibernateValidatorVersion = '8.0.1.Final'

// test dependencies
def testngVersion = '7.7.0'
Expand All @@ -62,6 +71,10 @@ dependencies {
implementation "jakarta.annotation:jakarta.annotation-api:${jakartaAnnotationVersion}"
implementation "org.openapitools:jackson-databind-nullable:${jacksonNullableVersion}"

// Jakarta Validation for generated models (required when useBeanValidation=true)
implementation "jakarta.validation:jakarta.validation-api:${jakartaValidationVersion}"
implementation "org.hibernate.validator:hibernate-validator:${hibernateValidatorVersion}"

testImplementation platform("org.junit:junit-bom:${junitVersion}")
testImplementation "org.junit.jupiter:junit-jupiter:${junitVersion}"
testImplementation "com.squareup.okhttp3:mockwebserver:${mockwebVersion}"
Expand Down Expand Up @@ -214,10 +227,24 @@ tasks.openApiGenerate {
serializationLibrary : "jackson",
useJakartaEe : "true",
dateLibrary : "java21",
sourceFolder : "src/main/java"
sourceFolder : "src/main/java",

// ====== oneOf Handling ======
// Generate interfaces for oneOf schemas - creates TypeScript-like union types
useOneOfInterfaces : "true", // Generates interfaces instead of flat classes (TypeScript-like)
legacyDiscriminatorBehavior: "false",

// ====== Reduce Boilerplate ======
hideGenerationTimestamp: "true",
openApiNullable : "false", // Don't use JsonNullable wrapper

// ====== Code Quality & Validation ======
generateConstructorWithAllArgs: "true",
performBeanValidation: "true", // Requires jakarta.validation dependencies
useBeanValidation : "true", // Requires jakarta.validation dependencies
]

nameMappings.put("A", "AUpper")
// nameMappings.put("A", "AUpper")
}

tasks.register("prepareOpenApiSpec") {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@
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;
import org.hibernate.validator.constraints.*;

/**
* ACDCAttributes
Expand All @@ -36,7 +39,7 @@
ACDCAttributes.JSON_PROPERTY_I,
ACDCAttributes.JSON_PROPERTY_U
})
@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-11-27T15:07:13.177027+07:00[Asia/Ho_Chi_Minh]", comments = "Generator version: 7.16.0")
@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.16.0")
public class ACDCAttributes {
public static final String JSON_PROPERTY_DT = "dt";
@jakarta.annotation.Nullable
Expand All @@ -53,6 +56,15 @@ public class ACDCAttributes {
public ACDCAttributes() {
}

/**
* Constructor with all args parameters
*/
public ACDCAttributes(@JsonProperty(JSON_PROPERTY_DT) String dt, @JsonProperty(JSON_PROPERTY_I) String i, @JsonProperty(JSON_PROPERTY_U) String u) {
this.dt = dt;
this.i = i;
this.u = u;
}

public ACDCAttributes dt(@jakarta.annotation.Nullable String dt) {

this.dt = dt;
Expand All @@ -64,6 +76,7 @@ public ACDCAttributes dt(@jakarta.annotation.Nullable String dt) {
* @return dt
*/
@jakarta.annotation.Nullable

@JsonProperty(value = JSON_PROPERTY_DT, required = false)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

Expand All @@ -89,6 +102,7 @@ public ACDCAttributes i(@jakarta.annotation.Nullable String i) {
* @return i
*/
@jakarta.annotation.Nullable

@JsonProperty(value = JSON_PROPERTY_I, required = false)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

Expand All @@ -114,6 +128,7 @@ public ACDCAttributes u(@jakarta.annotation.Nullable String u) {
* @return u
*/
@jakarta.annotation.Nullable

@JsonProperty(value = JSON_PROPERTY_U, required = false)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

Expand Down
Loading
Loading