@@ -26,42 +26,87 @@ 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 }
@@ -77,8 +122,8 @@ public override void Visit(OpenApiSchema schema)
77122 // This is needed to handle schemas used in Responses in components
78123 if ( schema . Reference != null )
79124 {
80- EnsureComponentsExists ( ) ;
81- EnsureSchemasExists ( ) ;
125+ EnsureComponentsExist ( ) ;
126+ EnsureSchemasExist ( ) ;
82127 if ( ! Components . Schemas . ContainsKey ( schema . Reference . Id ) )
83128 {
84129 Components . Schemas . Add ( schema . Reference . Id , schema ) ;
@@ -87,41 +132,54 @@ public override void Visit(OpenApiSchema schema)
87132 base . Visit ( schema ) ;
88133 }
89134
90- private void EnsureComponentsExists ( )
135+ private void EnsureComponentsExist ( )
91136 {
92- if ( _target . Components == null )
93- {
94- _target . Components = new ( ) ;
95- }
137+ _target . Components ??= new ( ) ;
96138 }
97139
98- private void EnsureSchemasExists ( )
140+ private void EnsureSchemasExist ( )
99141 {
100- if ( _target . Components . Schemas == null )
101- {
102- _target . Components . Schemas = new Dictionary < string , OpenApiSchema > ( ) ;
103- }
142+ _target . Components . Schemas ??= new Dictionary < string , OpenApiSchema > ( ) ;
104143 }
105144
106- private void EnsureParametersExists ( )
145+ private void EnsureParametersExist ( )
107146 {
108- if ( _target . Components . Parameters == null )
109- {
110- _target . Components . Parameters = new Dictionary < string , OpenApiParameter > ( ) ;
111- }
147+ _target . Components . Parameters ??= new Dictionary < string , OpenApiParameter > ( ) ;
112148 }
113149
114- private void EnsureResponsesExists ( )
150+ private void EnsureResponsesExist ( )
115151 {
116- if ( _target . Components . Responses == null )
117- {
118- _target . Components . Responses = new Dictionary < string , OpenApiResponse > ( ) ;
119- }
152+ _target . Components . Responses ??= new Dictionary < string , OpenApiResponse > ( ) ;
120153 }
121154
122- private void EnsurRequestBodiesExists ( )
155+ private void EnsureRequestBodiesExist ( )
123156 {
124157 _target . Components . RequestBodies ??= new Dictionary < string , OpenApiRequestBody > ( ) ;
125158 }
159+
160+ private void EnsureExamplesExist ( )
161+ {
162+ _target . Components . Examples ??= new Dictionary < string , OpenApiExample > ( ) ;
163+ }
164+
165+ private void EnsureHeadersExist ( )
166+ {
167+ _target . Components . Headers ??= new Dictionary < string , OpenApiHeader > ( ) ;
168+ }
169+
170+ private void EnsureCallbacksExist ( )
171+ {
172+ _target . Components . Callbacks ??= new Dictionary < string , OpenApiCallback > ( ) ;
173+ }
174+
175+ private void EnsureLinksExist ( )
176+ {
177+ _target . Components . Callbacks ??= new Dictionary < string , OpenApiCallback > ( ) ;
178+ }
179+
180+ private void EnsureSecuritySchemesExist ( )
181+ {
182+ _target . Components . Callbacks ??= new Dictionary < string , OpenApiCallback > ( ) ;
183+ }
126184 }
127185}
0 commit comments