Skip to content

Commit 5e13ee5

Browse files
committed
oas 3.1 dereference - fix visiting handling
1 parent 2d57932 commit 5e13ee5

File tree

1 file changed

+34
-22
lines changed

1 file changed

+34
-22
lines changed

modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/reference/OpenAPI31Traverser.java

Lines changed: 34 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -111,10 +111,11 @@ public OpenAPI traverseOpenApi(OpenAPI openAPI, ReferenceVisitor visitor) {
111111
if (visiting.contains(openAPI)) {
112112
return openAPI;
113113
}
114-
visiting.add(openAPI);
115114
if (visitedMap.containsKey(openAPI)) {
116115
return (OpenAPI)visitedMap.get(openAPI);
117116
}
117+
visiting.add(openAPI);
118+
118119
OpenAPI resolved = visitor.visitOpenApi(openAPI);
119120

120121
if (resolved == null) {
@@ -150,11 +151,11 @@ public Components traverseComponents(Components components, ReferenceVisitor vis
150151
if (visiting.contains(components)) {
151152
return components;
152153
}
153-
visiting.add(components);
154+
154155
if (visitedMap.containsKey(components)) {
155156
return (Components)visitedMap.get(components);
156157
}
157-
158+
visiting.add(components);
158159
Components resolved = visitor.visitComponents(components);
159160
if (resolved == null) {
160161
resolved = components;
@@ -183,11 +184,11 @@ public Paths traversePaths(Paths paths, ReferenceVisitor visitor) {
183184
if (visiting.contains(paths)) {
184185
return paths;
185186
}
186-
visiting.add(paths);
187+
187188
if (visitedMap.containsKey(paths)) {
188189
return (Paths)visitedMap.get(paths);
189190
}
190-
191+
visiting.add(paths);
191192
Paths resolved = visitor.visitPaths(paths);
192193
if (resolved == null) {
193194
resolved = paths;
@@ -206,11 +207,11 @@ public Operation traverseOperation(Operation operation, ReferenceVisitor visitor
206207
if (visiting.contains(operation)) {
207208
return operation;
208209
}
209-
visiting.add(operation);
210+
210211
if (visitedMap.containsKey(operation)) {
211212
return (Operation)visitedMap.get(operation);
212213
}
213-
214+
visiting.add(operation);
214215
Operation resolved = visitor.visitOperation(operation);
215216
if (resolved == null) {
216217
resolved = operation;
@@ -257,10 +258,11 @@ public ApiResponses traverseResponses(ApiResponses responses, ReferenceVisitor v
257258
if (visiting.contains(responses)) {
258259
return responses;
259260
}
260-
visiting.add(responses);
261+
261262
if (visitedMap.containsKey(responses)) {
262263
return (ApiResponses)visitedMap.get(responses);
263264
}
265+
visiting.add(responses);
264266
ApiResponses resolved = visitor.visitResponses(responses);
265267
if (resolved == null) {
266268
resolved = responses;
@@ -279,10 +281,11 @@ public ApiResponse traverseResponse(ApiResponse response, ReferenceVisitor visit
279281
if (visiting.contains(response)) {
280282
return response;
281283
}
282-
visiting.add(response);
284+
283285
if (visitedMap.containsKey(response)) {
284286
return (ApiResponse)visitedMap.get(response);
285287
}
288+
visiting.add(response);
286289
ApiResponse resolved = visitor.visitResponse(response);
287290

288291
boolean resolvedNotNull = false;
@@ -326,10 +329,11 @@ public RequestBody traverseRequestBody(RequestBody requestBody, ReferenceVisitor
326329
if (visiting.contains(requestBody)) {
327330
return requestBody;
328331
}
329-
visiting.add(requestBody);
332+
330333
if (visitedMap.containsKey(requestBody)) {
331334
return (RequestBody)visitedMap.get(requestBody);
332335
}
336+
visiting.add(requestBody);
333337
RequestBody resolved = visitor.visitRequestBody(requestBody);
334338
boolean resolvedNotNull = false;
335339

@@ -371,11 +375,11 @@ public PathItem traversePathItem(PathItem pathItem, ReferenceVisitor visitor) {
371375
if (visiting.contains(pathItem)) {
372376
return pathItem;
373377
}
374-
visiting.add(pathItem);
378+
375379
if (visitedMap.containsKey(pathItem)) {
376380
return (PathItem) visitedMap.get(pathItem);
377381
}
378-
382+
visiting.add(pathItem);
379383
PathItem resolved = visitor.visitPathItem(pathItem);
380384

381385
boolean resolvedNotNull = false;
@@ -472,10 +476,11 @@ public Parameter traverseParameter(Parameter parameter, ReferenceVisitor visitor
472476
if (visiting.contains(parameter)) {
473477
return parameter;
474478
}
475-
visiting.add(parameter);
479+
476480
if (visitedMap.containsKey(parameter)) {
477481
return (Parameter)visitedMap.get(parameter);
478482
}
483+
visiting.add(parameter);
479484
Parameter resolved = visitor.visitParameter(parameter);
480485

481486
boolean resolvedNotNull = false;
@@ -521,10 +526,11 @@ public Example traverseExample(Example example, ReferenceVisitor visitor) {
521526
if (visiting.contains(example)) {
522527
return example;
523528
}
524-
visiting.add(example);
529+
525530
if (visitedMap.containsKey(example)) {
526531
return (Example)visitedMap.get(example);
527532
}
533+
visiting.add(example);
528534
Example resolved = visitor.visitExample(example);
529535

530536
boolean resolvedNotNull = false;
@@ -564,10 +570,11 @@ public Callback traverseCallback(Callback callback, ReferenceVisitor visitor) {
564570
if (visiting.contains(callback)) {
565571
return callback;
566572
}
567-
visiting.add(callback);
573+
568574
if (visitedMap.containsKey(callback)) {
569575
return (Callback)visitedMap.get(callback);
570576
}
577+
visiting.add(callback);
571578
traverseMap(callback, visitor, this::traversePathItem);
572579
visitedMap.put(callback, callback);
573580
visiting.remove(callback);
@@ -581,11 +588,11 @@ public MediaType traverseMediaType(MediaType mediaType, ReferenceVisitor visitor
581588
if (visiting.contains(mediaType)) {
582589
return mediaType;
583590
}
584-
visiting.add(mediaType);
591+
585592
if (visitedMap.containsKey(mediaType)) {
586593
return (MediaType)visitedMap.get(mediaType);
587594
}
588-
595+
visiting.add(mediaType);
589596
MediaType resolved = visitor.visitMediaType(mediaType);
590597

591598
if (resolved == null) {
@@ -612,10 +619,11 @@ public Encoding traverseEncoding(Encoding encoding, ReferenceVisitor visitor) {
612619
if (visiting.contains(encoding)) {
613620
return encoding;
614621
}
615-
visiting.add(encoding);
622+
616623
if (visitedMap.containsKey(encoding)) {
617624
return (Encoding)visitedMap.get(encoding);
618625
}
626+
visiting.add(encoding);
619627
Encoding resolved = visitor.visitEncoding(encoding);
620628

621629
if (resolved == null) {
@@ -635,10 +643,11 @@ public Header traverseHeader(Header header, ReferenceVisitor visitor) {
635643
if (visiting.contains(header)) {
636644
return header;
637645
}
638-
visiting.add(header);
646+
639647
if (visitedMap.containsKey(header)) {
640648
return (Header)visitedMap.get(header);
641649
}
650+
visiting.add(header);
642651
Header resolved = visitor.visitHeader(header);
643652

644653
boolean resolvedNotNull = false;
@@ -684,10 +693,11 @@ public SecurityScheme traverseSecurityScheme(SecurityScheme securityScheme, Refe
684693
if (visiting.contains(securityScheme)) {
685694
return securityScheme;
686695
}
687-
visiting.add(securityScheme);
696+
688697
if (visitedMap.containsKey(securityScheme)) {
689698
return (SecurityScheme)visitedMap.get(securityScheme);
690699
}
700+
visiting.add(securityScheme);
691701
SecurityScheme resolved = visitor.visitSecurityScheme(securityScheme);
692702
boolean resolvedNotNull = false;
693703

@@ -725,10 +735,11 @@ public Link traverseLink(Link link, ReferenceVisitor visitor) {
725735
if (visiting.contains(link)) {
726736
return link;
727737
}
728-
visiting.add(link);
738+
729739
if (visitedMap.containsKey(link)) {
730740
return (Link)visitedMap.get(link);
731741
}
742+
visiting.add(link);
732743
Link resolved = visitor.visitLink(link);
733744

734745
boolean resolvedNotNull = false;
@@ -768,10 +779,11 @@ public Schema traverseSchema(Schema schema, ReferenceVisitor visitor, List<Strin
768779
if (visiting.contains(schema)) {
769780
return schema;
770781
}
771-
visiting.add(schema);
772782
if (visitedMap.containsKey(schema)) {
773783
return (Schema)visitedMap.get(schema);
774784
}
785+
visiting.add(schema);
786+
775787
if (StringUtils.isNotBlank(schema.get$id())) {
776788
inheritedIds.add(schema.get$id());
777789
}

0 commit comments

Comments
 (0)