Hi all,

we are working a lot with RouteTemplates.
We often struggle the issue of the Route naming order dependency

What do you think? I have already created a JIRA Issue in the backlog:
https://issues.apache.org/jira/browse/CAMEL-18683

As a testcase:
Name your RouteTemplate: ZTemplate
and another Routebuilder which will use the defined Template in ZTemplate.

The Routebuilder will fail because the ZTemplate Route was not yet added to
the routescollections.

Suggestion: Use a dedicated class e.g. RouteTemplateBuilder to prioritize
Routebuilder with templates


See: RoutesConfigure.java

private void addDiscoveredRoutes(CamelContext camelContext,
List<RoutesBuilder> routes) throws Exception {
   // sort routes according to ordered
   routes.sort(OrderedComparator.get());

   // first add the routes configurations as they are globally for all
routes
   for (RoutesBuilder builder : routes) {
      if (builder instanceof RouteConfigurationsBuilder) {
         RouteConfigurationsBuilder rcb = (RouteConfigurationsBuilder)
builder;
         LOG.debug("Adding routes configurations into CamelContext from
RouteConfigurationsBuilder: {}", rcb);
        camelContext.addRoutesConfigurations(rcb);
      }
   }

// first add the all route templates as they are globally for all routes
for (RoutesBuilder builder : routes) {
   if (builder instanceof RouteTemplateBuilder) {
      LOG.debug("Adding route tempaltes into CamelContext from
RoutesBuilder: {}", builder);
      camelContext.addRoutes(builder);
      }
}


   // then add the routes
   for (RoutesBuilder builder : routes) {
      LOG.debug("Adding routes into CamelContext from RoutesBuilder: {}",
builder);
      camelContext.addRoutes(builder);
   }
}
}

Reply via email to