Skip to content

Commit

Permalink
fix oneOf merging, upgrade dependencies (#16992)
Browse files Browse the repository at this point in the history
* fix oneOf enums

* upgrade jackson dependencies

* upgrade openRewrite dependency
  • Loading branch information
martin-mfg committed Nov 7, 2023
1 parent a31b38b commit c301004
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
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;
Expand Down Expand Up @@ -924,12 +925,7 @@ public String toEnumVarName(String value, String datatype) {
}
}

/**
* 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)) {
Expand All @@ -939,8 +935,16 @@ public void setOpenAPI(OpenAPI openAPI) {
}
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;
Expand Down Expand Up @@ -2894,7 +2898,11 @@ private void mergeProperties(Map<String, Schema> existingProperties, Map<String,
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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -671,6 +671,15 @@ public void testOneOfEnum() {
}
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
Expand Down
10 changes: 5 additions & 5 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand All @@ -1470,15 +1470,15 @@
<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>
<scala-maven-plugin.version>4.6.1</scala-maven-plugin.version>
<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>
Expand Down

0 comments on commit c301004

Please sign in to comment.