Skip to content

Commit f6670fd

Browse files
Fix for issue-1621
This issue happens when the referenced file name contains more than 1 dot
1 parent b65db7a commit f6670fd

File tree

5 files changed

+49
-0
lines changed

5 files changed

+49
-0
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,11 @@ public static String computeDefinitionName(String ref) {
4646
plausibleName = filePathElements[filePathElements.length - 1];
4747

4848
final String[] split = plausibleName.split("\\.");
49+
// Fix for issue-1621
4950
plausibleName = split[0];
51+
for (int i = 1; i < split.length - 1; i++) {
52+
plausibleName += "." + split[i];
53+
}
5054
}
5155

5256
return plausibleName;

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

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,26 @@ public void testIssue1143(){
4040
assertNotNull(result.getOpenAPI().getComponents().getSchemas().get("identificacion_usuario_aplicacion"));
4141
}
4242

43+
@Test
44+
public void testIssue1621() {
45+
final ParseOptions parseOptions = new ParseOptions();
46+
parseOptions.setResolve(true);
47+
parseOptions.setResolveFully(true);
48+
parseOptions.setResolveCombinators(false);
49+
OpenAPIParser openAPIParser = new OpenAPIParser();
50+
SwaggerParseResult swaggerParseResult = openAPIParser.readLocation("issue-1621/example.openapi.yaml", null, parseOptions);
51+
assertEquals(0, swaggerParseResult.getMessages().size());
52+
OpenAPI api = swaggerParseResult.getOpenAPI();
53+
assertEquals("POST Example", api.getPaths()
54+
.get("/example")
55+
.getPost()
56+
.getRequestBody()
57+
.getContent()
58+
.get("application/json")
59+
.getSchema()
60+
.getTitle());
61+
}
62+
4363
@Test
4464
public void testIssue749() {
4565
ParseOptions options = new ParseOptions();
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
title: GET Example
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
openapi: 3.0.1
2+
info:
3+
title: Example OpenAPI spec
4+
version: 0.0.1
5+
paths:
6+
'/example':
7+
post:
8+
requestBody:
9+
content:
10+
application/json:
11+
schema:
12+
$ref: '#/components/schemas/ExamplePost'
13+
responses:
14+
204:
15+
description: No content
16+
components:
17+
schemas:
18+
# Renaming this key from `Example` to `ExampleGet` stops the issue from occurring
19+
# Removing this key stops the issue from occurring
20+
Example:
21+
$ref: example.get.yaml
22+
ExamplePost:
23+
$ref: example.post.yaml
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
title: POST Example

0 commit comments

Comments
 (0)