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/12/21 04:44:39 UTC

svn commit: r1818875 - in /jackrabbit/oak/trunk/oak-run/src: main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/ test/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/

Author: chetanm
Date: Thu Dec 21 04:44:39 2017
New Revision: 1818875

URL: http://svn.apache.org/viewvc?rev=1818875&view=rev
Log:
OAK-7102 - Refactor DocumentIndexer logic to enable different sort approaches

Modify NodeStateEntryWriter to return the line to be written instead
of directly adding to writer

Modified:
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileNodeStoreBuilder.java
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/NodeStateEntryWriter.java
    jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/NodeStateEntryWriterTest.java

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileNodeStoreBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileNodeStoreBuilder.java?rev=1818875&r1=1818874&r2=1818875&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileNodeStoreBuilder.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileNodeStoreBuilder.java Thu Dec 21 04:44:39 2017
@@ -35,6 +35,7 @@ import org.apache.jackrabbit.oak.spi.blo
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import static com.google.common.base.StandardSystemProperty.LINE_SEPARATOR;
 import static com.google.common.collect.Iterables.size;
 
 public class FlatFileNodeStoreBuilder {
@@ -121,12 +122,11 @@ public class FlatFileNodeStoreBuilder {
     private File writeToStore(File dir, String fileName) throws IOException {
         File file = new File(dir, fileName);
         Stopwatch sw = Stopwatch.createStarted();
-        try (
-                Writer w = Files.newWriter(file, Charsets.UTF_8);
-                NodeStateEntryWriter entryWriter = new NodeStateEntryWriter(blobStore, w)
-        ) {
+        NodeStateEntryWriter entryWriter = new NodeStateEntryWriter(blobStore);
+        try (Writer w = Files.newWriter(file, Charsets.UTF_8)) {
             for (NodeStateEntry e : nodeStates) {
-                entryWriter.write(e);
+                String line = entryWriter.toString(e);
+                w.append(line).append(LINE_SEPARATOR.value());
                 entryCount++;
             }
         }

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/NodeStateEntryWriter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/NodeStateEntryWriter.java?rev=1818875&r1=1818874&r2=1818875&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/NodeStateEntryWriter.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/NodeStateEntryWriter.java Thu Dec 21 04:44:39 2017
@@ -19,10 +19,6 @@
 
 package org.apache.jackrabbit.oak.index.indexer.document.flatfile;
 
-import java.io.Closeable;
-import java.io.IOException;
-import java.io.Writer;
-
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.commons.json.JsopBuilder;
 import org.apache.jackrabbit.oak.index.indexer.document.NodeStateEntry;
@@ -34,10 +30,9 @@ import org.apache.jackrabbit.oak.spi.sta
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.base.StandardSystemProperty.LINE_SEPARATOR;
 
-public class NodeStateEntryWriter implements Closeable{
+public class NodeStateEntryWriter {
     private static final String OAK_CHILD_ORDER = ":childOrder";
     private static final String DELIMITER = "|";
-    private final Writer writer;
     private final JsopBuilder jw = new JsopBuilder();
     private final JsonSerializer serializer;
 
@@ -45,22 +40,17 @@ public class NodeStateEntryWriter implem
     //1. Compression
     //2. Dictionary for properties
 
-    public NodeStateEntryWriter(BlobStore blobStore, Writer writer) {
-        this.writer = writer;
+    public NodeStateEntryWriter(BlobStore blobStore) {
         this.serializer = new JsonSerializer(jw, new BlobIdSerializer(blobStore));
     }
 
-    public void write(NodeStateEntry e) throws IOException {
+    public String toString(NodeStateEntry e) {
         String text = asText(e.getNodeState());
-        writer.append(e.getPath())
+        StringBuilder sb = new StringBuilder(text.length() + e.getPath().length() + 1);
+        sb.append(e.getPath())
                 .append(DELIMITER)
-                .append(text)
-                .append(LINE_SEPARATOR.value());
-    }
-
-    @Override
-    public void close() throws IOException {
-        writer.flush();
+                .append(text);
+        return sb.toString();
     }
 
     private String asText(NodeState nodeState) {

Modified: jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/NodeStateEntryWriterTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/NodeStateEntryWriterTest.java?rev=1818875&r1=1818874&r2=1818875&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/NodeStateEntryWriterTest.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/NodeStateEntryWriterTest.java Thu Dec 21 04:44:39 2017
@@ -19,9 +19,6 @@
 
 package org.apache.jackrabbit.oak.index.indexer.document.flatfile;
 
-import java.io.BufferedReader;
-import java.io.StringReader;
-import java.io.StringWriter;
 import java.util.Arrays;
 
 import org.apache.jackrabbit.oak.api.Type;
@@ -40,22 +37,18 @@ import static org.junit.Assert.assertTru
 public class NodeStateEntryWriterTest {
     private BlobStore blobStore = new MemoryBlobStore();
     private NodeBuilder builder = EMPTY_NODE.builder();
-    private StringWriter sw = new StringWriter();
 
     @Test
-    public void newLines() throws Exception{
-        NodeStateEntryWriter nw = new NodeStateEntryWriter(blobStore, sw);
+    public void newLines() {
+        NodeStateEntryWriter nw = new NodeStateEntryWriter(blobStore);
 
         builder.setProperty("foo", 1);
         builder.setProperty("foo2", Arrays.asList("a", "b"), Type.STRINGS);
         builder.setProperty("foo3", "text with \n new line");
-        nw.write(new NodeStateEntry(builder.getNodeState(), "/a"));
-        nw.close();
+        String line = nw.toString(new NodeStateEntry(builder.getNodeState(), "/a"));
 
         NodeStateEntryReader nr = new NodeStateEntryReader(blobStore);
-        BufferedReader br = new BufferedReader(new StringReader(sw.toString()));
 
-        String line = br.readLine();
         NodeStateEntry ne = nr.read(line);
         assertEquals("/a", ne.getPath());
         assertEquals("/a", NodeStateEntryWriter.getPath(line));
@@ -63,8 +56,8 @@ public class NodeStateEntryWriterTest {
     }
 
     @Test
-    public void multipleEntries() throws Exception{
-        NodeStateEntryWriter nw = new NodeStateEntryWriter(blobStore, sw);
+    public void multipleEntries() {
+        NodeStateEntryWriter nw = new NodeStateEntryWriter(blobStore);
 
         NodeBuilder b1 = EMPTY_NODE.builder();
         b1.setProperty("foo", "bar");
@@ -75,20 +68,18 @@ public class NodeStateEntryWriterTest {
         NodeStateEntry e1 = new NodeStateEntry(b1.getNodeState(), "/a");
         NodeStateEntry e2 = new NodeStateEntry(b2.getNodeState(), "/a");
 
-        nw.write(e1);
-        nw.write(e2);
-        nw.close();
+        String line1 = nw.toString(e1);
+        String line2 = nw.toString(e2);
 
         NodeStateEntryReader nr = new NodeStateEntryReader(blobStore);
-        BufferedReader br = new BufferedReader(new StringReader(sw.toString()));
 
-        assertEquals(e1, nr.read(br.readLine()));
-        assertEquals(e2, nr.read(br.readLine()));
+        assertEquals(e1, nr.read(line1));
+        assertEquals(e2, nr.read(line2));
     }
 
     @Test
-    public void childOrderNotWritten() throws Exception{
-        NodeStateEntryWriter nw = new NodeStateEntryWriter(blobStore, sw);
+    public void childOrderNotWritten(){
+        NodeStateEntryWriter nw = new NodeStateEntryWriter(blobStore);
 
         NodeBuilder b1 = EMPTY_NODE.builder();
         b1.setProperty("foo", "bar");
@@ -97,13 +88,11 @@ public class NodeStateEntryWriterTest {
 
         NodeStateEntry e1 = new NodeStateEntry(b1.getNodeState(), "/a");
 
-        nw.write(e1);
-        nw.close();
+        String line = nw.toString(e1);
 
         NodeStateEntryReader nr = new NodeStateEntryReader(blobStore);
-        BufferedReader br = new BufferedReader(new StringReader(sw.toString()));
 
-        NodeStateEntry r1 = nr.read(br.readLine());
+        NodeStateEntry r1 = nr.read(line);
         assertTrue(r1.getNodeState().hasProperty(":hidden"));
         assertFalse(r1.getNodeState().hasProperty(":childOrder"));
     }