Skip to content

Commit 0bdf89a

Browse files
authored
Merge pull request #1180 from swagger-api/issue1148
fix for setFlatten with Schema containing dot produces invalid ref
2 parents a6c570d + 540b08d commit 0bdf89a

File tree

4 files changed

+39
-3
lines changed

4 files changed

+39
-3
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import io.swagger.v3.oas.models.parameters.RequestBody;
1515
import io.swagger.v3.oas.models.responses.ApiResponse;
1616
import io.swagger.v3.core.util.Json;
17+
import io.swagger.v3.parser.models.RefType;
1718
import org.slf4j.Logger;
1819
import org.slf4j.LoggerFactory;
1920

@@ -340,7 +341,7 @@ public void flattenProperties(Map<String, Schema> properties, String path) {
340341
if (existing != null) {
341342
propsToUpdate.put(key, new Schema().$ref(existing));
342343
} else {
343-
propsToUpdate.put(key, new Schema().$ref(modelName));
344+
propsToUpdate.put(key, new Schema().$ref(RefType.SCHEMAS.getInternalPrefix()+modelName));
344345
modelsToAdd.put(modelName, model);
345346
addGenerated(modelName, model);
346347
openAPI.getComponents().addSchemas(modelName, model);

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,8 +202,6 @@ public void testIssue304() {
202202
public void testAllOfFlatAndNested() {
203203
for (String path : Arrays.asList("./src/test/resources/allOf-properties-ext-ref/models/swagger.json",
204204
"./src/test/resources/allOf-properties-ext-ref/swagger.json")) {
205-
//ParseOptions options = new ParseOptions();
206-
//options.setResolve(true);
207205
OpenAPI swagger = new OpenAPIV3Parser().read(path);
208206

209207
assertEquals(3, swagger.getComponents().getSchemas().size());

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

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

69+
@Test
70+
public void testIssue1148_Flatten_Dot() {
71+
ParseOptions options = new ParseOptions();
72+
options.setFlatten(true);
73+
SwaggerParseResult parseResult = new OpenAPIV3Parser().readLocation("issue1148.yaml", null, options);
74+
OpenAPI apispec = parseResult.getOpenAPI();
75+
assertNotNull(apispec);
76+
assertEquals(((Schema)apispec.getComponents().getSchemas().get("Some.User").getProperties().get("address")).get$ref(),"#/components/schemas/Some.User_address");
77+
}
78+
6979

7080
@Test
7181
public void testIssue1169() {
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
openapi: 3.0.0
2+
servers:
3+
- url: 'http://petstore.swagger.io/v2'
4+
info:
5+
version: 1.0.0
6+
title: OpenAPI Petstore
7+
license:
8+
name: Apache-2.0
9+
url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
10+
paths:
11+
/example:
12+
get:
13+
operationId: example
14+
responses:
15+
'200':
16+
description: successful operation
17+
components:
18+
schemas:
19+
Some.User:
20+
type: object
21+
properties:
22+
address:
23+
type: object
24+
nullable: true
25+
properties:
26+
city:
27+
type: string

0 commit comments

Comments
 (0)