Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix oneOf merging, upgrade dependencies #16992

Merged
merged 3 commits into from
Nov 7, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 @@ -1451,9 +1451,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 @@ -1469,15 +1469,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
Loading