Skip to content

Commit 80e32eb

Browse files
committed
refs #3345 - fixes logic and tests
1 parent dcb8a64 commit 80e32eb

File tree

3 files changed

+27
-2
lines changed

3 files changed

+27
-2
lines changed

modules/swagger-core/src/main/java/io/swagger/v3/core/filter/SpecFilter.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -291,11 +291,10 @@ private void addSchemaRef(Schema schema, Set<String> referencedDefinitions) {
291291
referencedDefinitions.add(schema.get$ref());
292292
return;
293293
}
294-
if (schema.getDiscriminator() != null) {
294+
if (schema.getDiscriminator() != null && schema.getDiscriminator().getMapping() != null) {
295295
for (Map.Entry<String, String> mapping: schema.getDiscriminator().getMapping().entrySet()) {
296296
referencedDefinitions.add(mapping.getValue());
297297
}
298-
return;
299298
}
300299

301300
if (schema.getProperties() != null) {

modules/swagger-core/src/test/java/io/swagger/v3/core/filter/SpecFilterTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,8 @@ public void shouldRemoveBrokenNestedRefs() throws IOException {
268268
assertNotNull(filtered.getComponents().getSchemas().get("oneOfNestedParentB"));
269269
assertNotNull(filtered.getComponents().getSchemas().get("discriminatorParent"));
270270
assertNotNull(filtered.getComponents().getSchemas().get("discriminatorMatchedChildA"));
271+
assertNotNull(filtered.getComponents().getSchemas().get("discriminatorRefProperty"));
272+
assertNotNull(filtered.getComponents().getSchemas().get("discriminatorParentRefProperty"));
271273
assertNotNull(filtered.getComponents().getSchemas().get("discriminatorMatchedChildB"));
272274
}
273275

modules/swagger-core/src/test/resources/specFiles/petstore-3.0-v2-ticket-3303.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,18 @@
404404
}
405405
},
406406
"discriminatorMatchedChildA": {
407+
"type": "object",
408+
"properties": {
409+
"parentBStuff": {
410+
"type": "integer",
411+
"format": "int64"
412+
},
413+
"discriminatorRefProperty": {
414+
"$ref": "#/components/schemas/discriminatorRefProperty"
415+
}
416+
}
417+
},
418+
"discriminatorRefProperty": {
407419
"type": "object",
408420
"properties": {
409421
"parentBStuff": {
@@ -421,12 +433,24 @@
421433
}
422434
}
423435
},
436+
"discriminatorParentRefProperty": {
437+
"type": "object",
438+
"properties": {
439+
"parentBStuff": {
440+
"type": "integer",
441+
"format": "int64"
442+
}
443+
}
444+
},
424445
"discriminatorParent": {
425446
"type": "object",
426447
"properties": {
427448
"parentBStuff": {
428449
"type": "integer",
429450
"format": "int64"
451+
},
452+
"discriminatorParentRefProperty": {
453+
"$ref": "#/components/schemas/discriminatorParentRefProperty"
430454
}
431455
},
432456
"discriminator": {

0 commit comments

Comments
 (0)