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 2011/11/25 17:13:24 UTC

svn commit: r1206245 - /jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MongoPersistenceManager.java

Author: stefan
Date: Fri Nov 25 16:13:23 2011
New Revision: 1206245

URL: http://svn.apache.org/viewvc?rev=1206245&view=rev
Log:
non-binary serialization for testing purposes

Modified:
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MongoPersistenceManager.java

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=1206245&r1=1206244&r2=1206245&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 Fri Nov 25 16:13:23 2011
@@ -38,17 +38,22 @@ import org.bson.types.ObjectId;
 import java.io.File;
 import java.io.InputStream;
 import java.security.MessageDigest;
+import java.util.LinkedHashMap;
 
 /**
  *
  */
 public class MongoPersistenceManager extends AbstractPersistenceManager {
 
-    private static String HEAD_COLLECTION = "head";
-    private static String NODES_COLLECTION = "nodes";
-    private static String COMMITS_COLLECTION = "commits";
-    private static String ID_FIELD = "id";
-    private static String DATA_FIELD = "data";
+    private static final boolean BINARY_FORMAT = false;
+
+    private static final String HEAD_COLLECTION = "head";
+    private static final String NODES_COLLECTION = "nodes";
+    private static final String COMMITS_COLLECTION = "commits";
+    private static final String ID_FIELD = ":id";
+    private static final String DATA_FIELD = ":data";
+    private static final String PROPERTIES_OBJECT = ":props";
+    private static final String CHILDREN_OBJECT = ":children";
 
     private Mongo con;
     private DB db;
@@ -107,13 +112,21 @@ public class MongoPersistenceManager ext
     @Override
     protected StoredNode readNode(String id) throws NotFoundException, Exception {
         BasicDBObject key = new BasicDBObject();
-        //key.put(ID_FIELD, StringUtils.convertHexToBytes(id));
-        key.put(ID_FIELD, id);
+        if (BINARY_FORMAT) {
+            key.put(ID_FIELD, StringUtils.convertHexToBytes(id));
+        } else {
+            key.put(ID_FIELD, id);
+        }
         DBObject nodeObject = nodes.findOne(key);
         if (nodeObject != null) {
-            // todo use json serialization format
-            byte[] bytes = (byte[]) nodeObject.get(DATA_FIELD);
-            return Serializer.fromBytes(id, bytes, Node.class);
+            if (BINARY_FORMAT) {
+                byte[] bytes = (byte[]) nodeObject.get(DATA_FIELD);
+                return Serializer.fromBytes(id, bytes, Node.class);
+            } else {
+                return new StoredNode(id,
+                        ((BasicDBObject) nodeObject.get(PROPERTIES_OBJECT)).toMap(),
+                        (LinkedHashMap<String, String>) ((BasicDBObject) nodeObject.get(PROPERTIES_OBJECT)).toMap());
+            }
         } else {
             throw new NotFoundException(id);
         }
@@ -124,9 +137,15 @@ public class MongoPersistenceManager ext
         byte[] bytes = Serializer.toBytes(node);
         byte[] key = MessageDigest.getInstance("SHA-1").digest(bytes);
         String id = StringUtils.convertBytesToHex(key);
-        //BasicDBObject nodeObject = new BasicDBObject(ID_FIELD, key).append(DATA_FIELD, bytes);
-        // todo use json serialization format
-        BasicDBObject nodeObject = new BasicDBObject(ID_FIELD, id).append(DATA_FIELD, bytes);
+
+        BasicDBObject nodeObject;
+        if (BINARY_FORMAT) {
+            nodeObject = new BasicDBObject(ID_FIELD, key).append(DATA_FIELD, bytes);
+        } else {
+            nodeObject = new BasicDBObject(ID_FIELD, id)
+                    .append(PROPERTIES_OBJECT, new BasicDBObject(node.getProperties()))
+                    .append(CHILDREN_OBJECT, new BasicDBObject(node.getChildNodeEntries()));
+        }
         try {
             nodes.insert(nodeObject);
         } catch (MongoException.DuplicateKey ignore) {
@@ -139,13 +158,23 @@ public class MongoPersistenceManager ext
     @Override
     protected StoredCommit readCommit(String id) throws NotFoundException, Exception {
         BasicDBObject key = new BasicDBObject();
-        //key.put(ID_FIELD, StringUtils.convertHexToBytes(id));
-        key.put(ID_FIELD, id);
+        if (BINARY_FORMAT) {
+            key.put(ID_FIELD, StringUtils.convertHexToBytes(id));
+        } else {
+            key.put(ID_FIELD, id);
+        }
         DBObject commitObject = commits.findOne(key);
         if (commitObject != null) {
-            // todo use json serialization format
-            byte[] bytes = (byte[]) commitObject.get(DATA_FIELD);
-            return Serializer.fromBytes(id, bytes, Commit.class);
+            if (BINARY_FORMAT) {
+                byte[] bytes = (byte[]) commitObject.get(DATA_FIELD);
+                return Serializer.fromBytes(id, bytes, Commit.class);
+            } else {
+                return new StoredCommit(id,
+                        (String) commitObject.get("parentId"),
+                        (Long) commitObject.get("ts"),
+                        (String) commitObject.get("rootNodeId"),
+                        (String) commitObject.get("msg"));
+            }
         } else {
             throw new NotFoundException(id);
         }
@@ -156,9 +185,18 @@ public class MongoPersistenceManager ext
         byte[] bytes = Serializer.toBytes(commit);
         byte[] key = MessageDigest.getInstance("SHA-1").digest(bytes);
         String id = StringUtils.convertBytesToHex(key);
-        //BasicDBObject commitObject = new BasicDBObject(ID_FIELD, key).append(DATA_FIELD, bytes);
-        // todo use json serialization format
-        BasicDBObject commitObject = new BasicDBObject(ID_FIELD, id).append(DATA_FIELD, bytes);
+
+        BasicDBObject commitObject;
+        if (BINARY_FORMAT) {
+            commitObject = new BasicDBObject(ID_FIELD, key).append(DATA_FIELD, bytes);
+        } else {
+            commitObject = new BasicDBObject(ID_FIELD, id)
+                    .append(ID_FIELD, id)
+                    .append("rootNodeId", commit.getRootNodeId())
+                    .append("ts", commit.getCommitTS())
+                    .append("parentId", commit.getParentId())
+                    .append("msg", commit.getMsg());
+        }
         try {
             commits.insert(commitObject);
         } catch (MongoException.DuplicateKey ignore) {