Skip to content

Commit 251f3cf

Browse files
authored
Merge branch 'master' into issue1143
2 parents 6f64c78 + a5f216e commit 251f3cf

File tree

6 files changed

+911
-8
lines changed

6 files changed

+911
-8
lines changed

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

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -162,14 +162,6 @@ else if (rootPath != null) {
162162
}
163163

164164
protected <T> void updateLocalRefs(String file, T result) {
165-
if(result instanceof ApiResponse) {
166-
ApiResponse response = (ApiResponse) result;
167-
if (response.getContent() != null) {
168-
for (String mediaType : response.getContent().keySet()) {
169-
updateLocalRefs(file, response.getContent().get(mediaType).getSchema());
170-
}
171-
}
172-
}
173165
if(result instanceof Parameter){
174166
Parameter parameter = (Parameter)result;
175167
if (parameter.getSchema() != null){

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1323,6 +1323,25 @@ public void testIssue360() {
13231323
assertEquals(refModel.get$ref(), "#/components/schemas/Pet");
13241324
}
13251325

1326+
@Test
1327+
public void testRelativePath() {
1328+
OpenAPIV3Parser parser = new OpenAPIV3Parser();
1329+
ParseOptions options = new ParseOptions();
1330+
options.setResolve(true);
1331+
SwaggerParseResult readResult = parser.readLocation("src/test/resources/relative-issue/api.yaml", null, options);
1332+
Assert.assertEquals(readResult.getOpenAPI().getPaths().get("/scans").getGet().getResponses().get("500").getContent().get("application/json").getSchema().get$ref(), "#/components/schemas/ErrorMessage");
1333+
1334+
}
1335+
1336+
@Test
1337+
public void testRelativePath2() {
1338+
OpenAPIV3Parser parser = new OpenAPIV3Parser();
1339+
ParseOptions options = new ParseOptions();
1340+
options.setResolve(true);
1341+
SwaggerParseResult readResult = parser.readLocation("src/test/resources/codegen-remote-responses/openapi.yaml", null, options);
1342+
Assert.assertEquals(readResult.getOpenAPI().getPaths().get("/pet/findByTags").getGet().getResponses().get("default").getContent().get("application/json").getSchema().get$ref(), "#/components/schemas/ErrorModel");
1343+
}
1344+
13261345
private OpenAPI doRelativeFileTest(String location) {
13271346
OpenAPIV3Parser parser = new OpenAPIV3Parser();
13281347
ParseOptions options = new ParseOptions();
Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
# OpenAPI version identifier - required for OpenAPI 3.0 domains
2+
openapi: 3.0.0
3+
4+
#######################
5+
# Optional info section
6+
#######################
7+
info:
8+
title: Acme Components
9+
description: Common components for Acme REST APIs
10+
version: '1.0.0'
11+
12+
components:
13+
14+
####################
15+
# Common data models
16+
####################
17+
schemas:
18+
ErrorModel:
19+
type: object
20+
required:
21+
- code
22+
- message
23+
properties:
24+
code:
25+
type: integer
26+
format: int32
27+
message:
28+
type: string
29+
30+
####################
31+
# Common parameters
32+
####################
33+
parameters:
34+
offsetParam:
35+
name: offset
36+
in: query
37+
schema:
38+
type: integer
39+
minimum: 0
40+
description: The number of items to skip before returning the results
41+
limitParam:
42+
in: query
43+
name: limit
44+
schema:
45+
type: integer
46+
format: int32
47+
minimum: 1
48+
maximum: 100
49+
default: 20
50+
description: The number of items to return
51+
52+
#######################
53+
# Common request bodies
54+
#######################
55+
requestBodies:
56+
NewItem:
57+
description: A JSON object containing item data
58+
required: true
59+
content:
60+
application/json:
61+
schema:
62+
type: object
63+
64+
####################
65+
# Common responses
66+
####################
67+
responses:
68+
GeneralError:
69+
description: An error occurred
70+
content:
71+
application/json:
72+
schema:
73+
$ref: '#/components/schemas/ErrorModel'
74+
headers:
75+
X-RateLimit-Limit:
76+
$ref: '#/components/headers/X-RateLimit-Limit'
77+
X-RateLimit-Remaining:
78+
$ref: '#/components/headers/X-RateLimit-Remaining'
79+
80+
#########################
81+
# Common headers
82+
# (except request headers - they are defined as parameters)
83+
#########################
84+
headers:
85+
X-RateLimit-Limit:
86+
description: Request limit per hour
87+
schema:
88+
type: integer
89+
example: 100
90+
X-RateLimit-Remaining:
91+
description: Remaining requests for the hour
92+
schema:
93+
type: integer
94+
example: 94
95+
96+
#######################
97+
# Common path items
98+
#######################
99+
pathitems:
100+
EntityOperations:
101+
get:
102+
summary: Get all items
103+
description: This operation supports pagination
104+
parameters:
105+
- $ref: '#/components/parameters/offsetParam'
106+
- $ref: '#/components/parameters/limitParam'
107+
responses:
108+
'200':
109+
description: A list of items
110+
default:
111+
$ref: '#/components/responses/GeneralError'
112+
post:
113+
summary: Add a new item
114+
requestBody:
115+
$ref: '#/components/requestBodies/NewItem'
116+
responses:
117+
'201':
118+
description: Created
119+
120+
######################################
121+
# Common examples of input/output data
122+
######################################
123+
examples:
124+
tshirt:
125+
summary: Sample T-shirt data
126+
value:
127+
# Example value starts here
128+
id: 17
129+
name: T-shirt
130+
description: 100% cotton shirt
131+
categories: [clothes]
132+
133+
#########################
134+
# Common link definitions
135+
# See: https://swagger.io/docs/specification/links/
136+
#########################
137+
links: {}
138+
139+
#########################
140+
# Common callback definitions
141+
# See: https://swagger.io/docs/specification/callbacks/
142+
#########################
143+
callbacks: {}

0 commit comments

Comments
 (0)