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;