1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.juneau.bean.openapi3;
18
19 import static org.apache.juneau.commons.utils.AssertionUtils.*;
20 import static org.apache.juneau.commons.utils.CollectionUtils.*;
21 import static org.apache.juneau.commons.utils.Utils.*;
22 import static org.apache.juneau.internal.ConverterUtils.*;
23
24 import java.util.*;
25
26 import org.apache.juneau.commons.collections.*;
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85 public class Components extends OpenApiElement {
86
87 private Map<String,SchemaInfo> schemas;
88 private Map<String,Response> responses;
89 private Map<String,Parameter> parameters;
90 private Map<String,Example> examples;
91 private Map<String,RequestBodyInfo> requestBodies;
92 private Map<String,HeaderInfo> headers;
93 private Map<String,SecuritySchemeInfo> securitySchemes;
94 private Map<String,Link> links;
95 private Map<String,Callback> callbacks;
96
97
98
99
100 public Components() {}
101
102
103
104
105
106
107 public Components(Components copyFrom) {
108 super(copyFrom);
109 this.schemas = copyOf(copyFrom.schemas);
110 this.responses = copyOf(copyFrom.responses);
111 this.parameters = copyOf(copyFrom.parameters);
112 this.examples = copyOf(copyFrom.examples);
113 this.requestBodies = copyOf(copyFrom.requestBodies);
114 this.headers = copyOf(copyFrom.headers);
115 this.securitySchemes = copyOf(copyFrom.securitySchemes);
116 this.links = copyOf(copyFrom.links);
117 this.callbacks = copyOf(copyFrom.callbacks);
118 }
119
120
121
122
123
124
125 public Components copy() {
126 return new Components(this);
127 }
128
129 @Override
130 public <T> T get(String property, Class<T> type) {
131 assertArgNotNull("property", property);
132 return switch (property) {
133 case "schemas" -> toType(getSchemas(), type);
134 case "responses" -> toType(getResponses(), type);
135 case "parameters" -> toType(getParameters(), type);
136 case "examples" -> toType(getExamples(), type);
137 case "requestBodies" -> toType(getRequestBodies(), type);
138 case "headers" -> toType(getHeaders(), type);
139 case "securitySchemes" -> toType(getSecuritySchemes(), type);
140 case "links" -> toType(getLinks(), type);
141 case "callbacks" -> toType(getCallbacks(), type);
142 default -> super.get(property, type);
143 };
144 }
145
146
147
148
149
150
151 public Map<String,Callback> getCallbacks() { return callbacks; }
152
153
154
155
156
157
158 public Map<String,Example> getExamples() { return examples; }
159
160
161
162
163
164
165 public Map<String,HeaderInfo> getHeaders() { return headers; }
166
167
168
169
170
171
172 public Map<String,Link> getLinks() { return links; }
173
174
175
176
177
178
179 public Map<String,Parameter> getParameters() { return parameters; }
180
181
182
183
184
185
186 public Map<String,RequestBodyInfo> getRequestBodies() { return requestBodies; }
187
188
189
190
191
192
193 public Map<String,Response> getResponses() { return responses; }
194
195
196
197
198
199
200 public Map<String,SchemaInfo> getSchemas() { return schemas; }
201
202
203
204
205
206
207 public Map<String,SecuritySchemeInfo> getSecuritySchemes() { return securitySchemes; }
208
209 @Override
210 public Set<String> keySet() {
211
212 var s = setb(String.class)
213 .addIf(nn(callbacks), "callbacks")
214 .addIf(nn(examples), "examples")
215 .addIf(nn(headers), "headers")
216 .addIf(nn(links), "links")
217 .addIf(nn(parameters), "parameters")
218 .addIf(nn(requestBodies), "requestBodies")
219 .addIf(nn(responses), "responses")
220 .addIf(nn(schemas), "schemas")
221 .addIf(nn(securitySchemes), "securitySchemes")
222 .build();
223
224 return new MultiSet<>(s, super.keySet());
225 }
226
227 @Override
228 public Components set(String property, Object value) {
229 assertArgNotNull("property", property);
230 return switch (property) {
231 case "callbacks" -> setCallbacks(toMapBuilder(value, String.class, Callback.class).sparse().build());
232 case "examples" -> setExamples(toMapBuilder(value, String.class, Example.class).sparse().build());
233 case "headers" -> setHeaders(toMapBuilder(value, String.class, HeaderInfo.class).sparse().build());
234 case "links" -> setLinks(toMapBuilder(value, String.class, Link.class).sparse().build());
235 case "parameters" -> setParameters(toMapBuilder(value, String.class, Parameter.class).sparse().build());
236 case "requestBodies" -> setRequestBodies(toMapBuilder(value, String.class, RequestBodyInfo.class).sparse().build());
237 case "responses" -> setResponses(toMapBuilder(value, String.class, Response.class).sparse().build());
238 case "schemas" -> setSchemas(toMapBuilder(value, String.class, SchemaInfo.class).sparse().build());
239 case "securitySchemes" -> setSecuritySchemes(toMapBuilder(value, String.class, SecuritySchemeInfo.class).sparse().build());
240 default -> {
241 super.set(property, value);
242 yield this;
243 }
244 };
245 }
246
247
248
249
250
251
252
253 public Components setCallbacks(Map<String,Callback> value) {
254 callbacks = value;
255 return this;
256 }
257
258
259
260
261
262
263
264 public Components setExamples(Map<String,Example> value) {
265 examples = value;
266 return this;
267 }
268
269
270
271
272
273
274
275 public Components setHeaders(Map<String,HeaderInfo> value) {
276 headers = value;
277 return this;
278 }
279
280
281
282
283
284
285
286 public Components setLinks(Map<String,Link> value) {
287 links = value;
288 return this;
289 }
290
291
292
293
294
295
296
297 public Components setParameters(Map<String,Parameter> value) {
298 parameters = value;
299 return this;
300 }
301
302
303
304
305
306
307
308 public Components setRequestBodies(Map<String,RequestBodyInfo> value) {
309 requestBodies = value;
310 return this;
311 }
312
313
314
315
316
317
318
319 public Components setResponses(Map<String,Response> value) {
320 responses = value;
321 return this;
322 }
323
324
325
326
327
328
329
330 public Components setSchemas(Map<String,SchemaInfo> value) {
331 schemas = value;
332 return this;
333 }
334
335
336
337
338
339
340
341 public Components setSecuritySchemes(Map<String,SecuritySchemeInfo> value) {
342 securitySchemes = value;
343 return this;
344 }
345
346 @Override
347 public Components strict() {
348 super.strict();
349 return this;
350 }
351
352 @Override
353 public Components strict(Object value) {
354 super.strict(value);
355 return this;
356 }
357 }