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"));
}