@SuppressWarnings({"PMD.AvoidReassigningParameters", "PMD.AvoidDeeplyNestedIfStmts"})
@Override
public Optional<ProcessorDefinition<?>> handle(Step step, final ProcessorDefinition<?> route, IntegrationRouteBuilder builder, String flowIndex, String stepIndex) {
ObjectHelper.notNull(route, "route");
final Map<String, String> props = step.getConfiguredProperties();
final String action = props.getOrDefault("action", "set");
if (ObjectHelper.equal(action, "set", true)) {
props.entrySet().stream()
.filter(e -> !"action".equalsIgnoreCase(e.getKey()))
.forEach(e-> route.setHeader(e.getKey()).constant(e.getValue()));
} else if (ObjectHelper.equal(action, "remove", true)) {
props.entrySet().stream()
.filter(e -> !"action".equalsIgnoreCase(e.getKey()))
.forEach(e-> route.removeHeaders(e.getKey()));
} else {
throw new IllegalArgumentException("Unknown action:" + action);
}
return Optional.of(route);
}
}