![JAR search and dependency download from the Maven repository](/logo.png)
brainslug.flow.execution.node.DefaultNodeExecutor Maven / Gradle / Ivy
The newest version!
package brainslug.flow.execution.node;
import brainslug.flow.context.ExecutionContext;
import brainslug.flow.execution.instance.FlowInstance;
import brainslug.flow.node.FlowNodeDefinition;
import brainslug.flow.path.FlowEdgeDefinition;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class DefaultNodeExecutor implements FlowNodeExecutor {
@Override
public FlowNodeExecutionResult execute(T node, ExecutionContext execution) {
return takeAllAndRemoveFirst(node, execution.getInstance());
}
protected FlowNodeExecutionResult takeAllAndRemoveFirst(FlowNodeDefinition> node, FlowInstance flowInstance) {
return takeAll(node).withFirstIncomingTokensRemoved(flowInstance.getTokens());
}
protected FlowNodeExecutionResult takeAll(FlowNodeDefinition> node) {
List next = new ArrayList();
for (FlowEdgeDefinition edge : node.getOutgoing()) {
next.add(edge.getTarget());
}
return new FlowNodeExecutionResult(node, next);
}
protected FlowNodeExecutionResult takeNone(FlowNodeDefinition> node, FlowInstance flowInstance) {
return new FlowNodeExecutionResult(node, Collections.emptyList());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy