You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by th...@apache.org on 2012/02/28 12:02:33 UTC

svn commit: r1294577 - in /jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk: simple/NodeImpl.java util/Sync.java

Author: thomasm
Date: Tue Feb 28 11:02:32 2012
New Revision: 1294577

URL: http://svn.apache.org/viewvc?rev=1294577&view=rev
Log:
Add Node.getChildNodeCount() / getTotalChildNodeCount()

Modified:
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/simple/NodeImpl.java
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/Sync.java

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/simple/NodeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/simple/NodeImpl.java?rev=1294577&r1=1294576&r2=1294577&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/simple/NodeImpl.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/simple/NodeImpl.java Tue Feb 28 11:02:32 2012
@@ -95,7 +95,7 @@ public class NodeImpl implements Cache.V
     private int memory;
     private long descendantCount;
     private int descendantInlineCount;
-    private boolean hasMoreChildNodes;
+    private long totalChildNodeCount;
     private byte[] hash;
     private String nodeVersion;
 
@@ -458,20 +458,17 @@ public class NodeImpl implements Cache.V
             node.setPath(path);
         }
         if (!t.matches('}')) {
-            long parsedChildCount = 0;
-            int parsedChildren = 0;
             do {
                 String key = t.readString();
                 t.read(':');
                 if (t.matches('{')) {
                     String childPath = path == null || key == null ? null : PathUtils.concat(path, key);
                     node.addChildNode(key, false, null, parse(map, t, revId, childPath));
-                    parsedChildren++;
                 } else {
                     String value = t.readRawValue().trim();
                     if (key.length() > 0 && key.charAt(0) == ':') {
                         if (key.equals(CHILREN_COUNT)) {
-                            parsedChildCount = Long.parseLong(value);
+                            node.totalChildNodeCount = Long.parseLong(value);
                         } else if (key.equals(HASH)) {
                             value = JsopTokenizer.decodeQuoted(value);
                             node.hash = StringUtils.convertHexToBytes(value);
@@ -489,9 +486,6 @@ public class NodeImpl implements Cache.V
                 }
             } while (t.matches(','));
             t.read('}');
-            if (parsedChildCount > 0 && parsedChildren < parsedChildCount) {
-                node.hasMoreChildNodes = true;
-            }
         }
         return node;
     }
@@ -734,8 +728,12 @@ public class NodeImpl implements Cache.V
         return false;
     }
 
-    public boolean hasMoreChildNodes() {
-        return hasMoreChildNodes;
+    public long getTotalChildNodeCount() {
+        return totalChildNodeCount;
+    }
+
+    public long getChildNodeCount() {
+        return childNodes == null ? 0 : childNodes.size();
     }
 
     public String getNodeVersion() {

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/Sync.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/Sync.java?rev=1294577&r1=1294576&r2=1294577&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/Sync.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/Sync.java Tue Feb 28 11:02:32 2012
@@ -148,7 +148,7 @@ public class Sync {
             }
         }
         // child nodes
-        Iterator<String> it = s.hasMoreChildNodes() ?
+        Iterator<String> it = s.getTotalChildNodeCount() > s.getChildNodeCount() ?
                 getAllChildNodeNames(sourceMk, source, sourceRev, childNodesPerBatch) :
                 s.getChildNodeNames(Integer.MAX_VALUE);
         while (it.hasNext()) {
@@ -156,14 +156,15 @@ public class Sync {
             visit(PathUtils.concat(relPath, name));
         }
         if (t != null) {
-            it = t.hasMoreChildNodes() ?
+            it = t.getTotalChildNodeCount() > t.getChildNodeCount() ?
                     getAllChildNodeNames(targetMk, target, targetRev, childNodesPerBatch) :
                     t.getChildNodeNames(Integer.MAX_VALUE);
             while (it.hasNext()) {
                 String name = it.next();
                 if (s.exists(name)) {
                     // if it exists in the source, it's already updated
-                } else if (s.hasMoreChildNodes() && sourceMk.nodeExists(PathUtils.concat(source, name), sourceRev)) {
+                } else if (s.getTotalChildNodeCount() > s.getChildNodeCount() &&
+                        sourceMk.nodeExists(PathUtils.concat(source, name), sourceRev)) {
                     // if it exists in the source, it's already updated
                     // (in this case, there are many child nodes)
                 } else {