@@ -350,38 +350,98 @@ private void addPathItemSchemaRef(PathItem pathItem, Set<String> referencedDefin
350350 Map <PathItem .HttpMethod , Operation > ops = pathItem .readOperationsMap ();
351351 for (Operation op : ops .values ()) {
352352 if (op .getRequestBody () != null ) {
353- addContentSchemaRef (op .getRequestBody (). getContent (), referencedDefinitions );
353+ addRequestBodySchemaRef (op .getRequestBody (), referencedDefinitions );
354354 }
355355 if (op .getResponses () != null ) {
356356 for (String keyResponses : op .getResponses ().keySet ()) {
357357 ApiResponse response = op .getResponses ().get (keyResponses );
358- if (response .getHeaders () != null ) {
359- for (String keyHeaders : response .getHeaders ().keySet ()) {
360- Header header = response .getHeaders ().get (keyHeaders );
361- addSchemaRef (header .getSchema (), referencedDefinitions );
362- addContentSchemaRef (header .getContent (), referencedDefinitions );
363- }
364- }
365- addContentSchemaRef (response .getContent (), referencedDefinitions );
358+ addApiResponseSchemaRef (response , referencedDefinitions );
366359 }
367360 }
368361 if (op .getParameters () != null ) {
369362 for (Parameter parameter : op .getParameters ()) {
370- addSchemaRef (parameter .getSchema (), referencedDefinitions );
371- addContentSchemaRef (parameter .getContent (), referencedDefinitions );
363+ addParameterSchemaRef (parameter , referencedDefinitions );
372364 }
373365 }
374366 if (op .getCallbacks () != null ) {
375367 for (String keyCallback : op .getCallbacks ().keySet ()) {
376368 Callback callback = op .getCallbacks ().get (keyCallback );
377- for (PathItem callbackPathItem : callback .values ()) {
378- addPathItemSchemaRef (callbackPathItem , referencedDefinitions );
379- }
369+ addCallbackSchemaRef (callback , referencedDefinitions );
380370 }
381371 }
382372 }
383373 }
384374
375+ private void addApiResponseSchemaRef (ApiResponse response , Set <String > referencedDefinitions ) {
376+ if (response .getHeaders () != null ) {
377+ for (String keyHeaders : response .getHeaders ().keySet ()) {
378+ Header header = response .getHeaders ().get (keyHeaders );
379+ addHeaderSchemaRef (header , referencedDefinitions );
380+ }
381+ }
382+ addContentSchemaRef (response .getContent (), referencedDefinitions );
383+ }
384+
385+ private void addRequestBodySchemaRef (RequestBody requestBody , Set <String > referencedDefinitions ) {
386+ addContentSchemaRef (requestBody .getContent (), referencedDefinitions );
387+ }
388+
389+ private void addParameterSchemaRef (Parameter parameter , Set <String > referencedDefinitions ) {
390+ addSchemaRef (parameter .getSchema (), referencedDefinitions );
391+ addContentSchemaRef (parameter .getContent (), referencedDefinitions );
392+ }
393+
394+ private void addHeaderSchemaRef (Header header , Set <String > referencedDefinitions ) {
395+ addSchemaRef (header .getSchema (), referencedDefinitions );
396+ addContentSchemaRef (header .getContent (), referencedDefinitions );
397+ }
398+
399+ private void addCallbackSchemaRef (Callback callback , Set <String > referencedDefinitions ){
400+ for (PathItem callbackPathItem : callback .values ()) {
401+ addPathItemSchemaRef (callbackPathItem , referencedDefinitions );
402+ }
403+ }
404+
405+ private void addComponentsSchemaRef (Components components , Set <String > referencedDefinitions ){
406+
407+ if (components .getResponses () != null ){
408+ for (String resourcePath : components .getResponses ().keySet ()) {
409+ ApiResponse apiResponse = components .getResponses ().get (resourcePath );
410+ addApiResponseSchemaRef (apiResponse , referencedDefinitions );
411+ }
412+ }
413+ if (components .getRequestBodies () != null ){
414+ for (String requestBody : components .getRequestBodies ().keySet ()) {
415+ RequestBody requestBody1 = components .getRequestBodies ().get (requestBody );
416+ addRequestBodySchemaRef (requestBody1 , referencedDefinitions );
417+ }
418+ }
419+ if (components .getParameters () != null ){
420+ for (String parameter : components .getParameters ().keySet ()) {
421+ Parameter resourceParam = components .getParameters ().get (parameter );
422+ addParameterSchemaRef (resourceParam , referencedDefinitions );
423+ }
424+ }
425+ if (components .getHeaders () != null ){
426+ for (String header : components .getHeaders ().keySet ()) {
427+ Header resourceHeader = components .getHeaders ().get (header );
428+ addHeaderSchemaRef (resourceHeader , referencedDefinitions );
429+ }
430+ }
431+ if (components .getCallbacks () != null ){
432+ for (String callback : components .getCallbacks ().keySet ()){
433+ Callback resourceCallback = components .getCallbacks ().get (callback );
434+ addCallbackSchemaRef (resourceCallback , referencedDefinitions );
435+ }
436+ }
437+ if (components .getPathItems () != null ){
438+ for (String resourcePath : components .getPathItems ().keySet ()){
439+ PathItem pathItem = components .getPathItems ().get (resourcePath );
440+ addPathItemSchemaRef (pathItem , referencedDefinitions );
441+ }
442+ }
443+ }
444+
385445 protected OpenAPI removeBrokenReferenceDefinitions (OpenAPI openApi ) {
386446
387447 if (openApi == null || openApi .getComponents () == null || openApi .getComponents ().getSchemas () == null ) {
@@ -395,6 +455,16 @@ protected OpenAPI removeBrokenReferenceDefinitions(OpenAPI openApi) {
395455 addPathItemSchemaRef (pathItem , referencedDefinitions );
396456 }
397457 }
458+ if (openApi .getWebhooks () != null ){
459+ for (String resourcePath : openApi .getWebhooks ().keySet ()) {
460+ PathItem pathItem = openApi .getWebhooks ().get (resourcePath );
461+ addPathItemSchemaRef (pathItem , referencedDefinitions );
462+ }
463+ }
464+ if (openApi .getComponents () != null ){
465+ Components components = openApi .getComponents ();
466+ addComponentsSchemaRef (components , referencedDefinitions );
467+ }
398468
399469 referencedDefinitions .addAll (resolveAllNestedRefs (referencedDefinitions , referencedDefinitions , openApi ));
400470 openApi .getComponents ()
0 commit comments