Skip to content

Commit 64150eb

Browse files
authored
Merge pull request #2 from swagger-api/master
latest changes
2 parents f8c6f35 + 68e0904 commit 64150eb

File tree

12 files changed

+255
-88
lines changed

12 files changed

+255
-88
lines changed

modules/swagger-parser-v2-converter/src/main/java/io/swagger/v3/parser/converter/SwaggerConverter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -574,6 +574,7 @@ public Operation convert(io.swagger.models.Operation v2Operation) {
574574
}
575575
operation.setDeprecated(v2Operation.isDeprecated());
576576
operation.setOperationId(v2Operation.getOperationId());
577+
operation.setExtensions(convert(v2Operation.getVendorExtensions()));
577578

578579
operation.setTags(v2Operation.getTags());
579580

@@ -585,6 +586,7 @@ public Operation convert(io.swagger.models.Operation v2Operation) {
585586
formParams.add(param);
586587
} else if ("body".equals(param.getIn())) {
587588
operation.setRequestBody(convertParameterToRequestBody(param, v2Operation.getConsumes()));
589+
operation.addExtension("x-codegen-request-body-name", param.getName());
588590
} else {
589591
Parameter convert = convert(param);
590592
String $ref = convert.get$ref();
@@ -631,8 +633,6 @@ public Operation convert(io.swagger.models.Operation v2Operation) {
631633
operation.setSecurity(convertSecurityRequirementsMap(v2Operation.getSecurity()));
632634
}
633635

634-
operation.setExtensions(convert(v2Operation.getVendorExtensions()));
635-
636636
return operation;
637637
}
638638

modules/swagger-parser-v2-converter/src/test/java/io/swagger/parser/test/V2ConverterTest.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -678,8 +678,15 @@ public void testIssue758() throws Exception {
678678
public void testIssue762() throws Exception {
679679
final OpenAPI oas = getConvertedOpenAPIFromJsonFile(ISSUE_762_JSON);
680680
assertNotNull(oas);
681-
}
682-
681+
}
682+
683+
@Test(description = "OpenAPI v2 Converter: Ensure body name is preserved in x-codegen-request-body-name extension")
684+
public void testPreserveBodyParameterName() throws Exception {
685+
final OpenAPI oas = getConvertedOpenAPIFromJsonFile(ISSUE_762_JSON);
686+
assertNotNull(oas);
687+
assertEquals(oas.getPaths().get("/").getPut().getExtensions().get("x-codegen-request-body-name"), "pet");
688+
}
689+
683690
@Test(description = "requestBody not correctly populated when Parameters is a list of $refs (OAS 2 to 3 conversion)")
684691
public void testIssue765() throws Exception {
685692
final OpenAPI oas = getConvertedOpenAPIFromJsonFile(ISSUE_765_YAML);

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -183,12 +183,12 @@ public SwaggerParseResult readContents(String swaggerAsString, List<Authorizatio
183183
if(options != null) {
184184
if (options.isResolve()) {
185185
OpenAPIDeserializer deserializer = new OpenAPIDeserializer();
186-
JsonNode rootNode = mapper.readTree(swaggerAsString.getBytes());
186+
JsonNode rootNode = mapper.readTree(swaggerAsString);
187187
result = deserializer.deserialize(rootNode);
188188
OpenAPIResolver resolver = new OpenAPIResolver(result.getOpenAPI(), auth, null);
189189
result.setOpenAPI(resolver.resolve());
190190
}else{
191-
JsonNode rootNode = mapper.readTree(swaggerAsString.getBytes());
191+
JsonNode rootNode = mapper.readTree(swaggerAsString);
192192
result = new OpenAPIDeserializer().deserialize(rootNode);
193193
}
194194
if (options.isResolveFully()) {
@@ -200,7 +200,7 @@ public SwaggerParseResult readContents(String swaggerAsString, List<Authorizatio
200200
inlineModelResolver.flatten(result.getOpenAPI());
201201
}
202202
}else{
203-
JsonNode rootNode = mapper.readTree(swaggerAsString.getBytes());
203+
JsonNode rootNode = mapper.readTree(swaggerAsString);
204204
result = new OpenAPIDeserializer().deserialize(rootNode);
205205
}
206206
} catch (Exception e) {

modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/InlineModelResolver.java

Lines changed: 68 additions & 73 deletions
Large diffs are not rendered by default.

modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/OpenAPIDeserializer.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1958,9 +1958,9 @@ public OAuthFlow getOAuthFlow(String oAuthFlowType, ObjectNode node, String loca
19581958
JsonNode scopeValue = scopesObject.get(name);
19591959
if (scopesObject!= null){
19601960
scope.addString(name,scopeValue.asText());
1961-
oAuthFlow.setScopes(scope);
19621961
}
19631962
}
1963+
oAuthFlow.setScopes(scope);
19641964

19651965
Map <String,Object> extensions = getExtensions(node);
19661966
if(extensions != null && extensions.size() > 0) {
@@ -2100,10 +2100,12 @@ public Schema getSchema(ObjectNode node, String location, ParseResult result){
21002100
: additionalPropertiesBoolean;
21012101

21022102
if(additionalProperties != null) {
2103-
schema =
2104-
additionalProperties.equals( Boolean.FALSE)
2105-
? new ObjectSchema()
2106-
: new MapSchema();
2103+
if (schema == null) {
2104+
schema =
2105+
additionalProperties.equals(Boolean.FALSE)
2106+
? new ObjectSchema()
2107+
: new MapSchema();
2108+
}
21072109
schema.setAdditionalProperties( additionalProperties);
21082110
}
21092111

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,20 @@ public class OpenAPIV3ParserTest {
6666
protected int serverPort = getDynamicPort();
6767
protected WireMockServer wireMockServer;
6868

69+
@Test
70+
public void testIssue1190() {
71+
OpenAPIV3Parser openApiParser = new OpenAPIV3Parser();
72+
ParseOptions options = new ParseOptions();
73+
options.setResolve(true);
74+
options.setFlatten(true);
75+
SwaggerParseResult parseResult = openApiParser.readLocation("issue1190/issue1190.yaml", null, options);
76+
77+
OpenAPI openAPI = parseResult.getOpenAPI();
78+
assertNotNull(openAPI.getComponents().getSchemas().get("SomeObj_lorem"));
79+
}
80+
81+
82+
6983
@Test
7084
public void testIssue1147() {
7185
ParseOptions options = new ParseOptions();

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

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1337,4 +1337,17 @@ public void testArbitraryObjectModelWithArrayInlineWithTitle() {
13371337
ObjectSchema op = (ObjectSchema) inlineProp;
13381338
assertNull(op.getProperties());
13391339
}
1340-
}
1340+
1341+
1342+
@Test(description = "https://github.com/swagger-api/swagger-parser/issues/1200")
1343+
public void testInlineItemsSchema() throws Exception {
1344+
ParseOptions options = new ParseOptions();
1345+
options.setFlatten(true);
1346+
OpenAPI openAPI = new OpenAPIV3Parser().read("flatten.json",null, options);
1347+
1348+
System.out.println(openAPI);
1349+
1350+
assertNotNull(openAPI);
1351+
assertNotNull(openAPI.getComponents().getSchemas().get("inline_response_200"));
1352+
}
1353+
}

modules/swagger-parser-v3/src/test/resources/flatten.json

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,59 @@
11
{
22
"openapi" : "3.0.1",
3+
"paths" : {
4+
"/employees" : {
5+
"get" : {
6+
"description" : "Obtain information about employees from HR database",
7+
"parameters" : [ {
8+
"name" : "bodylimit",
9+
"in" : "query",
10+
"schema" : {
11+
"type" : "integer",
12+
"minimum" : 10,
13+
"maximum" : 20,
14+
"example" : 8
15+
}
16+
}, {
17+
"name" : "pagelimit",
18+
"in" : "query",
19+
"schema" : {
20+
"type" : "integer",
21+
"minimum" : 1,
22+
"maximum" : 5,
23+
"example" : 2
24+
}
25+
} ],
26+
"responses" : {
27+
"200" : {
28+
"description" : "successully returned number of employees",
29+
"content" : {
30+
"application/json" : {
31+
"schema" : {
32+
"type" : "array",
33+
"items" : {
34+
"properties" : {
35+
"id" : {
36+
"type" : "integer",
37+
"example" : 4
38+
},
39+
"employee name" : {
40+
"type" : "string",
41+
"example" : "vijay"
42+
},
43+
"employee title" : {
44+
"type" : "string",
45+
"example" : "QA"
46+
}
47+
}
48+
}
49+
}
50+
}
51+
}
52+
}
53+
}
54+
}
55+
}
56+
},
357
"components" : {
458
"schemas" : {
559
"ReturnInformation": {
@@ -47,4 +101,4 @@
47101
}
48102
}
49103
}
50-
}
104+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
openapi: 3.0.0
2+
info:
3+
version: 1.0.0
4+
title: Issue 1190
5+
license:
6+
name: Apache-2.0
7+
url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
8+
paths:
9+
/example:
10+
get:
11+
operationId: example
12+
responses:
13+
'200':
14+
description: successful operation
15+
content:
16+
'application/json':
17+
schema:
18+
$ref: "#/components/schemas/SomeObj"
19+
components:
20+
schemas:
21+
SomeObj:
22+
type: object
23+
properties:
24+
lorem:
25+
type: array
26+
minItems: 1
27+
additionalProperties: false
28+
items:
29+
type: object
30+
properties:
31+
firstName:
32+
type: string
33+
lastName:
34+
type: string

modules/swagger-parser/src/test/java/io/swagger/parser/OpenAPIParserTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import io.swagger.v3.oas.models.Components;
44
import io.swagger.v3.oas.models.OpenAPI;
55
import io.swagger.v3.oas.models.media.ArraySchema;
6+
import io.swagger.v3.oas.models.media.ObjectSchema;
67
import io.swagger.v3.oas.models.media.Schema;
78
import io.swagger.v3.oas.models.PathItem;
89

@@ -538,6 +539,17 @@ public void testIssue1003_ExtensionsClassloader() {
538539
}
539540
assertNotNull(api);
540541
}
542+
543+
@Test
544+
public void testIssue1086() {
545+
OpenAPIParser openApiParser = new OpenAPIParser();
546+
ParseOptions options = new ParseOptions();
547+
OpenAPI openAPI = openApiParser.readLocation("issue1086.yaml", null, options).getOpenAPI();
548+
Map<String, Schema> schemas = openAPI.getComponents().getSchemas();
549+
ObjectSchema schema = (ObjectSchema) schemas.get("AssessCandidate").getProperties().get("test_results");
550+
Schema score = schema.getProperties().get("score");
551+
assertEquals(score.getMultipleOf().intValue(), 1);
552+
}
541553

542554
}
543555

0 commit comments

Comments
 (0)