fix null type check when simplifying any type (#18504)

This commit is contained in:
William Cheng
2024-04-26 13:16:59 +08:00
committed by GitHub
parent a5ccd7a77e
commit 1751163f36
3 changed files with 31 additions and 2 deletions

View File

@@ -943,7 +943,13 @@ public class OpenAPINormalizer {
if (oneOfSchemas.size() == 6) {
TreeSet<String> ts = new TreeSet<>();
for (Schema s: oneOfSchemas) {
ts.add(ModelUtils.getType(s));
s = ModelUtils.getReferencedSchema(openAPI, s);
String type = ModelUtils.getType(s);
if (type == null) {
LOGGER.debug("Error null type found in schema when simplifying any type with 6 sub-schemas: {}", s);
} else {
ts.add(type);
}
}
if (ts.equals(anyTypeTreeSet)) {
@@ -1068,7 +1074,13 @@ public class OpenAPINormalizer {
if (anyOfSchemas.size() == 6) {
TreeSet<String> ts = new TreeSet<>();
for (Schema s: anyOfSchemas) {
ts.add(ModelUtils.getType(s));
s = ModelUtils.getReferencedSchema(openAPI, s);
String type = ModelUtils.getType(s);
if (type == null) {
LOGGER.debug("Error null type found in schema when simplifying any type with 6 sub-schemas: {}", s);
} else {
ts.add(type);
}
}
if (ts.equals(anyTypeTreeSet)) {

View File

@@ -178,6 +178,9 @@ public class OpenAPINormalizerTest {
Schema schema13 = openAPI.getComponents().getSchemas().get("OneOfAnyType");
assertEquals(schema13.getOneOf().size(), 6);
Schema schema15 = openAPI.getComponents().getSchemas().get("AnyOfAnyTypeWithRef");
assertEquals(schema15.getAnyOf().size(), 6);
Map<String, String> options = new HashMap<>();
options.put("SIMPLIFY_ONEOF_ANYOF", "true");
OpenAPINormalizer openAPINormalizer = new OpenAPINormalizer(openAPI, options);
@@ -216,6 +219,9 @@ public class OpenAPINormalizerTest {
assertEquals(schema14.getOneOf(), null);
assertEquals(schema14.getType(), null);
Schema schema16 = openAPI.getComponents().getSchemas().get("AnyOfAnyTypeWithRef");
assertEquals(schema16.getAnyOf(), null);
assertEquals(schema16.getType(), null);
}
@Test

View File

@@ -103,6 +103,17 @@ components:
- type: string
- type: number
- type: integer
AnyOfAnyTypeWithRef:
anyOf:
- type: boolean
- type: array
items: { }
- type: object
- type: string
- type: number
- $ref: '#/components/schemas/IntegerRef'
IntegerRef:
type: integer
OneOfAnyType:
oneOf:
- type: object