Author: mreutegg
Date: Thu Jan 30 08:29:58 2014
New Revision: 1562722
URL: http://svn.apache.org/r1562722
Log:
OAK-1366: Implement DocumentNodeState.getChildNodeCount(long)
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeState.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeState.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeState.java?rev=1562722&r1=1562721&r2=1562722&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeState.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeState.java
Thu Jan 30 08:29:58 2014
@@ -39,6 +39,7 @@ import org.apache.jackrabbit.oak.spi.sta
import com.google.common.base.Function;
import com.google.common.collect.Iterables;
+import com.google.common.collect.Iterators;
import static com.google.common.base.Preconditions.checkNotNull;
import static
org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.EMPTY_NODE;
@@ -165,6 +166,24 @@ final class DocumentNodeState extends Ab
}
}
+ @Override
+ public long getChildNodeCount(long max) {
+ if (node.hasNoChildren()) {
+ return 0;
+ }
+ if (max > DocumentNodeStore.NUM_CHILDREN_CACHE_LIMIT) {
+ // count all
+ return Iterators.size(new ChildNodeEntryIterator());
+ }
+ Node.Children c = store.getChildren(node, null, (int) max);
+ if (c.hasMore) {
+ return Long.MAX_VALUE;
+ } else {
+ // we know the exact value
+ return c.children.size();
+ }
+ }
+
@Nonnull
@Override
public Iterable<? extends ChildNodeEntry> getChildNodeEntries() {
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java?rev=1562722&r1=1562721&r2=1562722&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
Thu Jan 30 08:29:58 2014
@@ -93,7 +93,7 @@ public final class DocumentNodeStore
/**
* Do not cache more than this number of children for a document.
*/
- private static final int NUM_CHILDREN_CACHE_LIMIT =
Integer.getInteger("oak.documentMK.childrenCacheLimit", 16 * 1024);
+ static final int NUM_CHILDREN_CACHE_LIMIT =
Integer.getInteger("oak.documentMK.childrenCacheLimit", 16 * 1024);
/**
* When trying to access revisions that are older than this many