in extensions/openapi-java/deployment/src/main/java/org/apache/camel/quarkus/component/openapi/java/deployment/OpenApiJavaProcessor.java [107:152]
void exposeOpenAPI(List<CamelRoutesBuilderClassBuildItem> routesBuilderClasses,
BuildProducer<AddToOpenAPIDefinitionBuildItem> openAPI,
Capabilities capabilities) throws Exception {
if (capabilities.isPresent(Capability.SMALLRYE_OPENAPI)) {
RoutesConfigurer configurer = new RoutesConfigurer();
List<RoutesBuilder> routes = new ArrayList<>();
configurer.setRoutesBuilders(routes);
configurer.setRoutesCollector(new DefaultRoutesCollector());
configurer.setRoutesIncludePattern(
CamelSupport.getOptionalConfigValue("camel.main.routes-include-pattern", String.class, null));
configurer.setRoutesExcludePattern(
CamelSupport.getOptionalConfigValue("camel.main.routes-exclude-pattern", String.class, null));
final CamelContext ctx = new DefaultCamelContext();
if (!routesBuilderClasses.isEmpty()) {
final ClassLoader loader = Thread.currentThread().getContextClassLoader();
if (!(loader instanceof QuarkusClassLoader)) {
throw new IllegalStateException(
QuarkusClassLoader.class.getSimpleName() + " expected as the context class loader");
}
for (CamelRoutesBuilderClassBuildItem routesBuilderClass : routesBuilderClasses) {
final String className = routesBuilderClass.getDotName().toString();
final Class<?> cl = loader.loadClass(className);
if (RouteBuilder.class.isAssignableFrom(cl)) {
try {
final RouteBuilder rb = (RouteBuilder) cl.getDeclaredConstructor().newInstance();
routes.add(rb);
} catch (InstantiationException | IllegalAccessException e) {
throw new RuntimeException("Could not instantiate " + className, e);
}
}
}
}
try {
configurer.configureRoutes(ctx);
} catch (Exception e) {
//ignore
LOGGER.warn("config routes failed with " + e);
}
openAPI.produce(new AddToOpenAPIDefinitionBuildItem(new CamelRestOASFilter(ctx)));
}
}