in geronimo-openapi-impl/src/main/java/org/apache/geronimo/microprofile/openapi/impl/processor/AnnotationProcessor.java [606:656]
private void processComponents(final OpenAPI api, final Components components) {
final org.eclipse.microprofile.openapi.models.Components impl = new ComponentsImpl();
api.components(impl);
processCallbacks(api, components.callbacks());
if (components.schemas().length > 0) {
Map<String, org.eclipse.microprofile.openapi.models.media.Schema> schemas = Stream.of(components.schemas())
.map(it -> {
final String ref = of(it.name()).filter(n -> !n.isEmpty()).orElseGet(() -> it.ref());
return new SchemaWithRef(ref, mapSchema(api, it, ref));
})
.collect(toMap(it -> it.ref, it -> it.schema));
schemas.forEach((key, value) -> impl.getSchemas().putIfAbsent(key,value));
}
if (components.links().length > 0) {
impl.links(Stream.of(components.links()).collect(
toMap(it -> of(it.name()).filter(n -> !n.isEmpty()).orElseGet(() -> it.ref()), this::mapLink)));
}
if (components.securitySchemes().length > 0) {
impl.securitySchemes(Stream.of(components.securitySchemes())
.collect(toMap(
it -> of(it.securitySchemeName()).filter(v -> !v.isEmpty()).orElseGet(() -> it.ref()),
this::mapSecurityScheme)));
}
if (components.requestBodies().length > 0) {
impl.requestBodies(Stream.of(components.requestBodies())
.collect(toMap(it -> of(it.name()).filter(n -> !n.isEmpty()).orElseGet(() -> it.ref()),
it -> mapRequestBody(null, null, () -> impl, it))));
}
if (components.parameters().length > 0) {
impl.parameters(Stream.of(components.parameters())
.collect(toMap(it -> of(it.name()).filter(n -> !n.isEmpty()).orElseGet(() -> it.ref()),
it -> mapParameter(null, () -> impl, it))));
}
if (components.headers().length > 0) {
impl.headers(Stream.of(components.headers())
.collect(toMap(it -> of(it.name()).filter(n -> !n.isEmpty()).orElseGet(() -> it.ref()),
it -> mapHeader(() -> impl, it))));
}
if (components.examples().length > 0) {
impl.examples(Stream.of(components.examples()).collect(toMap(
it -> of(it.name()).filter(n -> !n.isEmpty()).orElseGet(() -> it.ref()), this::mapExample)));
}
if (components.responses().length > 0) {
final APIResponses responses = new APIResponsesImpl();
responses.putAll(Stream.of(components.responses())
.collect(toMap(it -> of(it.name()).filter(c -> !c.isEmpty()).orElseGet(() -> it.ref()),
it -> mapResponse(() -> impl, it, null), (a, b) -> b)));
impl.responses(responses);
}
}