/** * @param aKey a key to look for * @param aValue (may be null) a value for the give key to look for * @return all nodes containing the given key (with the given value is specified) */ public Iterator<Node> getNodesByTag(final String aKey, final String aValue) { Iterator<Node> n = myCachingDataSet.getNodesByTag(aKey, aValue); if (n == null || !n.hasNext()) { n = myDataSource.getNodesByTag(aKey, aValue); if (n != null && n.hasNext()) { LinkedList<Node> nodes = new LinkedList<Node>(); while (n.hasNext()) { Node node = n.next(); nodes.add(node); myCachingDataSet.addNode(node); return nodes.iterator(); } } } return n; }