Skip to content
This repository was archived by the owner on Nov 24, 2022. It is now read-only.

Commit 10d37b9

Browse files
committed
Merge remote-tracking branch 'origin/master' into 2.0-OpenAPITools
Conflicts: pom.xml
2 parents 9c163f3 + 5c480c5 commit 10d37b9

15 files changed

Lines changed: 243 additions & 18 deletions

File tree

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ You can include this library from Sonatype OSS for SNAPSHOTS, or Maven central f
124124
<dependency>
125125
<groupId>io.swagger.parser.v3</groupId>
126126
<artifactId>swagger-parser</artifactId>
127-
<version>2.0.9-SNAPSHOT</version>
127+
<version>2.0.10-SNAPSHOT</version>
128128
</dependency>
129129

130130
```
@@ -135,7 +135,7 @@ or
135135
<dependency>
136136
<groupId>io.swagger.parser.v3</groupId>
137137
<artifactId>swagger-parser</artifactId>
138-
<version>2.0.9-SNAPSHOT</version>
138+
<version>2.0.10-SNAPSHOT</version>
139139
</dependency>
140140

141141
```

modules/swagger-parser-core/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<groupId>org.openapitools.swagger.parser</groupId>
55
<artifactId>swagger-parser-project</artifactId>
6-
<version>2.0.9-SNAPSHOT</version>
6+
<version>2.0.10-SNAPSHOT</version>
77
<relativePath>../..</relativePath>
88
</parent>
99
<modelVersion>4.0.0</modelVersion>

modules/swagger-parser-v2-converter/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<groupId>org.openapitools.swagger.parser</groupId>
55
<artifactId>swagger-parser-project</artifactId>
6-
<version>2.0.9-SNAPSHOT</version>
6+
<version>2.0.10-SNAPSHOT</version>
77
<relativePath>../..</relativePath>
88
</parent>
99
<modelVersion>4.0.0</modelVersion>

modules/swagger-parser-v3/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<groupId>org.openapitools.swagger.parser</groupId>
55
<artifactId>swagger-parser-project</artifactId>
6-
<version>2.0.9-SNAPSHOT</version>
6+
<version>2.0.10-SNAPSHOT</version>
77
<relativePath>../..</relativePath>
88
</parent>
99
<modelVersion>4.0.0</modelVersion>

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -422,6 +422,8 @@ public Schema modelFromProperty(ArraySchema object, @SuppressWarnings("unused")
422422
public Schema modelFromProperty(ObjectSchema object, String path) {
423423
String description = object.getDescription();
424424
String example = null;
425+
List<String> requiredList = object.getRequired();
426+
425427

426428
Object obj = object.getExample();
427429
if (obj != null) {
@@ -437,6 +439,7 @@ public Schema modelFromProperty(ObjectSchema object, String path) {
437439
model.setName(name);
438440
model.setXml(xml);
439441
model.setType(object.getType());
442+
model.setRequired(requiredList);
440443

441444
if (properties != null) {
442445
flattenProperties(properties, path);

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

Lines changed: 39 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1657,6 +1657,7 @@ public Header getHeader(ObjectNode headerNode, String location, ParseResult resu
16571657
return header;
16581658
}
16591659

1660+
16601661
public Object getAnyExample(String nodeKey,ObjectNode node, String location, ParseResult result ){
16611662
JsonNode example = node.get(nodeKey);
16621663
if (example != null) {
@@ -1673,7 +1674,6 @@ public Object getAnyExample(String nodeKey,ObjectNode node, String location, Par
16731674
BigDecimal bigDecimalExample = getBigDecimal(nodeKey, node, false, location, result);
16741675
if (bigDecimalExample != null) {
16751676
return bigDecimalExample;
1676-
16771677
}
16781678
}
16791679
} else if (example.getNodeType().equals(JsonNodeType.OBJECT)) {
@@ -1686,6 +1686,11 @@ public Object getAnyExample(String nodeKey,ObjectNode node, String location, Par
16861686
if (arrayValue != null) {
16871687
return arrayValue;
16881688
}
1689+
} else if (example.getNodeType().equals(JsonNodeType.BOOLEAN)){
1690+
Boolean bool = getBoolean(nodeKey,node,false,location,result);
1691+
if (bool != null){
1692+
return bool;
1693+
}
16891694
}
16901695
}
16911696
return null;
@@ -2250,12 +2255,41 @@ public Schema getSchema(ObjectNode node, String location, ParseResult result){
22502255
schema.setFormat(value);
22512256
}
22522257

2253-
value = getString("default", node, false, location, result);
2254-
if (StringUtils.isNotBlank(value)) {
2255-
schema.setDefault(value);
2258+
//sets default value according to the schema type
2259+
if(node.get("default")!= null) {
2260+
if(schema.getType().equals("array")) {
2261+
ArrayNode array = getArray("default", node, false, location, result);
2262+
if (array != null) {
2263+
schema.setDefault(array);
2264+
}
2265+
}else if(schema.getType().equals("string")) {
2266+
value = getString("default", node, false, location, result);
2267+
if (value != null) {
2268+
schema.setDefault(value);
2269+
}
2270+
}else if(schema.getType().equals("boolean")) {
2271+
bool = getBoolean("default", node, false, location, result);
2272+
if (bool != null) {
2273+
schema.setDefault(bool);
2274+
}
2275+
}else if(schema.getType().equals("object")) {
2276+
Object object = getObject("default", node, false, location, result);
2277+
if (object != null) {
2278+
schema.setDefault(object);
2279+
}
2280+
} else if(schema.getType().equals("integer")) {
2281+
Integer number = getInteger("default", node, false, location, result);
2282+
if (number != null) {
2283+
schema.setDefault(number);
2284+
}
2285+
} else if(schema.getType().equals("number")) {
2286+
BigDecimal number = getBigDecimal("default", node, false, location, result);
2287+
if (number != null) {
2288+
schema.setDefault(number);
2289+
}
2290+
}
22562291
}
22572292

2258-
//discriminator
22592293

22602294
bool = getBoolean("nullable", node, false, location, result);
22612295
if(bool != null) {

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import java.util.ArrayList;
2525
import java.util.HashMap;
2626
import java.util.HashSet;
27+
import java.util.IdentityHashMap;
2728
import java.util.LinkedHashMap;
2829
import java.util.List;
2930
import java.util.Map;
@@ -56,7 +57,7 @@ public ResolverFully(boolean aggregateCombinators) {
5657
private Map<String, RequestBody> requestBodies;
5758
private Map<String, Header> headers;
5859
private Map<String, Link> links;
59-
private Map<String, Schema> resolvedProperties = new HashMap<>();
60+
private Map<String, Schema> resolvedProperties = new IdentityHashMap<>();
6061

6162
public void resolveFully(OpenAPI openAPI) {
6263
Components components = openAPI.getComponents();

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

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import com.github.tomakehurst.wiremock.client.WireMock;
99
import com.github.tomakehurst.wiremock.core.WireMockConfiguration;
1010
import io.swagger.v3.core.util.Json;
11-
import io.swagger.v3.core.util.Yaml;
1211
import io.swagger.v3.oas.models.Components;
1312
import io.swagger.v3.oas.models.OpenAPI;
1413
import io.swagger.v3.oas.models.Operation;
@@ -1165,6 +1164,23 @@ public void recursiveResolving2() {
11651164
}
11661165
}
11671166

1167+
@Test
1168+
public void recursiveIssue984() {
1169+
ParseOptions parseOptions = new ParseOptions();
1170+
parseOptions.setResolve(true);
1171+
parseOptions.setResolveFully(true);
1172+
OpenAPI openAPI = new OpenAPIV3Parser().read("issue-984-simple.yaml", null, parseOptions);
1173+
if (openAPI == null) fail("failed parsing issue-984");
1174+
try {
1175+
Json.pretty(openAPI);
1176+
//System.out.println(Json.pretty(openAPI));
1177+
}
1178+
catch (Exception e) {
1179+
e.printStackTrace();
1180+
fail("Recursive loop found");
1181+
}
1182+
}
1183+
11681184
@Test
11691185
public void propertyNameMixup() {
11701186
ParseOptions parseOptions = new ParseOptions();

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

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,22 @@ public class OpenAPIV3ParserTest {
6060
protected int serverPort = getDynamicPort();
6161
protected WireMockServer wireMockServer;
6262

63+
@Test
64+
public void testIssue1015() {
65+
66+
ParseOptions options = new ParseOptions();
67+
options.setResolve(true);
68+
options.setResolveCombinators(true);
69+
SwaggerParseResult parseResult = new OpenAPIV3Parser().readLocation("issue-1015.json", null, options);
70+
if (parseResult.getMessages() != null && !parseResult.getMessages().isEmpty()) {
71+
parseResult.getMessages().forEach(s -> System.out.println(s));
72+
fail("Error while loading apispec!");
73+
}
74+
75+
OpenAPI apispec = parseResult.getOpenAPI();
76+
assertNotNull(apispec);
77+
}
78+
6379
@Test
6480
public void testIssueIntegerDefault() {
6581
OpenAPIV3Parser parser = new OpenAPIV3Parser();
@@ -80,7 +96,6 @@ public void testIssue983() {
8096
options.setResolve(true);
8197
final OpenAPI openAPI = parser.readLocation("issue-983.yaml", null, options).getOpenAPI();
8298
Assert.assertNotNull(openAPI);
83-
Yaml.prettyPrint(openAPI);
8499
Assert.assertNotNull(openAPI.getComponents().getSchemas().get("InventoryId"));
85100
}
86101

@@ -837,7 +852,7 @@ public void testPetstore() throws Exception {
837852
SwaggerParseResult result = parser.readLocation("src/test/resources/petstore.yaml", null, options);
838853

839854
assertNotNull(result);
840-
assertTrue(result.getMessages().size()==1);
855+
assertTrue(result.getMessages().size()==2);
841856

842857
OpenAPI openAPI = result.getOpenAPI();
843858
Map<String, Schema> definitions = openAPI.getComponents().getSchemas();

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33

44

5+
import io.swagger.v3.core.util.Yaml;
56
import io.swagger.v3.oas.models.Components;
67
import io.swagger.v3.oas.models.OpenAPI;
78
import io.swagger.v3.oas.models.Operation;
@@ -32,6 +33,17 @@
3233
@SuppressWarnings("static-method")
3334
public class InlineModelResolverTest {
3435

36+
@Test
37+
public void testIssue1018() throws Exception {
38+
ParseOptions options = new ParseOptions();
39+
options.setFlatten(true);
40+
OpenAPI openAPI = new OpenAPIV3Parser().read("flatten.json",null, options);
41+
42+
assertNotNull(openAPI);
43+
assertNotNull(openAPI.getComponents().getSchemas().get("ReturnInformation_manufacturer_signin_credentials").getRequired());
44+
}
45+
46+
3547
@Test
3648
public void testIssue705() throws Exception {
3749
ParseOptions options = new ParseOptions();

0 commit comments

Comments
 (0)