@@ -52,6 +52,7 @@ public ResolverFully(boolean aggregateCombinators) {
52
52
private Map <String , Schema > resolvedModels = new HashMap <>();
53
53
private Map <String , Example > examples ;
54
54
private Map <String , Parameter > parameters ;
55
+ private Map <String , ApiResponse > responses ;
55
56
private Map <String , RequestBody > requestBodies ;
56
57
private Map <String , Header > headers ;
57
58
private Map <String , Link > links ;
@@ -74,6 +75,13 @@ public void resolveFully(OpenAPI openAPI) {
74
75
}
75
76
}
76
77
78
+ if (components != null && components .getResponses () != null ) {
79
+ responses = components .getResponses ();
80
+ if (responses == null ) {
81
+ responses = new HashMap <>();
82
+ }
83
+ }
84
+
77
85
if (components != null && components .getExamples () != null ) {
78
86
examples = components .getExamples ();
79
87
if (examples == null ) {
@@ -178,8 +186,10 @@ public void resolvePath(PathItem pathItem){
178
186
// responses
179
187
ApiResponses responses = op .getResponses ();
180
188
if (responses != null ) {
189
+ ApiResponses resolvedResponses = new ApiResponses ();
181
190
for (String code : responses .keySet ()) {
182
191
ApiResponse response = responses .get (code );
192
+ response = response .get$ref () != null ? resolveResponse (response ) : response ;
183
193
if (response .getContent () != null ) {
184
194
Map <String , MediaType > content = response .getContent ();
185
195
for (String mediaType : content .keySet ()){
@@ -205,7 +215,9 @@ public void resolvePath(PathItem pathItem){
205
215
link .setValue (resolvedValue );
206
216
}
207
217
}
218
+ resolvedResponses .addApiResponse (code , response );
208
219
}
220
+ op .setResponses (resolvedResponses );
209
221
}
210
222
}
211
223
}
@@ -274,6 +286,18 @@ public RequestBody resolveRequestBody(RequestBody requestBody){
274
286
return requestBody ;
275
287
}
276
288
289
+ public ApiResponse resolveResponse (ApiResponse apiResponse ){
290
+ RefFormat refFormat = computeRefFormat (apiResponse .get$ref ());
291
+ String $ref = apiResponse .get$ref ();
292
+ if (!isAnExternalRefFormat (refFormat )){
293
+ if (responses != null && !responses .isEmpty ()) {
294
+ String referenceKey = computeDefinitionName ($ref );
295
+ return responses .getOrDefault (referenceKey , apiResponse );
296
+ }
297
+ }
298
+ return apiResponse ;
299
+ }
300
+
277
301
public Callback resolveCallback (Callback callback ){
278
302
RefFormat refFormat = computeRefFormat (callback .get$ref ());
279
303
String $ref = callback .get$ref ();
0 commit comments