### Eclipse Workspace Patch 1.0 #P oak-jcr Index: src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java =================================================================== --- src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java (revision 1485097) +++ src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java (working copy) @@ -502,8 +502,20 @@ @Override public NodeIterator perform() throws RepositoryException { Iterator children = dlg.getChildren(); - long size = dlg.getChildCount(); - return new NodeIteratorAdapter(nodeIterator(children), size); + return new NodeIteratorAdapter(nodeIterator(children)){ + private long size = -1; + @Override + public long getSize() { + try { + if (size ==-1){ + size = dlg.getChildCount(); + } + return size; + } catch (InvalidItemStateException e) { + return -1; + } + } + }; } }); } Index: src/main/java/org/apache/jackrabbit/oak/jcr/delegate/NodeDelegate.java =================================================================== --- src/main/java/org/apache/jackrabbit/oak/jcr/delegate/NodeDelegate.java (revision 1485156) +++ src/main/java/org/apache/jackrabbit/oak/jcr/delegate/NodeDelegate.java (working copy) @@ -339,22 +339,8 @@ @Nonnull public Iterator getChildren() throws InvalidItemStateException { Tree tree = getTree(); - long count = tree.getChildrenCount(); - if (count == 0) { - // Optimise the most common case - return Collections.emptySet().iterator(); - } else if (count == 1) { - // Optimise another typical case - Tree child = tree.getChildren().iterator().next(); - if (!child.getName().startsWith(":")) { - NodeDelegate delegate = new NodeDelegate(sessionDelegate, child); - return Collections.singleton(delegate).iterator(); - } else { - return Collections.emptySet().iterator(); - } - } else { - return nodeDelegateIterator(tree.getChildren().iterator()); - } + return nodeDelegateIterator(tree.getChildren().iterator()); + } public void orderBefore(String source, String target)