Skip to content

Commit 2e0cffc

Browse files
authored
Merge branch 'master' into issue-1228
2 parents 4860056 + f60d9c3 commit 2e0cffc

File tree

17 files changed

+177
-22
lines changed

17 files changed

+177
-22
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ You can include this library from Sonatype OSS for SNAPSHOTS, or Maven central f
103103
<dependency>
104104
<groupId>io.swagger.parser.v3</groupId>
105105
<artifactId>swagger-parser</artifactId>
106-
<version>2.0.14</version>
106+
<version>2.0.15</version>
107107
</dependency>
108108
```
109109

modules/swagger-parser-core/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<groupId>io.swagger.parser.v3</groupId>
55
<artifactId>swagger-parser-project</artifactId>
6-
<version>2.0.15-SNAPSHOT</version>
6+
<version>2.0.16-SNAPSHOT</version>
77
<relativePath>../..</relativePath>
88
</parent>
99
<modelVersion>4.0.0</modelVersion>

modules/swagger-parser-v2-converter/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<groupId>io.swagger.parser.v3</groupId>
55
<artifactId>swagger-parser-project</artifactId>
6-
<version>2.0.15-SNAPSHOT</version>
6+
<version>2.0.16-SNAPSHOT</version>
77
<relativePath>../..</relativePath>
88
</parent>
99
<modelVersion>4.0.0</modelVersion>

modules/swagger-parser-v3/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<groupId>io.swagger.parser.v3</groupId>
55
<artifactId>swagger-parser-project</artifactId>
6-
<version>2.0.15-SNAPSHOT</version>
6+
<version>2.0.16-SNAPSHOT</version>
77
<relativePath>../..</relativePath>
88
</parent>
99
<modelVersion>4.0.0</modelVersion>

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public CallbackProcessor(ResolverCache cache, OpenAPI openAPI) {
3434
}
3535

3636
public void processCallback(Callback callback) {
37-
if (callback.get("$ref") != null){
37+
if (callback.get$ref() != null){
3838
processReferenceCallback(callback);
3939
}
4040
//Resolver PathItem
@@ -57,12 +57,12 @@ public void processCallback(Callback callback) {
5757
}
5858

5959
public void processReferenceCallback(Callback callback ){
60-
String $ref = callback.get("$ref").get$ref();
60+
String $ref = callback.get$ref();
6161
RefFormat refFormat = computeRefFormat($ref);
6262
if (isAnExternalRefFormat(refFormat)){
6363
final String newRef = externalRefProcessor.processRefToExternalCallback($ref, refFormat);
6464
if (newRef != null) {
65-
callback.get("$ref").set$ref("#/components/callbacks/"+newRef);
65+
callback.set$ref("#/components/callbacks/"+newRef);
6666
}
6767
}
6868
}

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

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,8 @@ public String processRefToExternalRequestBody(String $ref, RefFormat refFormat)
322322
} else {
323323
processRefToExternalRequestBody(file + body.get$ref(), RefFormat.RELATIVE);
324324
}
325+
}else if(body.getContent() != null){
326+
processRefContent(body.getContent(), $ref);
325327
}
326328
}
327329

@@ -667,7 +669,7 @@ public String processRefToExternalCallback(String $ref, RefFormat refFormat) {
667669

668670
if (existingCallback != null) {
669671
LOGGER.debug("A model for " + existingCallback + " already exists");
670-
if(existingCallback.get("$ref").get$ref() != null) {
672+
if(existingCallback.get$ref() != null) {
671673
// use the new model
672674
existingCallback = null;
673675
}
@@ -681,13 +683,13 @@ public String processRefToExternalCallback(String $ref, RefFormat refFormat) {
681683
cache.addReferencedKey(newRef);
682684

683685
String file = $ref.split("#/")[0];
684-
if(callback.get("$ref") != null){
685-
if (callback.get("$ref").get$ref() != null) {
686-
RefFormat format = computeRefFormat(callback.get("$ref").get$ref());
686+
if(callback.get$ref() != null){
687+
if (callback.get$ref() != null) {
688+
RefFormat format = computeRefFormat(callback.get$ref());
687689
if (isAnExternalRefFormat(format)) {
688-
callback.get("$ref").set$ref(processRefToExternalCallback(callback.get("$ref").get$ref(), format));
690+
callback.set$ref(processRefToExternalCallback(callback.get$ref(), format));
689691
} else {
690-
processRefToExternalCallback(file + callback.get("$ref").get$ref(), RefFormat.RELATIVE);
692+
processRefToExternalCallback(file + callback.get$ref(), RefFormat.RELATIVE);
691693
}
692694
}
693695
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,13 @@ public void processOperation(Operation operation) {
7575
for (String name : callbacks.keySet()) {
7676
Callback callback = callbacks.get(name);
7777
if(callback != null) {
78-
if (callback.get("$ref") != null){
79-
String $ref = callback.get("$ref").get$ref();
78+
if (callback.get$ref() != null){
79+
String $ref = callback.get$ref();
8080
RefFormat refFormat = computeRefFormat($ref);
8181
if (isAnExternalRefFormat(refFormat)){
8282
final String newRef = externalRefProcessor.processRefToExternalCallback($ref, refFormat);
8383
if (newRef != null) {
84-
callback.get("$ref").set$ref(newRef);
84+
callback.set$ref(newRef);
8585
}
8686
}
8787
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.github.tomakehurst.wiremock.client.WireMock;
99
import com.github.tomakehurst.wiremock.core.WireMockConfiguration;
1010
import io.swagger.v3.core.util.Json;
11+
import io.swagger.v3.core.util.Yaml;
1112
import io.swagger.v3.oas.models.Components;
1213
import io.swagger.v3.oas.models.OpenAPI;
1314
import io.swagger.v3.oas.models.Operation;
@@ -347,7 +348,7 @@ public void componentsResolver() throws Exception {
347348
//callback pathItem -> operation ->requestBody
348349
assertEquals(callbacks.get("heartbeat").get("$request.query.heartbeat-url").getPost().getRequestBody().get$ref(),"#/components/requestBodies/requestBody3");
349350
//remote callback ref
350-
assertEquals(callbacks.get("remoteCallback").get$ref(),"http://localhost:" + serverPort + "/remote/callback");
351+
assertEquals(callbacks.get("remoteCallback").get$ref(),"#/components/callbacks/callback");
351352

352353
}
353354

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

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

69+
@Test
70+
public void testCodegenIssue9773() {
71+
OpenAPIV3Parser openApiParser = new OpenAPIV3Parser();
72+
ParseOptions options = new ParseOptions();
73+
options.setResolve(true);
74+
options.setFlatten(true);
75+
SwaggerParseResult parseResult = openApiParser.readLocation("codegen-issue-9773/openapi.yaml", null, options);
76+
77+
OpenAPI openAPI = parseResult.getOpenAPI();
78+
assertNotNull(openAPI.getComponents().getSchemas().get("Foo"));
79+
}
80+
81+
@Test
82+
public void testIssueResolveCallBacks() {
83+
ParseOptions options = new ParseOptions();
84+
options.setResolve(true);
85+
options.setFlatten(true);
86+
SwaggerParseResult parseResult = new OpenAPIV3Parser().readLocation("callbacks-issue/swagger.yaml", null, options);
87+
OpenAPI spec = parseResult.getOpenAPI();
88+
assertNotNull(spec);
89+
assertEquals(spec.getPaths().get("/webhook").getPost().getCallbacks().get("WebhookVerificationEvent").get$ref(),"#/components/callbacks/WebhookVerificationEvent");
90+
}
91+
6992
@Test
7093
public void testIssue1190() {
7194
OpenAPIV3Parser openApiParser = new OpenAPIV3Parser();
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
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: Common
9+
description: Common Components for REST API's
10+
version: '1.0.1'
11+
12+
components:
13+
14+
#########################
15+
# Common callback definitions
16+
# See: https://swagger.io/docs/specification/callbacks/
17+
#########################
18+
callbacks:
19+
#### Webhooks ####
20+
WebhookVerificationEvent:
21+
'https://yourdomain.com/css/yourCallbackEndpoint':
22+
post:
23+
parameters:
24+
- $ref: '#/components/parameters/x-api-key'
25+
requestBody:
26+
required: true
27+
description: description
28+
content:
29+
application/json:
30+
schema:
31+
$ref: '#/components/schemas/WebhookVerification'
32+
responses:
33+
'202':
34+
description: Your server returns this code if it accepts the message it was sent

0 commit comments

Comments
 (0)