@@ -52,6 +52,7 @@ public ResolverFully(boolean aggregateCombinators) {
5252 private Map <String , Schema > resolvedModels = new HashMap <>();
5353 private Map <String , Example > examples ;
5454 private Map <String , Parameter > parameters ;
55+ private Map <String , ApiResponse > responses ;
5556 private Map <String , RequestBody > requestBodies ;
5657 private Map <String , Header > headers ;
5758 private Map <String , Link > links ;
@@ -74,6 +75,13 @@ public void resolveFully(OpenAPI openAPI) {
7475 }
7576 }
7677
78+ if (components != null && components .getResponses () != null ) {
79+ responses = components .getResponses ();
80+ if (responses == null ) {
81+ responses = new HashMap <>();
82+ }
83+ }
84+
7785 if (components != null && components .getExamples () != null ) {
7886 examples = components .getExamples ();
7987 if (examples == null ) {
@@ -178,8 +186,10 @@ public void resolvePath(PathItem pathItem){
178186 // responses
179187 ApiResponses responses = op .getResponses ();
180188 if (responses != null ) {
189+ ApiResponses resolvedResponses = new ApiResponses ();
181190 for (String code : responses .keySet ()) {
182191 ApiResponse response = responses .get (code );
192+ response = response .get$ref () != null ? resolveResponse (response ) : response ;
183193 if (response .getContent () != null ) {
184194 Map <String , MediaType > content = response .getContent ();
185195 for (String mediaType : content .keySet ()){
@@ -205,7 +215,9 @@ public void resolvePath(PathItem pathItem){
205215 link .setValue (resolvedValue );
206216 }
207217 }
218+ resolvedResponses .addApiResponse (code , response );
208219 }
220+ op .setResponses (resolvedResponses );
209221 }
210222 }
211223 }
@@ -274,6 +286,18 @@ public RequestBody resolveRequestBody(RequestBody requestBody){
274286 return requestBody ;
275287 }
276288
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+
277301 public Callback resolveCallback (Callback callback ){
278302 RefFormat refFormat = computeRefFormat (callback .get$ref ());
279303 String $ref = callback .get$ref ();
0 commit comments