All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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