@@ -26,42 +26,87 @@ public override void Visit(IOpenApiReferenceable referenceable)
26
26
switch ( referenceable )
27
27
{
28
28
case OpenApiSchema schema :
29
- EnsureComponentsExists ( ) ;
30
- EnsureSchemasExists ( ) ;
29
+ EnsureComponentsExist ( ) ;
30
+ EnsureSchemasExist ( ) ;
31
31
if ( ! Components . Schemas . ContainsKey ( schema . Reference . Id ) )
32
32
{
33
33
Components . Schemas . Add ( schema . Reference . Id , schema ) ;
34
34
}
35
35
break ;
36
36
37
37
case OpenApiParameter parameter :
38
- EnsureComponentsExists ( ) ;
39
- EnsureParametersExists ( ) ;
38
+ EnsureComponentsExist ( ) ;
39
+ EnsureParametersExist ( ) ;
40
40
if ( ! Components . Parameters . ContainsKey ( parameter . Reference . Id ) )
41
41
{
42
42
Components . Parameters . Add ( parameter . Reference . Id , parameter ) ;
43
43
}
44
44
break ;
45
45
46
46
case OpenApiResponse response :
47
- EnsureComponentsExists ( ) ;
48
- EnsureResponsesExists ( ) ;
47
+ EnsureComponentsExist ( ) ;
48
+ EnsureResponsesExist ( ) ;
49
49
if ( ! Components . Responses . ContainsKey ( response . Reference . Id ) )
50
50
{
51
51
Components . Responses . Add ( response . Reference . Id , response ) ;
52
52
}
53
53
break ;
54
54
55
55
case OpenApiRequestBody requestBody :
56
- EnsureComponentsExists ( ) ;
57
- EnsureResponsesExists ( ) ;
58
- EnsurRequestBodiesExists ( ) ;
56
+ EnsureComponentsExist ( ) ;
57
+ EnsureResponsesExist ( ) ;
58
+ EnsureRequestBodiesExist ( ) ;
59
59
if ( ! Components . RequestBodies . ContainsKey ( requestBody . Reference . Id ) )
60
60
{
61
61
Components . RequestBodies . Add ( requestBody . Reference . Id , requestBody ) ;
62
62
}
63
63
break ;
64
64
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
+
65
110
default :
66
111
break ;
67
112
}
@@ -77,8 +122,8 @@ public override void Visit(OpenApiSchema schema)
77
122
// This is needed to handle schemas used in Responses in components
78
123
if ( schema . Reference != null )
79
124
{
80
- EnsureComponentsExists ( ) ;
81
- EnsureSchemasExists ( ) ;
125
+ EnsureComponentsExist ( ) ;
126
+ EnsureSchemasExist ( ) ;
82
127
if ( ! Components . Schemas . ContainsKey ( schema . Reference . Id ) )
83
128
{
84
129
Components . Schemas . Add ( schema . Reference . Id , schema ) ;
@@ -87,41 +132,54 @@ public override void Visit(OpenApiSchema schema)
87
132
base . Visit ( schema ) ;
88
133
}
89
134
90
- private void EnsureComponentsExists ( )
135
+ private void EnsureComponentsExist ( )
91
136
{
92
- if ( _target . Components == null )
93
- {
94
- _target . Components = new ( ) ;
95
- }
137
+ _target . Components ??= new ( ) ;
96
138
}
97
139
98
- private void EnsureSchemasExists ( )
140
+ private void EnsureSchemasExist ( )
99
141
{
100
- if ( _target . Components . Schemas == null )
101
- {
102
- _target . Components . Schemas = new Dictionary < string , OpenApiSchema > ( ) ;
103
- }
142
+ _target . Components . Schemas ??= new Dictionary < string , OpenApiSchema > ( ) ;
104
143
}
105
144
106
- private void EnsureParametersExists ( )
145
+ private void EnsureParametersExist ( )
107
146
{
108
- if ( _target . Components . Parameters == null )
109
- {
110
- _target . Components . Parameters = new Dictionary < string , OpenApiParameter > ( ) ;
111
- }
147
+ _target . Components . Parameters ??= new Dictionary < string , OpenApiParameter > ( ) ;
112
148
}
113
149
114
- private void EnsureResponsesExists ( )
150
+ private void EnsureResponsesExist ( )
115
151
{
116
- if ( _target . Components . Responses == null )
117
- {
118
- _target . Components . Responses = new Dictionary < string , OpenApiResponse > ( ) ;
119
- }
152
+ _target . Components . Responses ??= new Dictionary < string , OpenApiResponse > ( ) ;
120
153
}
121
154
122
- private void EnsurRequestBodiesExists ( )
155
+ private void EnsureRequestBodiesExist ( )
123
156
{
124
157
_target . Components . RequestBodies ??= new Dictionary < string , OpenApiRequestBody > ( ) ;
125
158
}
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
+ }
126
184
}
127
185
}
0 commit comments