use of org.eclipse.microprofile.openapi.models.servers.Server in project wildfly-swarm by wildfly-swarm.
the class OpenApiParser method readServers.
/**
* Reads a list of {@link Server} OpenAPI nodes.
* @param node
*/
private List<Server> readServers(JsonNode node) {
if (node == null || !node.isArray()) {
return null;
}
ArrayNode nodes = (ArrayNode) node;
List<Server> rval = new ArrayList<>(nodes.size());
for (JsonNode serverNode : nodes) {
ServerImpl model = new ServerImpl();
model.setUrl(JsonUtil.stringProperty(serverNode, OpenApiConstants.PROP_URL));
model.setDescription(JsonUtil.stringProperty(serverNode, OpenApiConstants.PROP_DESCRIPTION));
model.setVariables(readServerVariables(serverNode.get(OpenApiConstants.PROP_VARIABLES)));
readExtensions(serverNode, model);
rval.add(model);
}
return rval;
}
use of org.eclipse.microprofile.openapi.models.servers.Server in project wildfly-swarm by wildfly-swarm.
the class OpenApiAnnotationScanner method readServers.
/**
* Reads any Server annotations. The annotation value is an array of Server annotations.
* @param serverAnnos
*/
private List<Server> readServers(AnnotationValue serverAnnos) {
if (serverAnnos == null) {
return null;
}
LOG.debug("Processing an array of @Server annotations.");
AnnotationInstance[] nestedArray = serverAnnos.asNestedArray();
List<Server> servers = new ArrayList<>();
for (AnnotationInstance serverAnno : nestedArray) {
servers.add(readServer(serverAnno));
}
return servers;
}
use of org.eclipse.microprofile.openapi.models.servers.Server in project wildfly-swarm by wildfly-swarm.
the class OpenApiAnnotationScanner method jaxRsApplicationToOpenApi.
/**
* Processes a JAX-RS {@link Application} and creates an {@link OpenAPI} model. Performs
* annotation scanning and other processing. Returns a model unique to that single JAX-RS
* app.
* @param applicationClass
*/
private OpenAPIImpl jaxRsApplicationToOpenApi(ClassInfo applicationClass) {
OpenAPIImpl oai = new OpenAPIImpl();
oai.setOpenapi(OpenApiConstants.OPEN_API_VERSION);
// Get the @ApplicationPath info and save it for later (also support @Path which seems nonstandard but common).
// //////////////////////////////////////
AnnotationInstance appPathAnno = JandexUtil.getClassAnnotation(applicationClass, OpenApiConstants.DOTNAME_APPLICATION_PATH);
if (appPathAnno == null) {
appPathAnno = JandexUtil.getClassAnnotation(applicationClass, OpenApiConstants.DOTNAME_PATH);
}
if (appPathAnno != null) {
this.currentAppPath = appPathAnno.value().asString();
} else {
this.currentAppPath = "/";
}
// Get the @OpenAPIDefinition annotation and process it.
// //////////////////////////////////////
AnnotationInstance openApiDefAnno = JandexUtil.getClassAnnotation(applicationClass, OpenApiConstants.DOTNAME_OPEN_API_DEFINITION);
if (openApiDefAnno != null) {
processDefinition(oai, openApiDefAnno);
}
// Process @SecurityScheme annotations
// //////////////////////////////////////
List<AnnotationInstance> securitySchemeAnnotations = JandexUtil.getRepeatableAnnotation(applicationClass, OpenApiConstants.DOTNAME_SECURITY_SCHEME, OpenApiConstants.DOTNAME_SECURITY_SCHEMES);
for (AnnotationInstance annotation : securitySchemeAnnotations) {
String name = JandexUtil.stringValue(annotation, OpenApiConstants.PROP_SECURITY_SCHEME_NAME);
if (name == null && JandexUtil.isRef(annotation)) {
name = JandexUtil.nameFromRef(annotation);
}
if (name != null) {
SecurityScheme securityScheme = readSecurityScheme(annotation);
Components components = ModelUtil.components(oai);
components.addSecurityScheme(name, securityScheme);
}
}
// Process @Server annotations
// /////////////////////////////////
List<AnnotationInstance> serverAnnotations = JandexUtil.getRepeatableAnnotation(applicationClass, OpenApiConstants.DOTNAME_SERVER, OpenApiConstants.DOTNAME_SERVERS);
for (AnnotationInstance annotation : serverAnnotations) {
Server server = readServer(annotation);
oai.addServer(server);
}
return oai;
}
use of org.eclipse.microprofile.openapi.models.servers.Server in project wildfly-swarm by wildfly-swarm.
the class FilterUtil method filterServers.
/**
* Filters the given model.
* @param filter
* @param models
*/
private static void filterServers(OASFilter filter, List<Server> models) {
if (models == null) {
return;
}
ListIterator<Server> iterator = models.listIterator();
while (iterator.hasNext()) {
Server model = iterator.next();
filterServer(filter, model);
if (filter.filterServer(model) == null) {
iterator.remove();
}
}
}
use of org.eclipse.microprofile.openapi.models.servers.Server in project wildfly-swarm by wildfly-swarm.
the class ServersUtil method configureServers.
/**
* Configures the servers for an Operation.
* @param config
* @param operation
*/
protected static void configureServers(OpenApiConfig config, Operation operation) {
if (operation == null) {
return;
}
if (operation.getOperationId() == null) {
return;
}
Set<String> operationServers = config.operationServers(operation.getOperationId());
if (operationServers != null && !operationServers.isEmpty()) {
operation.servers(new ArrayList<>());
for (String operationServer : operationServers) {
Server server = new ServerImpl();
server.setUrl(operationServer);
operation.addServer(server);
}
}
}
Aggregations