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 ch...@apache.org on 2017/07/26 08:10:41 UTC

svn commit: r1803023 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/inventory/ oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/inventory/ oak-store-spi/src/main/java/org/apache/jackrabbit/oak/j...

Author: chetanm
Date: Wed Jul 26 08:10:41 2017
New Revision: 1803023

URL: http://svn.apache.org/viewvc?rev=1803023&view=rev
Log:
OAK-6471 - Support adding or updating index definitions via oak-run

Handle binary properties properly while serializing

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/inventory/IndexDefinitionPrinter.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/inventory/IndexDefinitionPrinterTest.java
    jackrabbit/oak/trunk/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/json/Base64BlobSerializer.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/inventory/IndexDefinitionPrinter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/inventory/IndexDefinitionPrinter.java?rev=1803023&r1=1803022&r2=1803023&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/inventory/IndexDefinitionPrinter.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/inventory/IndexDefinitionPrinter.java Wed Jul 26 08:10:41 2017
@@ -29,6 +29,7 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.commons.json.JsopBuilder;
+import org.apache.jackrabbit.oak.json.Base64BlobSerializer;
 import org.apache.jackrabbit.oak.json.BlobSerializer;
 import org.apache.jackrabbit.oak.json.JsonSerializer;
 import org.apache.jackrabbit.oak.plugins.index.IndexPathService;
@@ -81,6 +82,6 @@ public class IndexDefinitionPrinter impl
     }
 
     private JsonSerializer createSerializer(JsopBuilder json) {
-        return new JsonSerializer(json, filter, new BlobSerializer());
+        return new JsonSerializer(json, filter, new Base64BlobSerializer());
     }
 }

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/inventory/IndexDefinitionPrinterTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/inventory/IndexDefinitionPrinterTest.java?rev=1803023&r1=1803022&r2=1803023&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/inventory/IndexDefinitionPrinterTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/inventory/IndexDefinitionPrinterTest.java Wed Jul 26 08:10:41 2017
@@ -25,6 +25,8 @@ import java.io.StringWriter;
 import com.google.common.collect.Lists;
 import org.apache.felix.inventory.Format;
 import org.apache.jackrabbit.oak.plugins.index.IndexPathService;
+import org.apache.jackrabbit.oak.plugins.index.importer.IndexDefinitionUpdater;
+import org.apache.jackrabbit.oak.plugins.memory.ArrayBasedBlob;
 import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
 import org.apache.jackrabbit.oak.spi.commit.EmptyHook;
@@ -36,6 +38,7 @@ import org.junit.Test;
 
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -58,13 +61,8 @@ public class IndexDefinitionPrinterTest
 
         when(pathService.getIndexPaths()).thenReturn(Lists.newArrayList("/a", "/b"));
 
-        StringWriter sw = new StringWriter();
-        PrintWriter pw = new PrintWriter(sw);
-        printer.print(pw, Format.JSON, false);
-
-        pw.flush();
+        String json = getJSON();
 
-        String json = sw.toString();
         //If there is any error in rendered json
         //exception would fail the test
         JSONObject o = (JSONObject) JSONValue.parseWithException(json);
@@ -76,4 +74,26 @@ public class IndexDefinitionPrinterTest
         assertNotNull(a.get(":foo"));
         assertNull(a.get(":childOrder"));
     }
+
+    @Test
+    public void binaryProps() throws Exception{
+        NodeBuilder builder = store.getRoot().builder();
+        builder.child("a").setProperty("foo", new ArrayBasedBlob("hello".getBytes()));
+        store.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY);
+
+        when(pathService.getIndexPaths()).thenReturn(Lists.newArrayList("/a"));
+
+        String json = getJSON();
+
+        IndexDefinitionUpdater updater = new IndexDefinitionUpdater(json);
+        assertTrue(updater.getIndexPaths().contains("/a"));
+    }
+
+    private String getJSON() {
+        StringWriter sw = new StringWriter();
+        PrintWriter pw = new PrintWriter(sw);
+        printer.print(pw, Format.JSON, false);
+        pw.flush();
+        return sw.toString();
+    }
 }
\ No newline at end of file

Modified: jackrabbit/oak/trunk/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/json/Base64BlobSerializer.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/json/Base64BlobSerializer.java?rev=1803023&r1=1803022&r2=1803023&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/json/Base64BlobSerializer.java (original)
+++ jackrabbit/oak/trunk/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/json/Base64BlobSerializer.java Wed Jul 26 08:10:41 2017
@@ -33,10 +33,11 @@ import org.apache.jackrabbit.util.Base64
 import static com.google.common.base.Preconditions.checkArgument;
 
 public class Base64BlobSerializer extends BlobSerializer implements BlobDeserializer {
+    private static final int DEFAULT_LIMIT = Integer.getInteger("oak.serializer.maxBlobSize", (int)FileUtils.ONE_MB);
     private final int maxSize;
 
     public Base64BlobSerializer() {
-        this((int)FileUtils.ONE_MB);
+        this(DEFAULT_LIMIT);
     }
 
     public Base64BlobSerializer(int maxSize) {