From 9a0b557a816161a3770add8a8dd0f1ce883b2947 Mon Sep 17 00:00:00 2001
From: Chrimle <28791817+Chrimle@users.noreply.github.com>
Date: Tue, 24 Feb 2026 00:39:06 +0100
Subject: [PATCH 1/5] Add OneOf Example to OpenAPI Spec.
Signed-off-by: Chrimle <28791817+Chrimle@users.noreply.github.com>
---
test-common/src/main/resources/api.yaml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/test-common/src/main/resources/api.yaml b/test-common/src/main/resources/api.yaml
index 326525061..a16c13ff3 100644
--- a/test-common/src/main/resources/api.yaml
+++ b/test-common/src/main/resources/api.yaml
@@ -137,6 +137,12 @@ components:
uniqueItems: true
items:
$ref: '#/components/schemas/ExampleRecord'
+ # The oneOf implementation
+ FlexibleRecord:
+ description: A schema that must be either a standard record or a null record.
+ oneOf:
+ - $ref: '#/components/schemas/ExampleRecord'
+ - $ref: '#/components/schemas/ExampleNullableRecord'
ExampleRecord:
type: object
description: Example of a Record
From 953ec5a54d9d1e7bc0a27fe751be0e67e6971afa Mon Sep 17 00:00:00 2001
From: Chrimle <28791817+Chrimle@users.noreply.github.com>
Date: Tue, 24 Feb 2026 00:53:45 +0100
Subject: [PATCH 2/5] Enable Generate APIs
Signed-off-by: Chrimle <28791817+Chrimle@users.noreply.github.com>
---
tests/pom.xml | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tests/pom.xml b/tests/pom.xml
index f4009f6d6..82446699b 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -21,7 +21,7 @@
${project.groupId}.o2jrm
true
- false
+ true
false
false
java
@@ -164,6 +164,7 @@
${modelPackage.default}.${execution.standard}
+ ${modelPackage.default}.${execution.standard}
${generateModels.default}
${generateApis.default}
${generateModelTests.default}
From ac879eb1251ca643ed1b011ae26e3f48b64d5f8c Mon Sep 17 00:00:00 2001
From: Chrimle <28791817+Chrimle@users.noreply.github.com>
Date: Tue, 24 Feb 2026 00:54:10 +0100
Subject: [PATCH 3/5] Use OneOf as API Endpoint Response
Signed-off-by: Chrimle <28791817+Chrimle@users.noreply.github.com>
---
test-common/src/main/resources/api.yaml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/test-common/src/main/resources/api.yaml b/test-common/src/main/resources/api.yaml
index a16c13ff3..015bebd55 100644
--- a/test-common/src/main/resources/api.yaml
+++ b/test-common/src/main/resources/api.yaml
@@ -16,6 +16,11 @@ paths:
responses:
'200':
description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlexibleRecord'
+
components:
schemas:
From 1684e320f064d6747e5c5c526a9962ddc9af27ae Mon Sep 17 00:00:00 2001
From: Chrimle <28791817+Chrimle@users.noreply.github.com>
Date: Fri, 27 Feb 2026 21:49:25 +0100
Subject: [PATCH 4/5] Inline OneOf Schemas
Signed-off-by: Chrimle <28791817+Chrimle@users.noreply.github.com>
---
test-common/src/main/resources/api.yaml | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/test-common/src/main/resources/api.yaml b/test-common/src/main/resources/api.yaml
index 015bebd55..08abafa36 100644
--- a/test-common/src/main/resources/api.yaml
+++ b/test-common/src/main/resources/api.yaml
@@ -19,7 +19,21 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/FlexibleRecord'
+ title: FlexibleRecord
+ oneOf:
+ - type: object
+ title: FlexibleNonNullRecord
+ properties:
+ field1:
+ type: boolean
+ - type: object
+ title: FlexibleNullableRecord
+ nullable: true
+ properties:
+ field1:
+ type: boolean
+
+
components:
@@ -142,12 +156,6 @@ components:
uniqueItems: true
items:
$ref: '#/components/schemas/ExampleRecord'
- # The oneOf implementation
- FlexibleRecord:
- description: A schema that must be either a standard record or a null record.
- oneOf:
- - $ref: '#/components/schemas/ExampleRecord'
- - $ref: '#/components/schemas/ExampleNullableRecord'
ExampleRecord:
type: object
description: Example of a Record
From 8bcd4eb973060018d2a1a6c0d5272a0c5e143bfe Mon Sep 17 00:00:00 2001
From: Chrimle <28791817+Chrimle@users.noreply.github.com>
Date: Fri, 27 Feb 2026 21:50:12 +0100
Subject: [PATCH 5/5] Track webclient/standard OneOf-Records
Signed-off-by: Chrimle <28791817+Chrimle@users.noreply.github.com>
---
.../standard/FlexibleNonNullRecord.java | 44 ++++++++++++++++++
.../standard/FlexibleNullableRecord.java | 44 ++++++++++++++++++
.../webclient/standard/FlexibleRecord.java | 46 +++++++++++++++++++
3 files changed, 134 insertions(+)
create mode 100644 tests/target/generated-sources/openapi/src/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/FlexibleNonNullRecord.java
create mode 100644 tests/target/generated-sources/openapi/src/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/FlexibleNullableRecord.java
create mode 100644 tests/target/generated-sources/openapi/src/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/FlexibleRecord.java
diff --git a/tests/target/generated-sources/openapi/src/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/FlexibleNonNullRecord.java b/tests/target/generated-sources/openapi/src/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/FlexibleNonNullRecord.java
new file mode 100644
index 000000000..2c44c4b92
--- /dev/null
+++ b/tests/target/generated-sources/openapi/src/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/FlexibleNonNullRecord.java
@@ -0,0 +1,44 @@
+/*
+ * 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.4.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;
+
+/**
+ * FlexibleNonNullRecord.
+ *
+ * @param field1 Boolean.
+ */
+public record FlexibleNonNullRecord(
+ Boolean field1) {
+
+ @JsonCreator
+ public FlexibleNonNullRecord(
+ final Boolean field1) {
+ this.field1 = field1;
+ }
+}
diff --git a/tests/target/generated-sources/openapi/src/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/FlexibleNullableRecord.java b/tests/target/generated-sources/openapi/src/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/FlexibleNullableRecord.java
new file mode 100644
index 000000000..9c19422fd
--- /dev/null
+++ b/tests/target/generated-sources/openapi/src/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/FlexibleNullableRecord.java
@@ -0,0 +1,44 @@
+/*
+ * 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.4.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;
+
+/**
+ * FlexibleNullableRecord.
+ *
+ * @param field1 Boolean.
+ */
+public record FlexibleNullableRecord(
+ Boolean field1) {
+
+ @JsonCreator
+ public FlexibleNullableRecord(
+ final Boolean field1) {
+ this.field1 = field1;
+ }
+}
diff --git a/tests/target/generated-sources/openapi/src/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/FlexibleRecord.java b/tests/target/generated-sources/openapi/src/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/FlexibleRecord.java
new file mode 100644
index 000000000..fc5834da8
--- /dev/null
+++ b/tests/target/generated-sources/openapi/src/src/gen/java/main/io/github/chrimle/o2jrm/webclient/standard/FlexibleRecord.java
@@ -0,0 +1,46 @@
+/*
+ * 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.4.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 io.github.chrimle.o2jrm.webclient.standard.FlexibleNonNullRecord;
+import io.github.chrimle.o2jrm.webclient.standard.FlexibleNullableRecord;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * FlexibleRecord.
+ *
+ * @param field1 Boolean.
+ */
+public record FlexibleRecord(
+ Boolean field1) {
+
+ @JsonCreator
+ public FlexibleRecord(
+ final Boolean field1) {
+ this.field1 = field1;
+ }
+}