protected List<URI> getInnerContextConsumerList(CamelContext context) throws URISyntaxException { List<URI> consumerList = new ArrayList<>(); List<RouteDefinition> routeDefinitions = context.getRouteDefinitions(); for (RouteDefinition routeDefinition : routeDefinitions) { List<FromDefinition> inputs = routeDefinition.getInputs(); for (FromDefinition input : inputs) { consumerList.add(new URI(input.getUri())); } } return consumerList; }
private static FromDefinition getFromDefinition(ProcessorDefinition<?> definition) { ProcessorDefinition<?> parent = definition.getParent(); if( parent instanceof RouteDefinition ) { RouteDefinition route = (RouteDefinition) parent; List<ProcessorDefinition<?>> outputs = route.getOutputs(); if( outputs!=null && outputs.get(0) == definition) { return route.getInputs().get(0); } } return null; }
private ProcessorDefinition<?> configureRouteDefinition(ProcessorDefinition<?> definition, String flowName, String flowId, String stepId) { if (definition instanceof RouteDefinition) { final RouteDefinition rd = (RouteDefinition)definition; final List<RoutePolicy> rp = rd.getRoutePolicies(); if (rp != null && rp.stream().anyMatch(ActivityTrackingPolicy.class::isInstance)) { // Route has already been configured so no need to go ahead return definition; } if (ObjectHelper.isNotEmpty(flowName)) { rd.routeDescription(flowName); } rd.routeId(flowId); rd.routePolicy(new ActivityTrackingPolicy(activityTracker)); rd.getInputs().get(0).id(stepId); } return definition; }
@Override public void configure() throws Exception { final IntegrationDeployment deployment = loadDeployment(); final List<? extends Step> steps = deployment.getSpec().getSteps(); ProcessorDefinition route = null; for (int i = 0; i< steps.size(); i++) { final Step step = steps.get(i); if (i == 0 && !"endpoint".equals(step.getStepKind())) { throw new IllegalStateException("No connector found as first step (found: " + step.getKind() + ")"); } final IntegrationStepHandler handler = findHandler(step); final Optional<ProcessorDefinition> definition = handler.handle(step, route, this); if (route == null && definition.isPresent()) { definition.filter(RouteDefinition.class::isInstance) .map(RouteDefinition.class::cast) .map(rd -> rd.getInputs().get(0)) .ifPresent(rd -> { step.getId().ifPresent(rd::id); }); route = definition.get(); deployment.getIntegrationId().ifPresent(route::setId); } else { route = definition.map(rd -> { step.getId().ifPresent(rd::id); return rd; }).orElse(route); } } }
/** * If the integration has a scheduler, start the route with a timer or quartz2 * endpoint. */ private ProcessorDefinition<?> configureRouteScheduler(final Flow flow) throws URISyntaxException { if (flow.getScheduler().isPresent()) { Scheduler scheduler = flow.getScheduler().get(); // We now support simple timer only, cron support will be supported // later on. if (scheduler.isTimer()) { Map<String, String> properties = new HashMap<>(); properties.put("timerName", "integration"); properties.put("period", scheduler.getExpression()); final RuntimeCamelCatalog catalog = getContext().getRuntimeCamelCatalog(); final String uri = catalog.asEndpointUri("timer", properties, false); RouteDefinition route = this.from(uri); route.getInputs().get(0).setId("integration-scheduler"); flow.getId().ifPresent(route::setId); return route; } else { throw new IllegalArgumentException("Unsupported scheduler type: " + scheduler.getType()); } } return null; }
for (FromDefinition fromDefinition : routeTypeInfo.getRouteDefinition().getInputs()) { if (!StringUtils.isBlank(fromDefinition.getUri())) { uris.add(fromDefinition.getUri());
if (intercept.getUri() != null) { match = false; for (FromDefinition input : route.getInputs()) { if (EndpointHelper.matchEndpoint(input.getUri(), intercept.getUri())) { match = true;
findInputComponents(rd.getInputs(), components, languages, dataformats); findOutputComponents(rd.getOutputs(), components, languages, dataformats); if (o instanceof RouteDefinition) { RouteDefinition route = (RouteDefinition) o; findInputComponents(route.getInputs(), components, languages, dataformats); findOutputComponents(route.getOutputs(), components, languages, dataformats); } else if (o instanceof ToDefinition) {
@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); }
String routeId = routeDefinition.idOrCreate(nodeIdFactory); String routePath = path + "/" + routeId + "/"; List<FromDefinition> inputs = routeDefinition.getInputs(); for (FromDefinition input : inputs) { Endpoint endpoint = input.getEndpoint();
String routeId = routeDefinition.idOrCreate(nodeIdFactory); String routePath = path + "/" + routeId + "/"; List<FromDefinition> inputs = routeDefinition.getInputs(); for (FromDefinition input : inputs) { Endpoint endpoint = input.getEndpoint();
public static EcaRouteDefinition transform(RouteDefinition original) { if (original instanceof EcaRouteDefinition) { return (EcaRouteDefinition) original; } EcaRouteDefinition result = new EcaRouteDefinition(); result.setInputs(original.getInputs()); result.setOutputs(original.getOutputs()); result.setGroup(original.getGroup()); result.setStreamCache(original.getStreamCache()); result.setTrace(original.getTrace()); result.setHandleFault(original.getHandleFault()); result.setDelayer(original.getDelayer()); result.setAutoStartup(original.getAutoStartup()); result.setStartupOrder(original.getStartupOrder()); result.setRoutePolicies(original.getRoutePolicies()); result.setShutdownRoute(original.getShutdownRoute()); result.setShutdownRunningTask(original.getShutdownRunningTask()); return result; }