newGraph = newGraph.replaceNode(node, repl, memory);
newGraph = newGraph.replaceNode(node, repl, memory);
DAGNodeBuilder<V,E> bld = newBuilder(label); for (DAGEdge<V,E> edge: outgoingEdges) { DAGNode<V,E> newTail = edge.getTail().replaceNode(node, replacement, memory); bld.addEdge(newTail, edge.getLabel());
private void replaceNode(DAGNode<Component,Dependency> old, DAGNode<Component,Dependency> repl) { Map<DAGNode<Component,Dependency>, DAGNode<Component,Dependency>> memory = Maps.newHashMap(); graph = graph.replaceNode(old, repl, memory); // loop over a snapshot of the list, replacing nodes Collection<DAGEdge<Component, Dependency>> oldBackEdges = backEdges.values(); backEdges = HashMultimap.create(); for (DAGEdge<Component,Dependency> edge: oldBackEdges) { DAGNode<Component,Dependency> newHead, newTail; newHead = memory.get(edge.getHead()); if (newHead == null) { newHead = edge.getHead(); } newTail = memory.get(edge.getTail()); if (newTail == null) { newTail = edge.getTail(); } DAGEdge<Component,Dependency> newEdge; if (newHead.equals(edge.getHead()) && newTail.equals(edge.getTail())) { newEdge = edge; } else { newEdge = DAGEdge.create(newHead, newTail, edge.getLabel()); } backEdges.put(newHead, newEdge); } }