public Iterable<Node<T>> getSuccessors(Node<T> node, NodeType type) { // check cache first NodeItem<T> cachedSuccessorNodes = cache.get(node); if (cachedSuccessorNodes == null || cachedSuccessorNodes.getNodeType() != type) { // compute new results. // LOG.debug("cache miss with node: "+node.getId()); Iterable<Node<T>> computedSuccessors = workerSuccessorService.getSuccessors(node, type); // add to cache cachedSuccessorNodes = new NodeItem<T>(type, computedSuccessors, node); cache.put(node, cachedSuccessorNodes); } else { LOG.debug("cache hit with node: " + node.getId()); } return cachedSuccessorNodes.getSuccessors(); }
public Iterable<NodeVisitor<T>> getRequestedVisitors() { return Iterables.concat( Lists.<NodeVisitor<T>>newArrayList(this), workerSuccessorService.getRequestedVisitors()); }