Author: stefan
Date: Tue Jul  1 13:57:26 2014
New Revision: 1607081

URL: http://svn.apache.org/r1607081
Log:
OAK-1931: MicroKernel.read() returns negative value

Modified:
    
jackrabbit/oak/trunk/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/mk/MicroKernelInputStream.java
    
jackrabbit/oak/trunk/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/mk/MicroKernelInputStreamTest.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/NodeStoreKernel.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentMK.java
    
jackrabbit/oak/trunk/oak-it/mk/src/main/java/org/apache/jackrabbit/mk/test/MicroKernelIT.java
    
jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/core/MicroKernelImpl.java

Modified: 
jackrabbit/oak/trunk/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/mk/MicroKernelInputStream.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/mk/MicroKernelInputStream.java?rev=1607081&r1=1607080&r2=1607081&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/mk/MicroKernelInputStream.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/mk/MicroKernelInputStream.java
 Tue Jul  1 13:57:26 2014
@@ -54,8 +54,8 @@ public class MicroKernelInputStream exte
     @Override
     public int read(byte[] b, int off, int len) {
         int l = mk.read(id, pos, b, off, len);
-        if (l < 0) {
-            return l;
+        if (l <= 0) {
+            return -1;
         }
         pos += l;
         return l;

Modified: 
jackrabbit/oak/trunk/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/mk/MicroKernelInputStreamTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/mk/MicroKernelInputStreamTest.java?rev=1607081&r1=1607080&r2=1607081&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/mk/MicroKernelInputStreamTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/mk/MicroKernelInputStreamTest.java
 Tue Jul  1 13:57:26 2014
@@ -250,7 +250,8 @@ public class MicroKernelInputStreamTest 
                     InputStream stream = new ByteArrayInputStream(data);
                     try {
                         ByteStreams.skipFully(stream, pos);
-                        return stream.read(buff, off, length);
+                        int read = stream.read(buff, off, length);
+                        return read < 0 ? 0 : read;
                     } finally {
                         stream.close();
                     }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/NodeStoreKernel.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/NodeStoreKernel.java?rev=1607081&r1=1607080&r2=1607081&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/NodeStoreKernel.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/NodeStoreKernel.java
 Tue Jul  1 13:57:26 2014
@@ -623,7 +623,8 @@ public class NodeStoreKernel implements 
                 InputStream stream = blob.getNewStream();
                 try {
                     ByteStreams.skipFully(stream, pos);
-                    return stream.read(buff, off, length);
+                    int read = stream.read(buff, off, length);
+                    return read < 0 ? 0 : read;
                 } finally {
                     stream.close();
                 }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentMK.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentMK.java?rev=1607081&r1=1607080&r2=1607081&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentMK.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentMK.java
 Tue Jul  1 13:57:26 2014
@@ -319,7 +319,8 @@ public class DocumentMK implements Micro
     public int read(String blobId, long pos, byte[] buff, int off, int length)
             throws MicroKernelException {
         try {
-            return nodeStore.getBlobStore().readBlob(blobId, pos, buff, off, 
length);
+            int read = nodeStore.getBlobStore().readBlob(blobId, pos, buff, 
off, length);
+            return read < 0 ? 0 : read;
         } catch (Exception e) {
             throw new MicroKernelException(e);
         }

Modified: 
jackrabbit/oak/trunk/oak-it/mk/src/main/java/org/apache/jackrabbit/mk/test/MicroKernelIT.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-it/mk/src/main/java/org/apache/jackrabbit/mk/test/MicroKernelIT.java?rev=1607081&r1=1607080&r2=1607081&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-it/mk/src/main/java/org/apache/jackrabbit/mk/test/MicroKernelIT.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-it/mk/src/main/java/org/apache/jackrabbit/mk/test/MicroKernelIT.java
 Tue Jul  1 13:57:26 2014
@@ -1387,7 +1387,6 @@ public class MicroKernelIT extends Abstr
         }
     }
 
-    @Ignore("OAK-1931")  // FIXME OAK-1931
     @Test
     public void testReadReturnsNonNegative() {
         TestInputStream in = new TestInputStream(0);

Modified: 
jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/core/MicroKernelImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/core/MicroKernelImpl.java?rev=1607081&r1=1607080&r2=1607081&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/core/MicroKernelImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/core/MicroKernelImpl.java
 Tue Jul  1 13:57:26 2014
@@ -630,7 +630,8 @@ public class MicroKernelImpl implements 
             throw new IllegalStateException("this instance has already been 
disposed");
         }
         try {
-            return rep.getBlobStore().readBlob(blobId, pos, buff, off, length);
+            int read = rep.getBlobStore().readBlob(blobId, pos, buff, off, 
length);
+            return read < 0 ? 0 : read;
         } catch (Exception e) {
             throw new MicroKernelException(e);
         }


Reply via email to