You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by st...@apache.org on 2012/01/31 16:52:33 UTC

svn commit: r1238674 - in /jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk: model/ store/ store/util/ util/

Author: stefan
Date: Tue Jan 31 15:52:33 2012
New Revision: 1238674

URL: http://svn.apache.org/viewvc?rev=1238674&view=rev
Log:
refactoring serialization code

Removed:
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/util/
Modified:
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesBucket.java
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/AbstractPersistenceManager.java
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/BDbPersistenceManager.java
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/BinaryBinding.java
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/FSPersistenceManager.java
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/H2PersistenceManager.java
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/InMemPersistenceManager.java
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MongoPersistenceManager.java
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/AbstractRangeIterator.java

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesBucket.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesBucket.java?rev=1238674&r1=1238673&r2=1238674&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesBucket.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesBucket.java Tue Jan 31 15:52:33 2012
@@ -16,13 +16,28 @@
  */
 package org.apache.jackrabbit.mk.model;
 
+import org.apache.jackrabbit.mk.store.Binding;
+import org.apache.jackrabbit.mk.util.AbstractRangeIterator;
+
 import java.util.HashMap;
+import java.util.Iterator;
 
 /**
  *
  */
 public class ChildNodeEntriesBucket extends ChildNodeEntriesInlined {
 
+    public static ChildNodeEntriesBucket deserialize(String id, Binding binding) throws Exception {
+        ChildNodeEntriesBucket newInstance = new ChildNodeEntriesBucket();
+
+        Iterator<Binding.KeyValuePair> iter = binding.read(":children");
+        while (iter.hasNext()) {
+            Binding.KeyValuePair kvp = iter.next();
+            newInstance.add(new ChildNodeEntry(kvp.getKey(), kvp.getValue()));
+        }
+        return newInstance;
+    }
+
     public ChildNodeEntriesBucket() {
         // using stock HashMap since keeping insertion-order is not required
         entries = new HashMap<String, ChildNodeEntry>();
@@ -44,4 +59,17 @@ public class ChildNodeEntriesBucket exte
         clone.entries = (HashMap<String, ChildNodeEntry>) entries.clone();
         return clone;
     }
+
+    //------------------------------------------------< serialization support >
+
+    public void serialize(Binding binding) throws Exception {
+        binding.write(":children", getCount(),
+                new AbstractRangeIterator<Binding.KeyValuePair>(getEntries(0, -1), 0, -1) {
+                    @Override
+                    protected Binding.KeyValuePair doNext() {
+                        ChildNodeEntry cne = (ChildNodeEntry) it.next();
+                        return new Binding.KeyValuePair(cne.getName(), cne.getId());
+                    }
+                });
+    }
 }

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/AbstractPersistenceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/AbstractPersistenceManager.java?rev=1238674&r1=1238673&r2=1238674&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/AbstractPersistenceManager.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/AbstractPersistenceManager.java Tue Jan 31 15:52:33 2012
@@ -25,6 +25,7 @@ import org.apache.jackrabbit.mk.model.St
 import org.apache.jackrabbit.mk.model.StoredNode;
 import org.apache.jackrabbit.mk.util.SimpleLRUCache;
 
+import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.InputStream;
 import java.util.Collections;
@@ -250,4 +251,11 @@ public abstract class AbstractPersistenc
 
         return blobLength(blobId);
     }
+    
+    //------------------------------------------------< serialization support >
+    
+    public byte[] toBytes(Node node, ByteArrayOutputStream out) throws Exception {
+        node.serialize(new BinaryBinding(out));
+        return idFactory.createNodeId(node, out.toByteArray());
+    }
 }

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/BDbPersistenceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/BDbPersistenceManager.java?rev=1238674&r1=1238673&r2=1238674&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/BDbPersistenceManager.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/BDbPersistenceManager.java Tue Jan 31 15:52:33 2012
@@ -16,6 +16,8 @@
  */
 package org.apache.jackrabbit.mk.store;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.InputStream;
 
@@ -26,7 +28,6 @@ import org.apache.jackrabbit.mk.model.Co
 import org.apache.jackrabbit.mk.model.Node;
 import org.apache.jackrabbit.mk.model.StoredCommit;
 import org.apache.jackrabbit.mk.model.StoredNode;
-import org.apache.jackrabbit.mk.store.util.Serializer;
 import org.apache.jackrabbit.mk.util.StringUtils;
 
 import com.sleepycat.je.Database;
@@ -128,7 +129,8 @@ public class BDbPersistenceManager exten
         DatabaseEntry data = new DatabaseEntry();
 
         if (db.get(null, key, data, LockMode.DEFAULT) == OperationStatus.SUCCESS) {
-            return Serializer.fromBytes(id, data.getData(), Node.class);
+            ByteArrayInputStream in = new ByteArrayInputStream(data.getData());
+            return StoredNode.deserialize(id, new BinaryBinding(in));
         } else {
             throw new NotFoundException(id);
         }
@@ -136,9 +138,11 @@ public class BDbPersistenceManager exten
 
     @Override
     protected String writeNode(Node node) throws Exception {
-        byte[] data = Serializer.toBytes(node);
-        byte[] rawId = idFactory.createNodeId(node, data);
-        return persist(data, rawId);
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        node.serialize(new BinaryBinding(out));
+        byte[] bytes = out.toByteArray();
+        byte[] rawId = idFactory.createNodeId(node, bytes);
+        return persist(bytes, rawId);
     }
 
     @Override
@@ -147,7 +151,8 @@ public class BDbPersistenceManager exten
         DatabaseEntry data = new DatabaseEntry();
 
         if (db.get(null, key, data, LockMode.DEFAULT) == OperationStatus.SUCCESS) {
-            return Serializer.fromBytes(id, data.getData(), Commit.class);
+            ByteArrayInputStream in = new ByteArrayInputStream(data.getData());
+            return StoredCommit.deserialize(id, new BinaryBinding(in));
         } else {
             throw new NotFoundException(id);
         }
@@ -155,9 +160,11 @@ public class BDbPersistenceManager exten
 
     @Override
     protected String writeCommit(Commit commit) throws Exception {
-        byte[] data = Serializer.toBytes(commit);
-        byte[] rawId = idFactory.createRevisionId(commit, data);
-        return persist(data, rawId);
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        commit.serialize(new BinaryBinding(out));
+        byte[] bytes = out.toByteArray();
+        byte[] rawId = idFactory.createRevisionId(commit, bytes);
+        return persist(bytes, rawId);
     }
 
     @Override

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/BinaryBinding.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/BinaryBinding.java?rev=1238674&r1=1238673&r2=1238674&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/BinaryBinding.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/BinaryBinding.java Tue Jan 31 15:52:33 2012
@@ -25,66 +25,81 @@ import java.util.Iterator;
 import java.util.NoSuchElementException;
 
 /**
- *
+ * Implementation note: the 'key' parameter is ignored
+ * since it's not required for binary serialization.
  */
 public class BinaryBinding implements Binding {
 
     protected InputStream in;
     protected OutputStream out;
     
-    public BinaryBinding(InputStream in, OutputStream out) {
+    public BinaryBinding(InputStream in) {
         this.in = in;
+        out = null;
+    }
+
+    public BinaryBinding(OutputStream out) {
         this.out = out;
+        in = null;
     }
 
     public void write(String key, String value) throws Exception {
-        IOUtils.writeString(out, key);
+        if (out == null) {
+            throw new IllegalStateException("no OutputStream provided");
+        }
         IOUtils.writeString(out, value);
     }
 
     public void write(String key, long value) throws Exception {
-        IOUtils.writeString(out, key);
+        if (out == null) {
+            throw new IllegalStateException("no OutputStream provided");
+        }
         IOUtils.writeVarLong(out, value);
     }
 
     public void write(String key, int value) throws Exception {
-        IOUtils.writeString(out, key);
+        if (out == null) {
+            throw new IllegalStateException("no OutputStream provided");
+        }
         IOUtils.writeVarInt(out, value);
     }
 
     public void write(String key, int count, Iterator<KeyValuePair> iterator) throws Exception {
-        IOUtils.writeString(out, key);
+        if (out == null) {
+            throw new IllegalStateException("no OutputStream provided");
+        }
         IOUtils.writeVarInt(out, count);
         while (iterator.hasNext()) {
             KeyValuePair kvp = iterator.next();
-            write(kvp.getKey(), kvp.getValue());
+            IOUtils.writeString(out, kvp.getKey());
+            IOUtils.writeString(out, kvp.getValue());
         }
     }
 
     public String readStringValue(String key) throws Exception {
-        if (!IOUtils.readString(in).equals(key)) {
-            throw new Exception("incompatible serialization format");
+        if (in == null) {
+            throw new IllegalStateException("no InputStream provided");
         }
         return IOUtils.readString(in);
     }
 
     public long readLongValue(String key) throws Exception {
-        if (!IOUtils.readString(in).equals(key)) {
-            throw new Exception("incompatible serialization format");
+        if (in == null) {
+            throw new IllegalStateException("no InputStream provided");
         }
         return IOUtils.readVarLong(in);
     }
 
     public int readIntValue(String key) throws Exception {
-        if (!IOUtils.readString(in).equals(key)) {
-            throw new Exception("incompatible serialization format");
+        if (in == null) {
+            throw new IllegalStateException("no InputStream provided");
         }
         return IOUtils.readVarInt(in);
     }
 
     public Iterator<KeyValuePair> read(String key) throws Exception {
-        if (!IOUtils.readString(in).equals(key)) {
-            throw new Exception("incompatible serialization format");
+        if (in == null) {
+            throw new IllegalStateException("no InputStream provided");
         }
         final int size = IOUtils.readVarInt(in);
         return new Iterator<KeyValuePair>() {

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/FSPersistenceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/FSPersistenceManager.java?rev=1238674&r1=1238673&r2=1238674&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/FSPersistenceManager.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/FSPersistenceManager.java Tue Jan 31 15:52:33 2012
@@ -30,7 +30,6 @@ import org.apache.jackrabbit.mk.model.Co
 import org.apache.jackrabbit.mk.model.Node;
 import org.apache.jackrabbit.mk.model.StoredCommit;
 import org.apache.jackrabbit.mk.model.StoredNode;
-import org.apache.jackrabbit.mk.store.util.Serializer;
 import org.apache.jackrabbit.mk.util.IOUtils;
 import org.apache.jackrabbit.mk.util.StringUtils;
 
@@ -88,13 +87,11 @@ public class FSPersistenceManager extend
         File f = getFile(id);
         if (f.exists()) {
             BufferedInputStream in = new BufferedInputStream(new FileInputStream(f));
-            ByteArrayOutputStream out = new ByteArrayOutputStream();
             try {
-                IOUtils.copy(in, out);
+                return StoredNode.deserialize(id, new BinaryBinding(in));
             } finally {
                 in.close();
             }
-            return Serializer.fromBytes(id, out.toByteArray(), Node.class);
         } else {
             throw new NotFoundException(id);
         }
@@ -102,7 +99,9 @@ public class FSPersistenceManager extend
 
     @Override
     protected String writeNode(Node node) throws Exception {
-        byte[] bytes = Serializer.toBytes(node);
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        node.serialize(new BinaryBinding(out));
+        byte[] bytes = out.toByteArray();
         byte[] rawId = idFactory.createNodeId(node, bytes);
         return writeFile(bytes, rawId);
     }
@@ -112,13 +111,11 @@ public class FSPersistenceManager extend
         File f = getFile(id);
         if (f.exists()) {
             BufferedInputStream in = new BufferedInputStream(new FileInputStream(f));
-            ByteArrayOutputStream out = new ByteArrayOutputStream();
             try {
-                IOUtils.copy(in, out);
+                return StoredCommit.deserialize(id, new BinaryBinding(in));
             } finally {
                 in.close();
             }
-            return Serializer.fromBytes(id, out.toByteArray(), Commit.class);
         } else {
             throw new NotFoundException(id);
         }
@@ -126,7 +123,9 @@ public class FSPersistenceManager extend
 
     @Override
     protected String writeCommit(Commit commit) throws Exception {
-        byte[] bytes = Serializer.toBytes(commit);
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        commit.serialize(new BinaryBinding(out));
+        byte[] bytes = out.toByteArray();
         byte[] rawId = idFactory.createRevisionId(commit, bytes);
         return writeFile(bytes, rawId);
     }

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/H2PersistenceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/H2PersistenceManager.java?rev=1238674&r1=1238673&r2=1238674&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/H2PersistenceManager.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/H2PersistenceManager.java Tue Jan 31 15:52:33 2012
@@ -24,7 +24,6 @@ import org.apache.jackrabbit.mk.model.Co
 import org.apache.jackrabbit.mk.model.Node;
 import org.apache.jackrabbit.mk.model.StoredCommit;
 import org.apache.jackrabbit.mk.model.StoredNode;
-import org.apache.jackrabbit.mk.store.util.Serializer;
 import org.apache.jackrabbit.mk.util.StringUtils;
 import org.h2.jdbcx.JdbcConnectionPool;
 
@@ -122,11 +121,8 @@ public class H2PersistenceManager extend
                 stmt.setBytes(1, StringUtils.convertHexToBytes(id));
                 ResultSet rs = stmt.executeQuery();
                 if (rs.next()) {
-/*
                     ByteArrayInputStream in = new ByteArrayInputStream(rs.getBytes(1));
-                    return StoredNode.deserialize(id, new BinaryBinding(in, null));
-*/
-                    return Serializer.fromBytes(id, rs.getBytes(1), Node.class);
+                    return StoredNode.deserialize(id, new BinaryBinding(in));
                 } else {
                     throw new NotFoundException(id);
                 }
@@ -140,12 +136,9 @@ public class H2PersistenceManager extend
 
     @Override
     protected String writeNode(Node node) throws Exception {
-/*
         ByteArrayOutputStream out = new ByteArrayOutputStream();
-        node.serialize(new BinaryBinding(null, out));
+        node.serialize(new BinaryBinding(out));
         byte[] bytes = out.toByteArray();
-*/
-        byte[] bytes = Serializer.toBytes(node);
         byte[] rawId = idFactory.createNodeId(node, bytes);
         String id = StringUtils.convertBytesToHex(rawId);
 
@@ -177,11 +170,8 @@ public class H2PersistenceManager extend
                 stmt.setBytes(1, StringUtils.convertHexToBytes(id));
                 ResultSet rs = stmt.executeQuery();
                 if (rs.next()) {
-/*
                     ByteArrayInputStream in = new ByteArrayInputStream(rs.getBytes(1));
-                    return StoredCommit.deserialize(id, new BinaryBinding(in, null));
-*/
-                    return Serializer.fromBytes(id, rs.getBytes(1), Commit.class);
+                    return StoredCommit.deserialize(id, new BinaryBinding(in));
                 } else {
                     throw new NotFoundException(id);
                 }
@@ -195,12 +185,9 @@ public class H2PersistenceManager extend
     
     @Override
     protected String writeCommit(Commit commit) throws Exception {
-/*
         ByteArrayOutputStream out = new ByteArrayOutputStream();
-        commit.serialize(new BinaryBinding(null, out));
+        commit.serialize(new BinaryBinding(out));
         byte[] bytes = out.toByteArray();
-*/
-        byte[] bytes = Serializer.toBytes(commit);
         byte[] rawId = idFactory.createRevisionId(commit, bytes);
         String id = StringUtils.convertBytesToHex(rawId);
 
@@ -249,4 +236,4 @@ public class H2PersistenceManager extend
         // todo implement
         return null;
     }
-}
+}
\ No newline at end of file

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/InMemPersistenceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/InMemPersistenceManager.java?rev=1238674&r1=1238673&r2=1238674&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/InMemPersistenceManager.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/InMemPersistenceManager.java Tue Jan 31 15:52:33 2012
@@ -16,6 +16,8 @@
  */
 package org.apache.jackrabbit.mk.store;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.InputStream;
 import java.util.Collections;
@@ -29,7 +31,6 @@ import org.apache.jackrabbit.mk.model.Co
 import org.apache.jackrabbit.mk.model.Node;
 import org.apache.jackrabbit.mk.model.StoredCommit;
 import org.apache.jackrabbit.mk.model.StoredNode;
-import org.apache.jackrabbit.mk.store.util.Serializer;
 import org.apache.jackrabbit.mk.util.StringUtils;
 
 /**
@@ -75,11 +76,13 @@ public class InMemPersistenceManager ext
 
     @Override
     protected String writeNode(Node node) throws Exception {
-        byte[] bytes = Serializer.toBytes(node);
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        node.serialize(new BinaryBinding(out));
+        byte[] bytes = out.toByteArray();
         String id = StringUtils.convertBytesToHex(idFactory.createNodeId(node, bytes));
 
         if (!nodes.containsKey(id)) {
-            nodes.put(id, Serializer.fromBytes(id, bytes, Node.class));
+            nodes.put(id, StoredNode.deserialize(id, new BinaryBinding(new ByteArrayInputStream(bytes))));
         }
 
         return id;
@@ -97,11 +100,13 @@ public class InMemPersistenceManager ext
 
     @Override
     protected String writeCommit(Commit commit) throws Exception {
-        byte[] bytes = Serializer.toBytes(commit);
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        commit.serialize(new BinaryBinding(out));
+        byte[] bytes = out.toByteArray();
         String id = StringUtils.convertBytesToHex(idFactory.createRevisionId(commit, bytes));
 
         if (!commits.containsKey(id)) {
-            commits.put(id, Serializer.fromBytes(id, bytes, Commit.class));
+            commits.put(id, StoredCommit.deserialize(id, new BinaryBinding(new ByteArrayInputStream(bytes))));
         }
 
         return id;

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MongoPersistenceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MongoPersistenceManager.java?rev=1238674&r1=1238673&r2=1238674&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MongoPersistenceManager.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MongoPersistenceManager.java Tue Jan 31 15:52:33 2012
@@ -16,6 +16,8 @@
  */
 package org.apache.jackrabbit.mk.store;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.InputStream;
 import java.util.HashMap;
@@ -29,7 +31,6 @@ import org.apache.jackrabbit.mk.model.Co
 import org.apache.jackrabbit.mk.model.Node;
 import org.apache.jackrabbit.mk.model.StoredCommit;
 import org.apache.jackrabbit.mk.model.StoredNode;
-import org.apache.jackrabbit.mk.store.util.Serializer;
 import org.apache.jackrabbit.mk.util.IOUtils;
 import org.apache.jackrabbit.mk.util.StringUtils;
 import org.bson.types.ObjectId;
@@ -134,7 +135,7 @@ public class MongoPersistenceManager ext
             // todo support partitioned child node lists
             if (BINARY_FORMAT) {
                 byte[] bytes = (byte[]) nodeObject.get(DATA_FIELD);
-                return Serializer.fromBytes(id, bytes, Node.class);
+                return StoredNode.deserialize(id, new BinaryBinding(new ByteArrayInputStream(bytes)));
             } else {
                 final Iterator<String> it = nodeObject.keySet().iterator();
                 final BasicDBObject children = (BasicDBObject) nodeObject.get(CHILDREN_OBJECT);
@@ -162,7 +163,9 @@ public class MongoPersistenceManager ext
 
     @Override
     protected String writeNode(Node node) throws Exception {
-        byte[] bytes = Serializer.toBytes(node);
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        node.serialize(new BinaryBinding(out));
+        byte[] bytes = out.toByteArray();
         byte[] key = idFactory.createNodeId(node, bytes);
         String id = StringUtils.convertBytesToHex(key);
 
@@ -202,7 +205,7 @@ public class MongoPersistenceManager ext
         if (commitObject != null) {
             if (BINARY_FORMAT) {
                 byte[] bytes = (byte[]) commitObject.get(DATA_FIELD);
-                return Serializer.fromBytes(id, bytes, Commit.class);
+                return StoredCommit.deserialize(id, new BinaryBinding(new ByteArrayInputStream(bytes)));
             } else {
                 return new StoredCommit(id,
                         (String) commitObject.get("parentId"),
@@ -217,7 +220,9 @@ public class MongoPersistenceManager ext
 
     @Override
     protected String writeCommit(Commit commit) throws Exception {
-        byte[] bytes = Serializer.toBytes(commit);
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        commit.serialize(new BinaryBinding(out));
+        byte[] bytes = out.toByteArray();
         byte[] key = idFactory.createRevisionId(commit, bytes);
         String id = StringUtils.convertBytesToHex(key);
 
@@ -288,7 +293,7 @@ public class MongoPersistenceManager ext
         if (bucketObject != null) {
             if (BINARY_FORMAT) {
                 byte[] bytes = (byte[]) bucketObject.get(DATA_FIELD);
-                return Serializer.fromBytes(id, bytes, ChildNodeEntriesBucket.class);
+                return ChildNodeEntriesBucket.deserialize(id, new BinaryBinding(new ByteArrayInputStream(bytes)));
             } else {
                 ChildNodeEntriesBucket bucket = new ChildNodeEntriesBucket();
                 for (String name : bucketObject.keySet()) {
@@ -305,7 +310,9 @@ public class MongoPersistenceManager ext
 
     @Override
     protected String writeCNEBucket(ChildNodeEntriesBucket bucket) throws Exception {
-        byte[] bytes = Serializer.toBytes(bucket);
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        bucket.serialize(new BinaryBinding(out));
+        byte[] bytes = out.toByteArray();
         byte[] key = idFactory.createBucketId(bucket, bytes);
         String id = StringUtils.convertBytesToHex(key);
 

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/AbstractRangeIterator.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/AbstractRangeIterator.java?rev=1238674&r1=1238673&r2=1238674&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/AbstractRangeIterator.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/AbstractRangeIterator.java Tue Jan 31 15:52:33 2012
@@ -25,22 +25,22 @@ import java.util.NoSuchElementException;
 public abstract class AbstractRangeIterator<T> implements Iterator<T> {
 
     protected final Iterator<?> it;
-    protected int count;
+    protected int maxCount;
 
     public AbstractRangeIterator(Iterator<?> it, int offset, int count) {
         while (offset-- > 0 && it.hasNext()) {
             it.next();
         }
-        this.count = count;
+        maxCount = count < 0 ? Integer.MAX_VALUE : count;
         this.it = it;
     }
 
     public boolean hasNext() {
-        return (count > 0 && it.hasNext());
+        return (maxCount > 0 && it.hasNext());
     }
 
     public T next() {
-        if (count-- > 0) {
+        if (maxCount-- > 0) {
             return doNext();
         }
         throw new NoSuchElementException();