private void initializeIndependentNodes() { if (null == m_independentNodes) { List<Node<T>> list = Lists.newArrayList(m_nodes.values()); // Ideally, we should not have to sort this. However, due to a bug where it treats all the methods as // dependent nodes. Collections.sort(list, comparator); m_independentNodes = Maps.newLinkedHashMap(); for (Node<T> node : list) { m_independentNodes.put(node.getObject(), node); } } }
public Set<T> getNeighbors(T t) { Set<T> result = new HashSet<>(); for (Node<T> n : findNode(t).getNeighbors()) { result.add(n.getObject()); } return result; }
private void initializeIndependentNodes() { if (null == m_independentNodes) { List<Node<T>> list = Lists.newArrayList(m_nodes.values()); // Ideally, we should not have to sort this. However, due to a bug where it treats all the // methods as // dependent nodes. list.sort(comparator); m_independentNodes = Maps.newLinkedHashMap(); for (Node<T> node : list) { m_independentNodes.put(node.getObject(), node); } } }
if (!isIndependent(n.getObject())) { ppp("ADDING FOR SORT: " + n.getObject()); nodes2.add(n.clone()); } else { List<T> cycle = new Tarjan<>(this, nodes2.get(0).getObject()).getCycle(); StringBuilder sb = new StringBuilder(); sb.append("The following methods have cyclic dependencies:\n"); m_strictlySortedNodes.add(node.getObject()); removeFromNodes(nodes2, node);
if (! isIndependent(n.getObject())) { ppp("ADDING FOR SORT: " + n.getObject()); nodes2.add(n.clone()); List<T> cycle = new Tarjan<>(this, nodes2.get(0).getObject()).getCycle(); StringBuilder sb = new StringBuilder(); sb.append("The following methods have cyclic dependencies:\n"); m_strictlySortedNodes.add(node.getObject()); removeFromNodes(nodes2, node);
/** * Remove a node from a list of nodes and update the list of predecessors for all the remaining * nodes. */ private void removeFromNodes(List<Node<T>> nodes, Node<T> node) { nodes.remove(node); for (Node<T> n : nodes) { n.removePredecessor(node.getObject()); } }
/** * Remove a node from a list of nodes and update the list of predecessors * for all the remaining nodes. */ private void removeFromNodes(List<Node<T>> nodes, Node<T> node) { nodes.remove(node); for (Node<T> n : nodes) { n.removePredecessor(node.getObject()); } }