From 2eef15c60fbdb188c1474b8736585df0dbfa78a5 Mon Sep 17 00:00:00 2001 From: Jean-Pierre Portier Date: Mon, 22 Dec 2025 14:47:10 +0100 Subject: [PATCH 1/2] fix (OpenAPINormalizer): Removed reset of OAS content --- .../main/java/org/openapitools/codegen/OpenAPINormalizer.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/OpenAPINormalizer.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/OpenAPINormalizer.java index b71ca5b96808..bb9f069d38af 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/OpenAPINormalizer.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/OpenAPINormalizer.java @@ -1511,10 +1511,6 @@ protected Schema processSimplifyOneOf(Schema schema) { schema = simplifyOneOfAnyOfWithOnlyOneNonNullSubSchema(openAPI, schema, oneOfSchemas); - if (ModelUtils.isIntegerSchema(schema) || ModelUtils.isNumberSchema(schema) || ModelUtils.isStringSchema(schema)) { - // TODO convert oneOf const to enum - schema.setOneOf(null); - } } return schema; From 7249459563f67b4099b72613ad3e0a4124c50544 Mon Sep 17 00:00:00 2001 From: Jean-Pierre Portier Date: Mon, 26 Jan 2026 18:22:42 +0100 Subject: [PATCH 2/2] feat (Normalizer): Reset from Normalizer with 3.0 only. Fix tests --- .../java/org/openapitools/codegen/OpenAPINormalizer.java | 8 +++++++- .../org/openapitools/codegen/OpenAPINormalizerTest.java | 5 +++-- .../src/test/resources/3_1/simplifyOneOfAnyOf_test.yaml | 1 + 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/OpenAPINormalizer.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/OpenAPINormalizer.java index bb9f069d38af..8e4994dd96be 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/OpenAPINormalizer.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/OpenAPINormalizer.java @@ -1510,7 +1510,13 @@ protected Schema processSimplifyOneOf(Schema schema) { } schema = simplifyOneOfAnyOfWithOnlyOneNonNullSubSchema(openAPI, schema, oneOfSchemas); - + if (ModelUtils.isIntegerSchema(schema) || ModelUtils.isNumberSchema(schema) || ModelUtils.isStringSchema(schema)) { + if (schema.getSpecVersion().equals(SpecVersion.V30)) { + schema.setOneOf(null); + } //else { + // TODO convert oneOf const/deprecated to enum + // } + } } return schema; diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/OpenAPINormalizerTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/OpenAPINormalizerTest.java index eb85fed62eab..54553ca96a71 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/OpenAPINormalizerTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/OpenAPINormalizerTest.java @@ -1101,8 +1101,9 @@ public void testOpenAPINormalizerSimplifyOneOfAnyOf31Spec() { assertEquals(schema14.getType(), null); Schema schema16 = openAPI.getComponents().getSchemas().get("TypeIntegerWithOneOf"); - // oneOf should have been removed as the schema is essentially a primitive type - assertEquals(schema16.getOneOf(), null); + assertEquals(schema16.getOneOf().size(),3); + assertEquals(((Schema) schema16.getOneOf().get(0)).getConst(), 1); + assertEquals(((Schema) schema16.getOneOf().get(0)).getDeprecated(), true); Schema schema18 = openAPI.getComponents().getSchemas().get("OneOfNullAndRef3"); // original oneOf removed and simplified to just $ref (oneOf sub-schema) instead diff --git a/modules/openapi-generator/src/test/resources/3_1/simplifyOneOfAnyOf_test.yaml b/modules/openapi-generator/src/test/resources/3_1/simplifyOneOfAnyOf_test.yaml index d093a7efc4de..bf8dc407b9ef 100644 --- a/modules/openapi-generator/src/test/resources/3_1/simplifyOneOfAnyOf_test.yaml +++ b/modules/openapi-generator/src/test/resources/3_1/simplifyOneOfAnyOf_test.yaml @@ -130,6 +130,7 @@ components: - title: ITEM A description: This permission is for item A. const: 1 + deprecated: true - title: ITEM B description: This permission is for item B. const: 2