squakez commented on a change in pull request #648:
URL: https://github.com/apache/camel-k-runtime/pull/648#discussion_r612482125
##########
File path:
camel-k-core/support/src/main/java/org/apache/camel/k/support/SourcesSupport.java
##########
@@ -128,21 +130,64 @@ public void afterConfigure(RouteBuilder builder) {
}
});
break;
+ case errorHandler:
+ if (!source.getInterceptors().isEmpty()) {
+ LOGGER.warn("Interceptors associated to the route template
{} will be ignored", source.getName());
+ }
+
+ interceptors = List.of(new RouteBuilderLifecycleStrategy() {
+ @Override
+ public void afterConfigure(RouteBuilder builder) {
+ List<RouteDefinition> routes =
builder.getRouteCollection().getRoutes();
+ List<RouteTemplateDefinition> templates =
builder.getRouteTemplateCollection().getRouteTemplates();
+
+ if (routes.size() > 0) {
+ throw new IllegalArgumentException("There should
be no route definition, got " + routes.size());
+ }
+ if (!templates.isEmpty()) {
+ throw new IllegalArgumentException("There should
not be any template, got " + templates.size());
+ }
+
+ if (existErrorHandler(builder)) {
+ LOGGER.debug("Setting default error handler
builder factory as {}", builder.getErrorHandlerBuilder());
+
runtime.getCamelContext().adapt(ExtendedCamelContext.class).setErrorHandlerFactory(builder.getErrorHandlerBuilder());
+ }
+ }
+ });
+ break;
default:
throw new IllegalArgumentException("Unknown source type: " +
source.getType());
}
try {
final Resource resource =
Sources.asResource(runtime.getCamelContext(), source);
- final ExtendedCamelContext ecc =
runtime.getCamelContext(ExtendedCamelContext.class);
+ final ExtendedCamelContext ecc =
runtime.getCamelContext(ExtendedCamelContext.class);
final Collection<RoutesBuilder> builders =
ecc.getRoutesLoader().findRoutesBuilders(resource);
builders.stream()
- .map(RouteBuilder.class::cast)
- .peek(b -> interceptors.forEach(b::addLifecycleInterceptor))
- .forEach(runtime::addRoutes);
+ .map(RouteBuilder.class::cast)
+ .peek(b ->
interceptors.forEach(b::addLifecycleInterceptor))
+ .forEach(runtime::addRoutes);
} catch (Exception e) {
throw RuntimeCamelException.wrapRuntimeCamelException(e);
}
}
+
+ static boolean existErrorHandler(RouteBuilder builder) {
Review comment:
Okey, I've used a method here to add that workaround. Makes sense to use
the same convention.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]