@@ -26,45 +26,91 @@ public override void Visit(IOpenApiReferenceable referenceable)
2626 switch ( referenceable )
2727 {
2828 case OpenApiSchema schema :
29- EnsureComponentsExists ( ) ;
30- EnsureSchemasExists ( ) ;
29+ EnsureComponentsExist ( ) ;
30+ EnsureSchemasExist ( ) ;
3131 if ( ! Components . Schemas . ContainsKey ( schema . Reference . Id ) )
3232 {
3333 Components . Schemas . Add ( schema . Reference . Id , schema ) ;
3434 }
3535 break ;
3636
3737 case OpenApiParameter parameter :
38- EnsureComponentsExists ( ) ;
39- EnsureParametersExists ( ) ;
38+ EnsureComponentsExist ( ) ;
39+ EnsureParametersExist ( ) ;
4040 if ( ! Components . Parameters . ContainsKey ( parameter . Reference . Id ) )
4141 {
4242 Components . Parameters . Add ( parameter . Reference . Id , parameter ) ;
4343 }
4444 break ;
4545
4646 case OpenApiResponse response :
47- EnsureComponentsExists ( ) ;
48- EnsureResponsesExists ( ) ;
47+ EnsureComponentsExist ( ) ;
48+ EnsureResponsesExist ( ) ;
4949 if ( ! Components . Responses . ContainsKey ( response . Reference . Id ) )
5050 {
5151 Components . Responses . Add ( response . Reference . Id , response ) ;
5252 }
5353 break ;
5454
5555 case OpenApiRequestBody requestBody :
56- EnsureComponentsExists ( ) ;
57- EnsureResponsesExists ( ) ;
58- EnsurRequestBodiesExists ( ) ;
56+ EnsureComponentsExist ( ) ;
57+ EnsureResponsesExist ( ) ;
58+ EnsureRequestBodiesExist ( ) ;
5959 if ( ! Components . RequestBodies . ContainsKey ( requestBody . Reference . Id ) )
6060 {
6161 Components . RequestBodies . Add ( requestBody . Reference . Id , requestBody ) ;
6262 }
6363 break ;
6464
65+ case OpenApiExample example :
66+ EnsureComponentsExist ( ) ;
67+ EnsureExamplesExist ( ) ;
68+ if ( ! Components . Examples . ContainsKey ( example . Reference . Id ) )
69+ {
70+ Components . Examples . Add ( example . Reference . Id , example ) ;
71+ }
72+ break ;
73+
74+ case OpenApiHeader header :
75+ EnsureComponentsExist ( ) ;
76+ EnsureHeadersExist ( ) ;
77+ if ( ! Components . Headers . ContainsKey ( header . Reference . Id ) )
78+ {
79+ Components . Headers . Add ( header . Reference . Id , header ) ;
80+ }
81+ break ;
82+
83+ case OpenApiCallback callback :
84+ EnsureComponentsExist ( ) ;
85+ EnsureCallbacksExist ( ) ;
86+ if ( ! Components . Callbacks . ContainsKey ( callback . Reference . Id ) )
87+ {
88+ Components . Callbacks . Add ( callback . Reference . Id , callback ) ;
89+ }
90+ break ;
91+
92+ case OpenApiLink link :
93+ EnsureComponentsExist ( ) ;
94+ EnsureLinksExist ( ) ;
95+ if ( ! Components . Links . ContainsKey ( link . Reference . Id ) )
96+ {
97+ Components . Links . Add ( link . Reference . Id , link ) ;
98+ }
99+ break ;
100+
101+ case OpenApiSecurityScheme securityScheme :
102+ EnsureComponentsExist ( ) ;
103+ EnsureSecuritySchemesExist ( ) ;
104+ if ( ! Components . SecuritySchemes . ContainsKey ( securityScheme . Reference . Id ) )
105+ {
106+ Components . SecuritySchemes . Add ( securityScheme . Reference . Id , securityScheme ) ;
107+ }
108+ break ;
109+
65110 default :
66111 break ;
67112 }
113+
68114 base . Visit ( referenceable ) ;
69115 }
70116
@@ -77,8 +123,8 @@ public override void Visit(OpenApiSchema schema)
77123 // This is needed to handle schemas used in Responses in components
78124 if ( schema . Reference != null )
79125 {
80- EnsureComponentsExists ( ) ;
81- EnsureSchemasExists ( ) ;
126+ EnsureComponentsExist ( ) ;
127+ EnsureSchemasExist ( ) ;
82128 if ( ! Components . Schemas . ContainsKey ( schema . Reference . Id ) )
83129 {
84130 Components . Schemas . Add ( schema . Reference . Id , schema ) ;
@@ -87,41 +133,54 @@ public override void Visit(OpenApiSchema schema)
87133 base . Visit ( schema ) ;
88134 }
89135
90- private void EnsureComponentsExists ( )
136+ private void EnsureComponentsExist ( )
91137 {
92- if ( _target . Components == null )
93- {
94- _target . Components = new ( ) ;
95- }
138+ _target . Components ??= new ( ) ;
96139 }
97140
98- private void EnsureSchemasExists ( )
141+ private void EnsureSchemasExist ( )
99142 {
100- if ( _target . Components . Schemas == null )
101- {
102- _target . Components . Schemas = new Dictionary < string , OpenApiSchema > ( ) ;
103- }
143+ _target . Components . Schemas ??= new Dictionary < string , OpenApiSchema > ( ) ;
104144 }
105145
106- private void EnsureParametersExists ( )
146+ private void EnsureParametersExist ( )
107147 {
108- if ( _target . Components . Parameters == null )
109- {
110- _target . Components . Parameters = new Dictionary < string , OpenApiParameter > ( ) ;
111- }
148+ _target . Components . Parameters ??= new Dictionary < string , OpenApiParameter > ( ) ;
112149 }
113150
114- private void EnsureResponsesExists ( )
151+ private void EnsureResponsesExist ( )
115152 {
116- if ( _target . Components . Responses == null )
117- {
118- _target . Components . Responses = new Dictionary < string , OpenApiResponse > ( ) ;
119- }
153+ _target . Components . Responses ??= new Dictionary < string , OpenApiResponse > ( ) ;
120154 }
121155
122- private void EnsurRequestBodiesExists ( )
156+ private void EnsureRequestBodiesExist ( )
123157 {
124158 _target . Components . RequestBodies ??= new Dictionary < string , OpenApiRequestBody > ( ) ;
125159 }
160+
161+ private void EnsureExamplesExist ( )
162+ {
163+ _target . Components . Examples ??= new Dictionary < string , OpenApiExample > ( ) ;
164+ }
165+
166+ private void EnsureHeadersExist ( )
167+ {
168+ _target . Components . Headers ??= new Dictionary < string , OpenApiHeader > ( ) ;
169+ }
170+
171+ private void EnsureCallbacksExist ( )
172+ {
173+ _target . Components . Callbacks ??= new Dictionary < string , OpenApiCallback > ( ) ;
174+ }
175+
176+ private void EnsureLinksExist ( )
177+ {
178+ _target . Components . Links ??= new Dictionary < string , OpenApiLink > ( ) ;
179+ }
180+
181+ private void EnsureSecuritySchemesExist ( )
182+ {
183+ _target . Components . SecuritySchemes ??= new Dictionary < string , OpenApiSecurityScheme > ( ) ;
184+ }
126185 }
127186}
0 commit comments