use of fish.payara.microprofile.openapi.impl.processor.FilterProcessor 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.processor.FilterProcessor 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