Skip to content

Commit 4693dd1

Browse files
authored
Merge pull request #1722 from swagger-api/issue1637
Fix for invalid location of style and explode when content is present
2 parents 50d8cfb + dc911f7 commit 4693dd1

File tree

3 files changed

+47
-11
lines changed

3 files changed

+47
-11
lines changed

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

+14-11
Original file line numberDiff line numberDiff line change
@@ -1655,19 +1655,8 @@ public Parameter getParameter(ObjectNode obj, String location, ParseResult resul
16551655
}
16561656
}
16571657

1658-
value = getString("style", obj, false, location, result);
1659-
setStyle(value, parameter, location, obj, result);
16601658

16611659

1662-
Boolean explode = getBoolean("explode", obj, false, location, result);
1663-
if (explode != null) {
1664-
parameter.setExplode(explode);
1665-
} else if (StyleEnum.FORM.equals(parameter.getStyle())) {
1666-
parameter.setExplode(Boolean.TRUE);
1667-
} else {
1668-
parameter.setExplode(Boolean.FALSE);
1669-
}
1670-
16711660

16721661
ObjectNode parameterObject = getObject("schema", obj, false, location, result);
16731662
if (parameterObject != null) {
@@ -1717,6 +1706,20 @@ else if(parameter.getSchema() == null) {
17171706
result.missing(location,"content");
17181707
}
17191708

1709+
value = getString("style", obj, false, location, result);
1710+
if (parameter.getContent() == null) {
1711+
setStyle(value, parameter, location, obj, result);
1712+
1713+
Boolean explode = getBoolean("explode", obj, false, location, result);
1714+
if (explode != null) {
1715+
parameter.setExplode(explode);
1716+
} else if (StyleEnum.FORM.equals(parameter.getStyle())) {
1717+
parameter.setExplode(Boolean.TRUE);
1718+
} else {
1719+
parameter.setExplode(Boolean.FALSE);
1720+
}
1721+
}
1722+
17201723
Map<String, Object> extensions = getExtensions(obj);
17211724
if (extensions != null && extensions.size() > 0) {
17221725
parameter.setExtensions(extensions);

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

+10
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import static org.testng.Assert.assertNull;
1717
import static org.testng.Assert.assertTrue;
1818
import static org.testng.Assert.fail;
19+
import static org.testng.AssertJUnit.assertNotSame;
1920

2021
import java.io.File;
2122
import java.io.IOException;
@@ -31,10 +32,12 @@
3132
import java.util.Random;
3233
import java.util.Set;
3334

35+
import io.swagger.v3.parser.util.DeserializationUtils;
3436
import io.swagger.v3.parser.util.SchemaTypeUtil;
3537
import org.apache.commons.io.FileUtils;
3638
import org.hamcrest.CoreMatchers;
3739
import org.testng.Assert;
40+
import org.testng.AssertJUnit;
3841
import org.testng.annotations.AfterClass;
3942
import org.testng.annotations.BeforeClass;
4043
import org.testng.annotations.Test;
@@ -85,6 +88,13 @@ public class OpenAPIV3ParserTest {
8588
protected int serverPort = getDynamicPort();
8689
protected WireMockServer wireMockServer;
8790

91+
@Test
92+
public void testIssue1637_StyleAndContent() throws IOException {
93+
ParseOptions options = new ParseOptions();
94+
SwaggerParseResult result = new OpenAPIV3Parser().readLocation("src/test/resources/issue1637.yaml", null, options);
95+
Yaml.prettyPrint(result.getOpenAPI());
96+
}
97+
8898
@Test
8999
public void testIssue1643_True() throws Exception{
90100
ParseOptions options = new ParseOptions();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
openapi: 3.0.1
2+
info:
3+
title: sample
4+
version: "1.0"
5+
servers:
6+
- url: www.abc.com
7+
paths:
8+
/test:
9+
get:
10+
operationId: test
11+
parameters:
12+
- name: id
13+
in: query
14+
content:
15+
application/json:
16+
schema:
17+
type: object
18+
properties:
19+
a:
20+
type: string
21+
responses:
22+
200:
23+
description: Ok

0 commit comments

Comments
 (0)