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

Commit c94eadc

Browse files
authored
Merge pull request swagger-api#1109 from swagger-api/issue-1094
fix for Issue swagger-api#1094
2 parents 86181e2 + e7daa56 commit c94eadc

6 files changed

Lines changed: 76 additions & 6 deletions

File tree

modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/processors/ParameterProcessor.java

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

33

44
import io.swagger.v3.oas.models.examples.Example;
5+
import io.swagger.v3.oas.models.media.Content;
56
import io.swagger.v3.oas.models.media.MediaType;
67
import io.swagger.v3.oas.models.media.Schema;
78
import io.swagger.v3.oas.models.parameters.Parameter;
@@ -142,6 +143,23 @@ public List<Parameter> processParameters(List<Parameter> parameters) {
142143
Schema schema = parameter.getSchema();
143144
if(schema != null){
144145
schemaProcessor.processSchema(schema);
146+
}else if(parameter.getContent() != null){
147+
Map<String,MediaType> content = parameter.getContent();
148+
for( String mediaName : content.keySet()) {
149+
MediaType mediaType = content.get(mediaName);
150+
if(mediaType.getSchema()!= null) {
151+
schema = mediaType.getSchema();
152+
if (schema != null) {
153+
schemaProcessor.processSchema(schema);
154+
}
155+
}
156+
if(mediaType.getExamples() != null) {
157+
for(Example ex: mediaType.getExamples().values()){
158+
exampleProcessor.processExample(ex);
159+
}
160+
}
161+
}
162+
145163
}
146164
}
147165

modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/processors/PathsProcessor.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ public void processPaths() {
7575
final List<Parameter> processedPathParameters = parameterProcessor.processParameters(pathItem.getParameters());
7676
pathItem.setParameters(processedPathParameters);
7777

78-
//addParametersToEachOperation(pathItem);
7978

8079
final Map<PathItem.HttpMethod, Operation> operationMap = pathItem.readOperationsMap();
8180

modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/processors/ParameterProcessorTest.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,16 +45,24 @@ public void testProcessParameters_TypesThatAreNotRefOrBody(@Injectable final Hea
4545
{
4646
headerParameter.getSchema();
4747
result = null;
48+
headerParameter.getContent();
49+
result = null;
4850
queryParameter.getSchema();
4951
result = null;
52+
queryParameter.getContent();
53+
result = null;
5054
cookieParameter.getSchema();
5155
result = null;
56+
cookieParameter.getContent();
57+
result = null;
5258
pathParameter.getSchema();
5359
result = null;
60+
pathParameter.getContent();
61+
result = null;
5462
}
5563
};
5664
final List<Parameter> processedParameters = new ParameterProcessor(cache, openAPI)
57-
.processParameters(Arrays.<Parameter>asList(headerParameter,
65+
.processParameters(Arrays.asList(headerParameter,
5866
queryParameter,
5967
cookieParameter,
6068
pathParameter));
@@ -78,8 +86,7 @@ public void testProcessParameters_TypesThatAreNotRefOrBody(@Injectable final Hea
7886
}
7987

8088
@Test
81-
public void testProcessParameters_RefToHeader(
82-
@Injectable final HeaderParameter resolvedHeaderParam) throws Exception {
89+
public void testProcessParameters_RefToHeader(@Injectable final HeaderParameter resolvedHeaderParam) throws Exception {
8390
expectedModelProcessorCreation();
8491

8592
final String ref = "#/components/parameters/foo";
@@ -90,11 +97,12 @@ public void testProcessParameters_RefToHeader(
9097
{
9198
resolvedHeaderParam.getSchema();
9299
result = null;
100+
resolvedHeaderParam.getContent();
101+
result = null;
93102
}
94103
};
95104

96-
final List<Parameter> processedParameters = new ParameterProcessor(cache, openAPI)
97-
.processParameters(Arrays.<Parameter>asList(refParameter));
105+
final List<Parameter> processedParameters = new ParameterProcessor(cache, openAPI).processParameters(Arrays.asList(refParameter));
98106

99107
new FullVerifications(){{}};
100108

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

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

68+
@Test
69+
public void testRemoteParameterIssue1094(@Injectable final List<AuthorizationValue> auths) throws Exception{
70+
71+
OpenAPI result = new OpenAPIV3Parser().read("issue-1094/swagger.yaml");
72+
Assert.assertNotNull(result);
73+
Assert.assertNotNull(result.getComponents().getSchemas().get("PlmnId"));
74+
75+
}
76+
6877
@Test
6978
public void testIssue1071() {
7079

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
openapi: "3.0.0"
2+
info:
3+
version: 15.3.0
4+
title: "Common Data Types"
5+
paths: {}
6+
components:
7+
schemas:
8+
PlmnId:
9+
type: object
10+
properties:
11+
mcc:
12+
type: string
13+
mnc:
14+
type: string
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
openapi: "3.0.0"
2+
info:
3+
version: 15.3.0
4+
title: test
5+
paths:
6+
/my-app:
7+
get:
8+
parameters:
9+
- name: target-plmn-list
10+
in: query
11+
content:
12+
application/json:
13+
schema:
14+
type: array
15+
items:
16+
$ref: 'common.yaml#/components/schemas/PlmnId'
17+
minItems: 1
18+
responses:
19+
'200':
20+
description: Expected response to a valid request
21+
schema:
22+
type: string

0 commit comments

Comments
 (0)