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);
}