use of fish.payara.microprofile.openapi.impl.model.OpenAPIImpl in project Payara by payara.
the class OpenApiResource method getResponse.
@GET
@Produces({ APPLICATION_YAML, APPLICATION_JSON })
public Response getResponse(@Context HttpServletRequest request, @Context HttpServletResponse response) throws IOException {
OpenApiService openApiService = OpenApiService.getInstance();
// If the server is disabled, throw an error
if (!openApiService.isEnabled()) {
response.sendError(FORBIDDEN.getStatusCode(), "MicroProfile OpenAPI Service is disabled.");
return Response.status(FORBIDDEN).build();
}
// Get the OpenAPI document
OpenAPI document = null;
try {
document = openApiService.getDocument();
} catch (OpenAPIBuildException | IOException ex) {
LOGGER.log(WARNING, "OpenAPI document creation failed.", ex);
}
// If there are none, return an empty OpenAPI document
if (document == null) {
LOGGER.info("No OpenAPI document found.");
OpenAPI result = new BaseProcessor(new ArrayList<>()).process(new OpenAPIImpl(), null);
return Response.status(Status.NOT_FOUND).entity(result).build();
}
// Return the document
return Response.ok(document).build();
}
use of fish.payara.microprofile.openapi.impl.model.OpenAPIImpl in project Payara by payara.
the class OpenAPISupplier method get.
@Override
public synchronized OpenAPI get() {
if (this.document != null) {
return this.document;
}
if (!enabled) {
return null;
}
try {
final Parser parser = Globals.get(ApplicationLifecycle.class).getDeployableParser(archive, true, true, StructuredDeploymentTracing.create(applicationId), Logger.getLogger(OpenApiService.class.getName()));
final Types types = parser.getContext().getTypes();
OpenAPI doc = new OpenAPIImpl();
try {
final List<URL> baseURLs = getServerURL(contextRoot);
doc = new ConfigPropertyProcessor().process(doc, config);
doc = new ModelReaderProcessor().process(doc, config);
doc = new FileProcessor(classLoader).process(doc, config);
doc = new ApplicationProcessor(types, filterTypes(archive, config, types), classLoader).process(doc, config);
doc = new BaseProcessor(baseURLs).process(doc, config);
doc = new FilterProcessor().process(doc, config);
} finally {
this.document = doc;
}
return this.document;
} catch (Exception ex) {
throw new RuntimeException("An error occurred while creating the OpenAPI document.", ex);
}
}
use of fish.payara.microprofile.openapi.impl.model.OpenAPIImpl in project Payara by payara.
the class ApplicationProcessedDocument method createDocument.
public static OpenAPI createDocument(Class<? extends OASFilter> filter, Class<?>... extraClasses) {
try {
ApplicationClassLoader appClassLoader = new ApplicationClassLoader(new HashSet<>(asList(extraClasses)));
OpenAPIImpl document = new OpenAPIImpl();
// Apply base processor
new BaseProcessor(asList(new URL("http://localhost:8080/testlocation_123"))).process(document, null);
// Apply application processor
new ApplicationProcessor(getTypes(), getApplicationTypes(extraClasses), appClassLoader).process(document, null);
if (filter != null) {
new FilterProcessor(filter.newInstance()).process(document, null);
}
return document;
} catch (IOException | IllegalAccessException | InstantiationException | InterruptedException ex) {
throw new AssertionError("Failed to build document.", ex);
}
}
Aggregations