/** * To automatic add IntegrationRouteBuilder which loads syndesis integration * from classpath. */ @Bean @ConditionalOnMissingBean(IntegrationRouteBuilder.class) public RouteBuilder integrationRouteBuilder() { final String location = configuration.getConfigurationLocation(); final List<IntegrationStepHandler> handlers = new ArrayList<>(); // register handlers discovered from application context handlers.addAll(integrationStepHandlers); // register handlers discovered using service loader for (IntegrationStepHandler handler : ServiceLoader.load(IntegrationStepHandler.class, Thread.currentThread().getContextClassLoader())) { handlers.add(handler); } // IntegrationRouteBuilder automatically add known handlers to the list // of provided ones, know handlers have priority return new IntegrationRouteBuilder(location, handlers); }
@Test public void testBuilder() throws Exception { IntegrationRuntimeConfiguration configuration = new IntegrationRuntimeConfiguration(); IntegrationRouteBuilder routeBuilder = new IntegrationRouteBuilder(configuration.getConfigurationLocation(), Collections.emptyList()); // initialize routes routeBuilder.configure(); // Dump routes as XML for troubleshooting dumpRoutes(new DefaultCamelContext(), routeBuilder.getRouteCollection()); RoutesDefinition routes = routeBuilder.getRouteCollection(); assertThat(routes.getRoutes()).hasSize(1); RouteDefinition route = routes.getRoutes().get(0); assertThat(route.getInputs()).hasSize(1); assertThat(route.getInputs().get(0)).hasFieldOrPropertyWithValue("uri", "direct:expression"); assertThat(route.getOutputs()).hasSize(4); assertThat(getOutput(route, 0)).isInstanceOf(SetHeaderDefinition.class); assertThat(getOutput(route, 1)).isInstanceOf(SetHeaderDefinition.class); assertThat(getOutput(route, 2)).isInstanceOf(ProcessDefinition.class); assertThat(getOutput(route, 3)).isInstanceOf(PipelineDefinition.class); assertThat(getOutput(route, 3).getOutputs()).hasSize(2); assertThat(getOutput(route, 3, 0)).isInstanceOf(SetHeaderDefinition.class); assertThat(getOutput(route, 3, 1)).isInstanceOf(SplitDefinition.class); assertThat(getOutput(route, 3, 1).getOutputs()).hasSize(2); assertThat(getOutput(route, 3, 1, 0)).isInstanceOf(ProcessDefinition.class); assertThat(getOutput(route, 3, 1, 1)).isInstanceOf(PipelineDefinition.class); assertThat(getOutput(route, 3, 1, 1).getOutputs()).hasSize(3); assertThat(getOutput(route, 3, 1, 1, 0)).isInstanceOf(SetHeaderDefinition.class); assertThat(getOutput(route, 3, 1, 1, 1)).isInstanceOf(ToDefinition.class); assertThat(getOutput(route, 3, 1, 1, 1)).hasFieldOrPropertyWithValue("uri", "mock:expression"); assertThat(getOutput(route, 3, 1, 1, 2)).isInstanceOf(ProcessDefinition.class); }
@Override public void beforeApplicationStart(CamelContext camelContext) { final String location = configuration.getConfigurationLocation(); final List<IntegrationStepHandler> handlers = new ArrayList<>(); // register handlers discovered from application context handlers.addAll(integrationStepHandlers); // register handlers discovered using service loader for (IntegrationStepHandler handler : ServiceLoader.load(IntegrationStepHandler.class, Thread.currentThread().getContextClassLoader())) { handlers.add(handler); } // IntegrationRouteBuilder automatically add known handlers to // the list of provided ones, know handlers have priority final RouteBuilder routeBuilder = new IntegrationRouteBuilder(location, handlers, activityTracker); try { // Register routes to the camel context camelContext.addRoutes(routeBuilder); } catch (@SuppressWarnings("PMD.AvoidCatchingGenericException") Exception e) { throw new IllegalArgumentException(e); } }