You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by th...@apache.org on 2013/11/05 13:46:09 UTC

svn commit: r1538973 - in /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk: MongoBlob.java MongoNodeStoreBranch.java

Author: thomasm
Date: Tue Nov  5 12:46:09 2013
New Revision: 1538973

URL: http://svn.apache.org/r1538973
Log:
OAK-1080: MongoMK: improved concurrency

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoBlob.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoNodeStoreBranch.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoBlob.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoBlob.java?rev=1538973&r1=1538972&r2=1538973&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoBlob.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoBlob.java Tue Nov  5 12:46:09 2013
@@ -57,4 +57,23 @@ public class MongoBlob implements Blob {
         return id;
     }
     
+    @Override
+    public int hashCode() {
+        return id.hashCode();
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (this == other) {
+            return true;
+        } 
+        if (other instanceof MongoBlob) {
+            MongoBlob b = (MongoBlob) other;
+            // theoretically, the data could be the same  
+            // even if the id is different
+            return b.id.equals(id);
+        }
+        return false;
+    }
+
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoNodeStoreBranch.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoNodeStoreBranch.java?rev=1538973&r1=1538972&r2=1538973&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoNodeStoreBranch.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoNodeStoreBranch.java Tue Nov  5 12:46:09 2013
@@ -16,6 +16,8 @@
  */
 package org.apache.jackrabbit.oak.plugins.mongomk;
 
+import java.io.IOException;
+
 import org.apache.jackrabbit.oak.api.Blob;
 import org.apache.jackrabbit.oak.kernel.BlobSerializer;
 import org.apache.jackrabbit.oak.plugins.observation.ChangeDispatcher;
@@ -31,7 +33,16 @@ public class MongoNodeStoreBranch
     private final BlobSerializer blobs = new BlobSerializer() {
         @Override
         public String serialize(Blob blob) {
-            return blob.toString();
+            if (blob instanceof MongoBlob) {
+                return blob.toString();
+            }
+            String id;
+            try {
+                id = store.createBlob(blob.getNewStream()).toString();
+            } catch (IOException e) {
+                throw new IllegalStateException(e);
+            }
+            return id;
         }
     };