Search in sources :

Example 1 with StepStartTracker

use of io.syndesis.integration.runtime.logging.StepStartTracker in project syndesis by syndesisio.

the class IntegrationRouteBuilder method configure.

@SuppressWarnings("PMD")
@Override
public void configure() throws Exception {
    final Integration integration = loadIntegration();
    final List<Step> steps = Collections.unmodifiableList(integration.getSteps());
    if (steps.isEmpty()) {
        return;
    }
    ProcessorDefinition route = configureRouteScheduler(integration);
    for (int i = 0; i < steps.size(); i++) {
        final Step step = steps.get(i);
        final IntegrationStepHandler handler = findHandler(step);
        if (route == null && !(handler instanceof IntegrationStepHandler.Consumer)) {
            throw new IllegalStateException("The handler for step kind " + step.getKind() + " is not a consumer");
        }
        // Load route fragments eventually defined by extensions.
        loadFragments(step);
        // If a step id is present, then we need to log the step.
        StepStartTracker startTracker = null;
        if (loggingEnabled && route != null && step.getId().isPresent()) {
            startTracker = new StepStartTracker(step.getId().get());
            route = route.process(startTracker);
        }
        final String index = Integer.toString(i + 1);
        final Optional<ProcessorDefinition> definition = handler.handle(step, route, this, index);
        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();
            integration.getId().ifPresent(route::setId);
        } else {
            route = definition.map(rd -> {
                step.getId().ifPresent(rd::id);
                return rd;
            }).orElse(route);
        }
        route = handleConnectorSplit(step, route, index).map(rd -> {
            step.getId().ifPresent(id -> rd.id(id + "-split"));
            return rd;
        }).orElse(route);
        if (route != null) {
            route = route.process(new OutMessageCaptureProcessor(step));
            if (step.getId().isPresent()) {
                route.id(step.getId().get() + "-capture");
            }
            if (startTracker != null) {
                route = route.process(StepDoneTracker.INSTANCE);
            }
        }
    }
}
Also used : RoutesDefinition(org.apache.camel.model.RoutesDefinition) RuntimeCamelCatalog(org.apache.camel.runtimecatalog.RuntimeCamelCatalog) Split(io.syndesis.common.model.Split) ConnectorDescriptor(io.syndesis.common.model.action.ConnectorDescriptor) StepStartTracker(io.syndesis.integration.runtime.logging.StepStartTracker) ConnectorAction(io.syndesis.common.model.action.ConnectorAction) OutMessageCaptureProcessor(io.syndesis.integration.runtime.capture.OutMessageCaptureProcessor) DataMapperStepHandler(io.syndesis.integration.runtime.handlers.DataMapperStepHandler) ProcessorDefinition(org.apache.camel.model.ProcessorDefinition) LogStepHandler(io.syndesis.integration.runtime.handlers.LogStepHandler) Step(io.syndesis.common.model.integration.Step) SimpleEndpointStepHandler(io.syndesis.integration.runtime.handlers.SimpleEndpointStepHandler) URISyntaxException(java.net.URISyntaxException) LoggerFactory(org.slf4j.LoggerFactory) Scheduler(io.syndesis.common.model.integration.Scheduler) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) Map(java.util.Map) ResourceHelper(org.apache.camel.util.ResourceHelper) StepKind(io.syndesis.common.model.integration.StepKind) Integration(io.syndesis.common.model.integration.Integration) RuleFilterStepHandler(io.syndesis.integration.runtime.handlers.RuleFilterStepHandler) ExpressionFilterStepHandler(io.syndesis.integration.runtime.handlers.ExpressionFilterStepHandler) ConnectorStepHandler(io.syndesis.integration.runtime.handlers.ConnectorStepHandler) RouteDefinition(org.apache.camel.model.RouteDefinition) CamelContext(org.apache.camel.CamelContext) Logger(org.slf4j.Logger) StepAction(io.syndesis.common.model.action.StepAction) Collection(java.util.Collection) Set(java.util.Set) IOException(java.io.IOException) ExtensionStepHandler(io.syndesis.integration.runtime.handlers.ExtensionStepHandler) EndpointStepHandler(io.syndesis.integration.runtime.handlers.EndpointStepHandler) List(java.util.List) SplitStepHandler(io.syndesis.integration.runtime.handlers.SplitStepHandler) RouteBuilder(org.apache.camel.builder.RouteBuilder) Optional(java.util.Optional) ObjectHelper(org.apache.camel.util.ObjectHelper) ModelHelper(org.apache.camel.model.ModelHelper) Collections(java.util.Collections) Json(io.syndesis.common.util.Json) StepDoneTracker(io.syndesis.integration.runtime.logging.StepDoneTracker) InputStream(java.io.InputStream) Integration(io.syndesis.common.model.integration.Integration) OutMessageCaptureProcessor(io.syndesis.integration.runtime.capture.OutMessageCaptureProcessor) ProcessorDefinition(org.apache.camel.model.ProcessorDefinition) Step(io.syndesis.common.model.integration.Step) StepStartTracker(io.syndesis.integration.runtime.logging.StepStartTracker) RouteDefinition(org.apache.camel.model.RouteDefinition)

Aggregations

Split (io.syndesis.common.model.Split)1 ConnectorAction (io.syndesis.common.model.action.ConnectorAction)1 ConnectorDescriptor (io.syndesis.common.model.action.ConnectorDescriptor)1 StepAction (io.syndesis.common.model.action.StepAction)1 Integration (io.syndesis.common.model.integration.Integration)1 Scheduler (io.syndesis.common.model.integration.Scheduler)1 Step (io.syndesis.common.model.integration.Step)1 StepKind (io.syndesis.common.model.integration.StepKind)1 Json (io.syndesis.common.util.Json)1 OutMessageCaptureProcessor (io.syndesis.integration.runtime.capture.OutMessageCaptureProcessor)1 ConnectorStepHandler (io.syndesis.integration.runtime.handlers.ConnectorStepHandler)1 DataMapperStepHandler (io.syndesis.integration.runtime.handlers.DataMapperStepHandler)1 EndpointStepHandler (io.syndesis.integration.runtime.handlers.EndpointStepHandler)1 ExpressionFilterStepHandler (io.syndesis.integration.runtime.handlers.ExpressionFilterStepHandler)1 ExtensionStepHandler (io.syndesis.integration.runtime.handlers.ExtensionStepHandler)1 LogStepHandler (io.syndesis.integration.runtime.handlers.LogStepHandler)1 RuleFilterStepHandler (io.syndesis.integration.runtime.handlers.RuleFilterStepHandler)1 SimpleEndpointStepHandler (io.syndesis.integration.runtime.handlers.SimpleEndpointStepHandler)1 SplitStepHandler (io.syndesis.integration.runtime.handlers.SplitStepHandler)1 StepDoneTracker (io.syndesis.integration.runtime.logging.StepDoneTracker)1