Author: chetanm
Date: Tue Jul 25 09:26:11 2017
New Revision: 1802905

URL: http://svn.apache.org/viewvc?rev=1802905&view=rev
Log:
OAK-6490- Pre-Extraction support fails for empty binaries

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/datastore/DataStoreTextWriter.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/datastore/DataStoreTextWriterTest.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/datastore/DataStoreTextWriter.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/datastore/DataStoreTextWriter.java?rev=1802905&r1=1802904&r2=1802905&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/datastore/DataStoreTextWriter.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/datastore/DataStoreTextWriter.java
 Tue Jul 25 09:26:11 2017
@@ -35,6 +35,7 @@ import com.google.common.io.Files;
 import org.apache.commons.io.FileUtils;
 import org.apache.jackrabbit.oak.api.Blob;
 import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore;
+import org.apache.jackrabbit.oak.plugins.blob.datastore.InMemoryDataRecord;
 import org.apache.jackrabbit.oak.plugins.blob.datastore.TextWriter;
 import org.apache.jackrabbit.oak.plugins.index.fulltext.ExtractedText;
 import 
org.apache.jackrabbit.oak.plugins.index.fulltext.ExtractedText.ExtractionResult;
@@ -95,6 +96,12 @@ public class DataStoreTextWriter impleme
         }
 
         blobId = stripLength(blobId);
+        //Check for ref being non null to ensure its not an inlined binary
+        if (InMemoryDataRecord.isInstance(blobId)) {
+            log.debug("Pre extraction is not supported for in memory records. 
Path {}, BlobId {}", propertyPath, blobId);
+            return null;
+        }
+
         ExtractedText result = null;
         if (getEmptyBlobs().contains(blobId)) {
             result = ExtractedText.EMPTY;

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/datastore/DataStoreTextWriterTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/datastore/DataStoreTextWriterTest.java?rev=1802905&r1=1802904&r2=1802905&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/datastore/DataStoreTextWriterTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/datastore/DataStoreTextWriterTest.java
 Tue Jul 25 09:26:11 2017
@@ -25,10 +25,13 @@ import java.io.File;
 import org.apache.commons.io.IOUtils;
 import org.apache.jackrabbit.core.data.DataRecord;
 import org.apache.jackrabbit.core.data.FileDataStore;
+import org.apache.jackrabbit.oak.plugins.blob.BlobStoreBlob;
+import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore;
 import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreUtils;
 import org.apache.jackrabbit.oak.plugins.blob.datastore.TextWriter;
 import org.apache.jackrabbit.oak.plugins.index.fulltext.ExtractedText;
 import 
org.apache.jackrabbit.oak.plugins.index.fulltext.ExtractedText.ExtractionResult;
+import 
org.apache.jackrabbit.oak.plugins.index.fulltext.PreExtractedTextProvider;
 import org.apache.jackrabbit.oak.plugins.memory.ArrayBasedBlob;
 import org.junit.Rule;
 import org.junit.Test;
@@ -108,6 +111,19 @@ public class DataStoreTextWriterTest {
         assertTrue(w.isProcessed("a"));
 
     }
+    
+    @Test
+    public void inMemoryRecord() throws Exception{
+        File fdsDir = temporaryFolder.newFolder();
+        FileDataStore fds = DataStoreUtils.createFDS(fdsDir, 10000);
+        DataStoreBlobStore dbs = new DataStoreBlobStore(fds);
+        ByteArrayInputStream is = new ByteArrayInputStream("".getBytes());
+        String blobId = dbs.writeBlob(is);
+
+        File writerDir = temporaryFolder.newFolder();
+        PreExtractedTextProvider textProvider = new 
DataStoreTextWriter(writerDir, true);
+        assertNull(textProvider.getText("/content", new BlobStoreBlob(dbs, 
blobId)));
+    }
 
     private static class IdBlob extends ArrayBasedBlob {
         final String id;


Reply via email to