You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by un...@apache.org on 2012/06/29 16:17:00 UTC

svn commit: r1355402 - /jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/mem/InMemBundlePersistenceManager.java

Author: unico
Date: Fri Jun 29 14:16:59 2012
New Revision: 1355402

URL: http://svn.apache.org/viewvc?rev=1355402&view=rev
Log:
JCR-3367 implement InMemBundlePM#getAllNodeIds correctly

Modified:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/mem/InMemBundlePersistenceManager.java

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/mem/InMemBundlePersistenceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/mem/InMemBundlePersistenceManager.java?rev=1355402&r1=1355401&r2=1355402&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/mem/InMemBundlePersistenceManager.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/mem/InMemBundlePersistenceManager.java Fri Jun 29 14:16:59 2012
@@ -384,7 +384,7 @@ public class InMemBundlePersistenceManag
         }
         super.init(context);
         // initialize mem stores
-        bundleStore = new HashMap<NodeId, byte[]>(initialCapacity, loadFactor);
+        bundleStore = new LinkedHashMap<NodeId, byte[]>(initialCapacity, loadFactor);
         refsStore = new HashMap<NodeId, byte[]>(initialCapacity, loadFactor);
 
         // Choose a FileSystem for the BlobStore based on whether data is persistent or not 
@@ -494,9 +494,19 @@ public class InMemBundlePersistenceManag
      * {@inheritDoc}
      */
     public List<NodeId> getAllNodeIds(NodeId after, int maxCount) throws ItemStateException, RepositoryException {
-        // ignore after and count parameters.
-        List<NodeId> result = new ArrayList<NodeId>();
-        result.addAll(bundleStore.keySet());
+        final List<NodeId> result = new ArrayList<NodeId>();
+        boolean add = after == null;
+        int count = 0;
+        for (NodeId nodeId : bundleStore.keySet()) {
+            if (add) {
+                result.add(nodeId);
+                if (++count == maxCount) {
+                    break;
+                }
+            } else {
+                add = nodeId.equals(after);
+            }
+        }
         return result;
     }