From c301004b7e5956f4bdaab2dfc9a57ade45fddbd8 Mon Sep 17 00:00:00 2001
From: martin-mfg <2026226+martin-mfg@users.noreply.github.com>
Date: Tue, 7 Nov 2023 06:13:37 +0100
Subject: [PATCH] fix oneOf merging, upgrade dependencies (#16992)
* fix oneOf enums
* upgrade jackson dependencies
* upgrade openRewrite dependency
---
.../openapitools/codegen/DefaultCodegen.java | 26 ++++++++++++-------
.../codegen/DefaultCodegenTest.java | 9 +++++++
pom.xml | 10 +++----
3 files changed, 31 insertions(+), 14 deletions(-)
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
index d8ee95b5ae9..73d39c8bc82 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
@@ -26,6 +26,7 @@ import com.google.common.collect.ImmutableMap;
import com.samskivert.mustache.Mustache;
import com.samskivert.mustache.Mustache.Compiler;
import com.samskivert.mustache.Mustache.Lambda;
+import io.swagger.v3.core.util.AnnotationsUtils;
import io.swagger.v3.core.util.Json;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.Operation;
@@ -924,12 +925,7 @@ public class DefaultCodegen implements CodegenConfig {
}
}
- /**
- * Set the OpenAPI document.
- * This method is invoked when the input OpenAPI document has been parsed and validated.
- */
- @Override
- public void setOpenAPI(OpenAPI openAPI) {
+ public boolean specVersionGreaterThanOrEqualTo310(OpenAPI openAPI) {
String originalSpecVersion;
String xOriginalSwaggerVersion = "x-original-swagger-version";
if (openAPI.getExtensions() != null && !openAPI.getExtensions().isEmpty() && openAPI.getExtensions().containsValue(xOriginalSwaggerVersion)) {
@@ -939,8 +935,16 @@ public class DefaultCodegen implements CodegenConfig {
}
Integer specMajorVersion = Integer.parseInt(originalSpecVersion.substring(0, 1));
Integer specMinorVersion = Integer.parseInt(originalSpecVersion.substring(2, 3));
- boolean specVersionGreaterThanOrEqualTo310 = (specMajorVersion == 3 && specMinorVersion >= 1);
- if (specVersionGreaterThanOrEqualTo310) {
+ return specMajorVersion == 3 && specMinorVersion >= 1;
+ }
+
+ /**
+ * Set the OpenAPI document.
+ * This method is invoked when the input OpenAPI document has been parsed and validated.
+ */
+ @Override
+ public void setOpenAPI(OpenAPI openAPI) {
+ if (specVersionGreaterThanOrEqualTo310(openAPI)) {
LOGGER.warn(UNSUPPORTED_V310_SPEC_MSG);
}
this.openAPI = openAPI;
@@ -2894,7 +2898,11 @@ public class DefaultCodegen implements CodegenConfig {
if (null != existingProperties && null != newProperties) {
Schema existingType = existingProperties.get("type");
Schema newType = newProperties.get("type");
- existingProperties.putAll(newProperties);
+ newProperties.forEach((key, value) ->
+ existingProperties.put(
+ key,
+ AnnotationsUtils.clone(value, specVersionGreaterThanOrEqualTo310(openAPI))
+ ));
if (null != existingType && null != newType && null != newType.getEnum() && !newType.getEnum().isEmpty()) {
for (Object e : newType.getEnum()) {
// ensure all interface enum types are added to schema
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java
index 477cd09986a..8dbeeaba4ba 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java
@@ -671,6 +671,15 @@ public class DefaultCodegenTest {
}
Assert.assertTrue(typeSeen);
Assert.assertTrue(typeContainsEnums);
+
+ Assert.assertEquals(
+ ((StringSchema) openAPI.getComponents().getSchemas().get("Dog").getProperties().get("type")).getEnum().size(),
+ 1
+ );
+ Assert.assertEquals(
+ ((StringSchema) openAPI.getComponents().getSchemas().get("Cat").getProperties().get("type")).getEnum().size(),
+ 1
+ );
}
@Test
diff --git a/pom.xml b/pom.xml
index 2fe01bad2d9..8ba0b3f2111 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1452,9 +1452,9 @@
3.0.9
32.1.3-jre
4.3.1
- 2.14.3
- 2.14.0
- 2.14.0
+ 2.15.2
+ 2.15.3
+ 2.15.3
0.8.10
1.15
4.13.2
@@ -1470,7 +1470,7 @@
4.0.0-M8
3.0.0
4.10.0
- 7.39.1
+ 8.8.3
3.12.0
0.10.2
1.4
@@ -1478,7 +1478,7 @@
1.7.36
3.1.12.2
io.swagger.parser.v3
- 2.1.14
+ 2.1.18
7.5
1.34
3.4.3