use of io.syndesis.common.model.Split 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);
}
}
}
}
use of io.syndesis.common.model.Split in project syndesis by syndesisio.
the class IntegrationRouteBuilder method handleConnectorSplit.
private Optional<ProcessorDefinition> handleConnectorSplit(Step step, ProcessorDefinition route, String index) {
if (step.getAction().filter(ConnectorAction.class::isInstance).isPresent()) {
final ConnectorAction action = step.getAction().filter(ConnectorAction.class::isInstance).map(ConnectorAction.class::cast).get();
final ConnectorDescriptor descriptor = action.getDescriptor();
if (descriptor.getSplit().isPresent()) {
final Split split = descriptor.getSplit().get();
final Step.Builder splitBuilder = new Step.Builder().stepKind(StepKind.split);
split.getLanguage().ifPresent(s -> splitBuilder.putConfiguredProperty("language", s));
split.getExpression().ifPresent(s -> splitBuilder.putConfiguredProperty("expression", s));
return new SplitStepHandler().handle(splitBuilder.build(), route, this, index);
}
}
return Optional.empty();
}
Aggregations