fix oneOf merging, upgrade dependencies (#16992)

* fix oneOf enums

* upgrade jackson dependencies

* upgrade openRewrite dependency
This commit is contained in:
martin-mfg 2023-11-07 06:13:37 +01:00 committed by GitHub
parent a31b38b223
commit c301004b7e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 31 additions and 14 deletions

View File

@ -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

View File

@ -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

10
pom.xml
View File

@ -1452,9 +1452,9 @@
<groovy.version>3.0.9</groovy.version>
<guava.version>32.1.3-jre</guava.version>
<handlebars-java.version>4.3.1</handlebars-java.version>
<jackson-threetenbp.version>2.14.3</jackson-threetenbp.version>
<jackson-databind.version>2.14.0</jackson-databind.version>
<jackson.version>2.14.0</jackson.version>
<jackson-threetenbp.version>2.15.2</jackson-threetenbp.version>
<jackson-databind.version>2.15.3</jackson-databind.version>
<jackson.version>2.15.3</jackson.version>
<jacoco.version>0.8.10</jacoco.version>
<jmustache.version>1.15</jmustache.version>
<junit.version>4.13.2</junit.version>
@ -1470,7 +1470,7 @@
<maven-site-plugin.version>4.0.0-M8</maven-site-plugin.version>
<maven-surefire-plugin.version>3.0.0</maven-surefire-plugin.version>
<mockito.version>4.10.0</mockito.version>
<openrewrite.version>7.39.1</openrewrite.version>
<openrewrite.version>8.8.3</openrewrite.version>
<pmd-plugin.version>3.12.0</pmd-plugin.version>
<reflections.version>0.10.2</reflections.version>
<rxgen.version>1.4</rxgen.version>
@ -1478,7 +1478,7 @@
<slf4j.version>1.7.36</slf4j.version>
<spotbugs-plugin.version>3.1.12.2</spotbugs-plugin.version>
<swagger-parser-groupid.version>io.swagger.parser.v3</swagger-parser-groupid.version>
<swagger-parser.version>2.1.14</swagger-parser.version>
<swagger-parser.version>2.1.18</swagger-parser.version>
<testng.version>7.5</testng.version>
<violations-maven-plugin.version>1.34</violations-maven-plugin.version>
<wagon-ssh-external.version>3.4.3</wagon-ssh-external.version>