Skip to content

Commit fd31168

Browse files
committed
refs #1275 - implemente flattenComposedSchema option, cleanup and fix
1 parent eefb7f5 commit fd31168

File tree

5 files changed

+119
-76
lines changed

5 files changed

+119
-76
lines changed

modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/OpenAPIV3Parser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ public SwaggerParseResult readContents(String swaggerAsString, List<Authorizatio
207207
result.setOpenAPI(new OpenAPIResolver(result.getOpenAPI(), auth, null).resolve());
208208
new ResolverFully(options.isResolveCombinators()).resolveFully(result.getOpenAPI());
209209
} else if (options.isFlatten()) {
210-
InlineModelResolver inlineModelResolver = new InlineModelResolver();
210+
InlineModelResolver inlineModelResolver = new InlineModelResolver(options.isFlattenComposedSchemas());
211211
inlineModelResolver.setSkipMatches(options.isSkipMatches());
212212
inlineModelResolver.flatten(result.getOpenAPI());
213213
}

modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/OpenAPIV3ParserTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public void testFlattenComposedSchema() {
7474
options.setResolve(true);
7575
options.setFlatten(true);
7676
options.setFlattenComposedSchemas(true);
77-
SwaggerParseResult parseResult = openApiParser.readLocation("flattenComposedSchema.yaml", null, options);
77+
SwaggerParseResult parseResult = openApiParser.readLocation("flattenComposedSchemaComplete.json", null, options);
7878

7979
OpenAPI openAPI = parseResult.getOpenAPI();
8080
assertNotNull(openAPI.getComponents().getSchemas().get("val_Members_val_member"));
@@ -89,11 +89,11 @@ public void testNotFlattenComposedSchema() {
8989
options.setResolve(true);
9090
options.setFlatten(true);
9191

92-
SwaggerParseResult parseResult = openApiParser.readLocation("flattenComposedSchema.yaml", null, options);
92+
SwaggerParseResult parseResult = openApiParser.readLocation("flattenComposedSchemaComplete.json", null, options);
9393

9494
OpenAPI openAPI = parseResult.getOpenAPI();
9595
assertNull(openAPI.getComponents().getSchemas().get("val_Members_val_member"));
96-
assertNull(openAPI.getComponents().getSchemas().get("val_MemberProducts_val_product"));
96+
assertNotNull(openAPI.getComponents().getSchemas().get("val_MemberProducts_val_product"));
9797

9898
}
9999

modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/util/InlineModelResolverTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1347,6 +1347,5 @@ public void testInlineItemsSchema() throws Exception {
13471347

13481348
assertNotNull(openAPI);
13491349
assertNotNull(openAPI.getComponents().getSchemas().get("inline_response_200"));
1350-
Yaml.prettyPrint(openAPI);
13511350
}
13521351
}

modules/swagger-parser-v3/src/test/resources/flattenComposedSchema.yaml

Lines changed: 0 additions & 71 deletions
This file was deleted.
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
{
2+
"openapi": "3.0.2",
3+
"info": {
4+
"title": "test",
5+
"version": "1.0.0"
6+
},
7+
"paths": {
8+
"/validation": {
9+
"post": {
10+
"tags": [
11+
"mytag"
12+
],
13+
"summary": "summary",
14+
"requestBody": {
15+
"required": true,
16+
"content": {
17+
"application/json": {
18+
"schema": {
19+
"$ref": "#/components/schemas/mtg_Message"
20+
}
21+
}
22+
}
23+
},
24+
"responses": {
25+
"200": {
26+
"description": "desc",
27+
"content": {
28+
"application/json": {
29+
"schema": {
30+
"$ref": "#/components/schemas/mtg_Message"
31+
}
32+
}
33+
}
34+
}
35+
}
36+
}
37+
}
38+
},
39+
"components": {
40+
"schemas": {
41+
"mtg_Message": {
42+
"type": "object"
43+
},
44+
"val_MemberProducts": {
45+
"additionalProperties": false,
46+
"description": "val_MemberProducts desc",
47+
"properties": {
48+
"val_product": {
49+
"items": {
50+
"type": "object",
51+
"properties": {
52+
"val_unique_reference1": {
53+
"type": "string"
54+
}
55+
}
56+
},
57+
"maxItems": 4,
58+
"minItems": 1,
59+
"type": "array"
60+
}
61+
},
62+
"required": [
63+
"val_product"
64+
],
65+
"type": "object"
66+
},
67+
"val_Members": {
68+
"additionalProperties": false,
69+
"description": "valmembers desc",
70+
"properties": {
71+
"val_member": {
72+
"description": "valmember desc",
73+
"items": {
74+
"type": "object",
75+
"oneOf": [
76+
{
77+
"$ref": "#/components/schemas/val_MemberChoice1"
78+
},
79+
{
80+
"$ref": "#/components/schemas/val_MemberChoice2"
81+
}
82+
]
83+
},
84+
"minItems": 1,
85+
"type": "array"
86+
}
87+
},
88+
"required": [
89+
"val_member"
90+
],
91+
"type": "object"
92+
},
93+
"val_MemberChoice1": {
94+
"additionalProperties": false,
95+
"description": "val_MemberChoice1 desc",
96+
"properties": {
97+
"val_unique_reference1": {
98+
"type": "string"
99+
}
100+
},
101+
"type": "object"
102+
},
103+
"val_MemberChoice2": {
104+
"additionalProperties": false,
105+
"description": "val_MemberChoice2 desc",
106+
"properties": {
107+
"val_unique_reference2": {
108+
"type": "string"
109+
}
110+
},
111+
"type": "object"
112+
}
113+
}
114+
}
115+
}

0 commit comments

Comments
 (0)