Skip to content

Commit 7c0e60a

Browse files
authored
Merge pull request #987 from swagger-api/resolving-refs-dots
ref #901 - fixes references with dot in property name
2 parents ac787dd + cf081b2 commit 7c0e60a

File tree

7 files changed

+152
-5
lines changed

7 files changed

+152
-5
lines changed

modules/swagger-parser/src/main/java/io/swagger/parser/processors/PropertyProcessor.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import io.swagger.models.Swagger;
44
import io.swagger.models.properties.*;
5+
import io.swagger.models.refs.RefFormat;
6+
import io.swagger.models.refs.RefType;
57
import io.swagger.parser.ResolverCache;
68

79
import java.util.List;
@@ -37,7 +39,7 @@ private void processRefProperty(RefProperty refProperty) {
3739
final String newRef = externalRefProcessor.processRefToExternalDefinition(refProperty.get$ref(), refProperty.getRefFormat());
3840

3941
if (newRef != null) {
40-
refProperty.set$ref(newRef);
42+
refProperty.set$ref(RefType.DEFINITION.getInternalPrefix()+newRef);
4143
}
4244
}
4345
}

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,12 @@ public void testIssueRelativeRefs2(){
7070
assertEquals(refProperty.get$ref(),"#/definitions/simpleIDType_v01");
7171
}
7272

73+
@Test
74+
public void testIssueDefinitionWithDots_2() {
75+
Swagger swagger = new SwaggerParser().read("SimpleAPI.yaml");
76+
assertNotNull(swagger);
77+
}
78+
7379
@Test
7480
public void testIssueDefinitionWithDots() {
7581
Swagger swagger = new SwaggerParser().read("API-Service-2.0.0-swagger.yaml");
@@ -1383,7 +1389,7 @@ public void checkExtRefResolveInPropertiesWithAllOf() {
13831389
assertEquals(1, property.getAllOf().size());
13841390

13851391
RefProperty refProperty = (RefProperty) property.getAllOf().get(0);
1386-
assertEquals("#/definitions/def", refProperty.get$ref());
1392+
assertEquals("#/definitions/def.def", refProperty.get$ref());
13871393

13881394
}
13891395

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
swagger: '2.0'
2+
info:
3+
description: This is a simple API
4+
version: 1.0.0
5+
title: Simple Inventory API
6+
# put the contact info for your development or API team
7+
contact:
8+
9+
10+
license:
11+
name: Apache 2.0
12+
url: http://www.apache.org/licenses/LICENSE-2.0.html
13+
14+
# tags are used for organizing operations
15+
tags:
16+
- name: admins
17+
description: Secured Admin-only calls
18+
- name: developers
19+
description: Operations available to regular developers
20+
21+
paths:
22+
/inventory:
23+
get:
24+
tags:
25+
- developers
26+
summary: searches inventory
27+
operationId: searchInventory
28+
description: |
29+
By passing in the appropriate options, you can search for
30+
available inventory in the system
31+
produces:
32+
- application/json
33+
parameters:
34+
- in: query
35+
name: searchString
36+
description: pass an optional search string for looking up inventory
37+
required: false
38+
type: string
39+
- in: query
40+
name: skip
41+
description: number of records to skip for pagination
42+
type: integer
43+
format: int32
44+
minimum: 0
45+
- in: query
46+
name: limit
47+
description: maximum number of records to return
48+
type: integer
49+
format: int32
50+
minimum: 0
51+
maximum: 50
52+
responses:
53+
200:
54+
description: search results matching criteria
55+
schema:
56+
type: array
57+
items:
58+
$ref: '#/definitions/Inventory.Item'
59+
400:
60+
description: bad input parameter
61+
post:
62+
tags:
63+
- admins
64+
summary: adds an inventory item
65+
operationId: addInventory
66+
description: Adds an item to the system
67+
consumes:
68+
- application/json
69+
produces:
70+
- application/json
71+
parameters:
72+
- in: body
73+
name: inventoryItem
74+
description: Inventory item to add
75+
schema:
76+
$ref: '#/definitions/Inventory.Item'
77+
responses:
78+
201:
79+
description: item created
80+
400:
81+
description: invalid input, object invalid
82+
409:
83+
description: an existing item already exists
84+
definitions:
85+
Inventory.Item:
86+
type: object
87+
required:
88+
- id
89+
- name
90+
- manufacturer
91+
- releaseDate
92+
properties:
93+
id:
94+
type: string
95+
format: uuid
96+
example: d290f1ee-6c54-4b01-90e6-d701748f0851
97+
name:
98+
type: string
99+
example: Widget Adapter
100+
releaseDate:
101+
type: string
102+
format: date-time
103+
example: 2016-08-29T09:12:33.001Z
104+
manufacturer:
105+
$ref: 'SimpleDomain.yaml#/definitions/Item.Manufacturer'
106+
# Added by API Auto Mocking Plugin
107+
108+
schemes:
109+
- https
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
info:
2+
description: "This is a sample Domain"
3+
version: '1.0.0'
4+
title: Sample Domain
5+
6+
definitions:
7+
ErrorModel:
8+
required:
9+
- "code"
10+
- "message"
11+
properties:
12+
code:
13+
type: "integer"
14+
format: "int32"
15+
message:
16+
type: "string"
17+
Item.Manufacturer:
18+
required:
19+
- name
20+
properties:
21+
name:
22+
type: string
23+
example: ACME Corporation
24+
homePage:
25+
type: string
26+
format: url
27+
example: https://www.acme-corp.com
28+
phone:
29+
type: string
30+
example: 408-867-5309

modules/swagger-parser/src/test/resources/allOf-property-relative-file-references/child.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ info:
77
basePath: /api/v2/devices
88

99
definitions:
10-
def:
10+
def.def:
1111
type: object
1212
properties:
1313
name:

modules/swagger-parser/src/test/resources/allOf-property-relative-file-references/parent.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@ definitions:
1313
property:
1414
x-attr: "value"
1515
allOf:
16-
- $ref: "./child.yaml#/definitions/def"
16+
- $ref: "./child.yaml#/definitions/def.def"

modules/swagger-parser/src/test/resources/nested-external-response-references/sub-folder/common-responses.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,6 @@ responses:
2222

2323
definitions:
2424
User:
25-
$ref: '../sub-folder/sub-folder2/common-address.yaml#/definitions/Address'
25+
$ref: '../sub-folder/sub-folder2/common-address.yaml#/definitions/Address'
2626
#Still a BUG: Should take into account that the like is relative to this file!
2727
# $ref: 'sub-folder2/common-address.yaml#/definitions/Address'

0 commit comments

Comments
 (0)