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) {