private SingleLeafDirectedAcyclicGraph linkNodesToGraph()

in saga-core/src/main/java/org/apache/servicecomb/saga/core/dag/GraphBuilder.java [49:72]


  private SingleLeafDirectedAcyclicGraph<SagaRequest> linkNodesToGraph(
      SagaRequest[] sagaRequests,
      Map<String, Node<SagaRequest>> requestNodes) {

    Node<SagaRequest> root = rootNode(0);
    Node<SagaRequest> leaf = leafNode(sagaRequests.length + 1);

    for (SagaRequest sagaRequest : sagaRequests) {
      if (isOrphan(sagaRequest)) {
        root.addChild(requestNodes.get(sagaRequest.id()));
      } else {
        for (String parent : sagaRequest.parents()) {
          requestNodes.get(parent).addChild(requestNodes.get(sagaRequest.id()));
        }
      }
    }

    for(Node<SagaRequest> node : requestNodes.values()) {
      if (node.children().isEmpty()) {
        node.addChild(leaf);
      }
    }
    return new SingleLeafDirectedAcyclicGraph<>(root, leaf);
  }