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 ju...@apache.org on 2013/02/11 23:22:22 UTC

svn commit: r1444981 - /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentBlob.java

Author: jukka
Date: Mon Feb 11 22:22:21 2013
New Revision: 1444981

URL: http://svn.apache.org/r1444981
Log:
OAK-593: Segment-based MK

Improved blob handling

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentBlob.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentBlob.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentBlob.java?rev=1444981&r1=1444980&r2=1444981&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentBlob.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentBlob.java Mon Feb 11 22:22:21 2013
@@ -24,8 +24,9 @@ import java.security.NoSuchAlgorithmExce
 import javax.annotation.Nonnull;
 
 import org.apache.jackrabbit.oak.api.Blob;
+import org.apache.jackrabbit.oak.plugins.memory.AbstractBlob;
 
-public class SegmentBlob implements Blob {
+public class SegmentBlob extends AbstractBlob {
 
     private final SegmentReader reader;
 
@@ -52,27 +53,25 @@ public class SegmentBlob implements Blob
     }
 
     @Override
-    public byte[] sha256() {
-        SegmentStream stream = getNewStream();
-        try {
-            MessageDigest digest = MessageDigest.getInstance("SHA-256");
-
-            byte[] buffer = new byte[1024];
-            for (int n = stream.read(buffer); n != -1; n = stream.read(buffer)) {
-                digest.update(buffer, 0, n);
+    public int compareTo(Blob blob) {
+        if (blob instanceof SegmentBlob) {
+            SegmentBlob that = (SegmentBlob) blob;
+            if (recordId.equals(that.recordId)) {
+                return 0;
             }
-
-            return digest.digest();
-        } catch (NoSuchAlgorithmException e) {
-            throw new UnsupportedOperationException("SHA256 not supported", e);
-        } finally {
-            stream.close();
         }
+        return super.compareTo(blob);
     }
 
     @Override
-    public int compareTo(Blob that) {
-        throw new UnsupportedOperationException();
+    public boolean equals(Object object) {
+        if (object instanceof SegmentBlob) {
+            SegmentBlob that = (SegmentBlob) object;
+            if (recordId.equals(that.recordId)) {
+                return true;
+            }
+        }
+        return super.equals(object);
     }
 
 }