private void dumpNode( BaseNode node, String ident, Set<BaseNode> visitedNodes, BiConsumer<BaseNode, String> consumer ) { consumer.accept( node, ident ); if (!visitedNodes.add( node )) { return; } Sink[] sinks = node.getSinks(); if (sinks != null) { for (Sink sink : sinks) { if (sink instanceof BaseNode) { BaseNode sinkNode = ( BaseNode ) sink; if ( nodesFilter.test( sinkNode ) ) { dumpNode( sinkNode, ident + " ", visitedNodes, consumer ); } } } } }
private static void compareNodes(BaseNode node1, BaseNode node2) { if (!node1.equals( node2 )) { throw new RuntimeException( node1 + " and " + node2 + " are not equal as expected" ); } Sink[] sinks1 = node1.getSinks(); Sink[] sinks2 = node2.getSinks(); if (sinks1 == null) { if (sinks2 == null) { return; } else { throw new RuntimeException( node1 + " has no sinks while " + node2 + " has " + sinks2.length + " sinks" ); } } else if (sinks2 == null) { throw new RuntimeException( node1 + " has " + sinks1.length + " sinks while " + node2 + " has 0 sinks" ); } if (sinks1.length != sinks2.length) { throw new RuntimeException( node1 + " has " + sinks1.length + " sinks while " + node2 + " has no sinks" ); } Arrays.sort(sinks1, NODE_SORTER); Arrays.sort(sinks2, NODE_SORTER); for (int i = 0; i < sinks1.length; i++) { if (sinks1[i] instanceof BaseNode) { compareNodes( (BaseNode) sinks1[i], (BaseNode) sinks2[i] ); } } }
private void traverse(BaseNode node ) { checkNode(node); Sink[] sinks = node.getSinks(); if (sinks != null) { for (Sink sink : sinks) { if (sink instanceof BaseNode) { traverse((BaseNode)sink); } } } }
Sink[] sinks = node.getSinks(); if (sinks != null) { for (Sink sink : sinks) {