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 mr...@apache.org on 2016/12/14 09:33:21 UTC

svn commit: r1774155 - in /jackrabbit/oak/trunk/oak-lucene/src: main/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectory.java test/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectoryTest.java

Author: mreutegg
Date: Wed Dec 14 09:33:21 2016
New Revision: 1774155

URL: http://svn.apache.org/viewvc?rev=1774155&view=rev
Log:
OAK-5300: OakDirectory.fileLength() must throw FileNotFoundException if file does not exist

Modified:
    jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectory.java
    jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectoryTest.java

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectory.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectory.java?rev=1774155&r1=1774154&r2=1774155&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectory.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectory.java Wed Dec 14 09:33:21 2016
@@ -168,6 +168,10 @@ public class OakDirectory extends Direct
     @Override
     public long fileLength(String name) throws IOException {
         NodeBuilder file = directoryBuilder.getChildNode(name);
+        if (!file.exists()) {
+            String msg = String.format("[%s] %s", indexName, name);
+            throw new FileNotFoundException(msg);
+        }
         OakIndexInput input = new OakIndexInput(name, file, indexName, blobFactory);
         try {
             return input.length();

Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectoryTest.java?rev=1774155&r1=1774154&r2=1774155&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectoryTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectoryTest.java Wed Dec 14 09:33:21 2016
@@ -39,6 +39,7 @@ import static org.junit.Assert.fail;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
@@ -481,6 +482,22 @@ public class OakDirectoryTest {
         dir.close();
     }
 
+    @Test
+    public void fileLength() throws Exception {
+        final int fileSize = 1024;
+        final String fileName = "file";
+        OakDirectory dir = createDir(builder, false, "/foo");
+        writeFile(dir, fileName, fileSize);
+        assertEquals(fileSize, dir.fileLength(fileName));
+        try {
+            dir.fileLength("unknown");
+            fail("must throw FileNotFoundException");
+        } catch (FileNotFoundException expected) {
+            // expected
+        }
+        dir.close();
+    }
+
     private static void readInputToEnd(long expectedSize, IndexInput input) throws IOException {
         int COPY_BUFFER_SIZE = 16384;
         byte[] copyBuffer = new byte[(int) ONE_MB];