Author: reschke
Date: Thu Nov 23 10:56:21 2017
New Revision: 1816125
URL: http://svn.apache.org/viewvc?rev=1816125&view=rev
Log:
OAK-6974: RDBDocumentSerializer: factor out columnProperties
Modified:
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializer.java
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBC.java
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBExport.java
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializerTest.java
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBCTest.java
Modified:
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializer.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializer.java?rev=1816125&r1=1816124&r2=1816125&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializer.java
(original)
+++
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializer.java
Thu Nov 23 10:56:21 2017
@@ -54,7 +54,6 @@ import org.slf4j.LoggerFactory;
public class RDBDocumentSerializer {
private final DocumentStore store;
- private final Set<String> columnProperties;
private static final String MODIFIED = "_modified";
private static final String MODCOUNT = "_modCount";
@@ -69,16 +68,15 @@ public class RDBDocumentSerializer {
private static final RDBJSONSupport JSON = new RDBJSONSupport(true);
- public RDBDocumentSerializer(DocumentStore store, Set<String>
columnProperties) {
+ public RDBDocumentSerializer(DocumentStore store) {
this.store = store;
- this.columnProperties = columnProperties;
}
/**
* Serializes all non-column properties of the {@link Document} into a JSON
* string.
*/
- public String asString(@Nonnull Document doc) {
+ public String asString(@Nonnull Document doc, Set<String>
columnProperties) {
StringBuilder sb = new StringBuilder(32768);
sb.append("{");
boolean needComma = false;
@@ -100,7 +98,7 @@ public class RDBDocumentSerializer {
* Serializes the changes in the {@link UpdateOp} into a JSON array; each
* entry is another JSON array holding operation, key, revision, and value.
*/
- public String asString(UpdateOp update) {
+ public String asString(UpdateOp update, Set<String> columnProperties) {
StringBuilder sb = new StringBuilder("[");
boolean needComma = false;
for (Map.Entry<Key, Operation> change :
update.getChanges().entrySet()) {
Modified:
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java?rev=1816125&r1=1816124&r2=1816125&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
(original)
+++
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
Thu Nov 23 10:56:21 2017
@@ -640,6 +640,7 @@ public class RDBDocumentStore implements
private boolean idIsBinary = false;
private boolean hasVersion = false;
private int dataLimitInOctets = 16384;
+ private Set<String> columnProperties =
Collections.unmodifiableSet(COLUMNPROPERTIES);
public RDBTableMetaData(String name) {
this.name = name;
@@ -649,6 +650,10 @@ public class RDBDocumentStore implements
return this.dataLimitInOctets;
}
+ public Set<String> getColumnProperties() {
+ return this.columnProperties;
+ }
+
public String getName() {
return this.name;
}
@@ -815,7 +820,7 @@ public class RDBDocumentStore implements
private static final Set<String> COLUMNPROPERTIES = new
HashSet<String>(Arrays.asList(
new String[] { ID, NodeDocument.HAS_BINARY_FLAG,
NodeDocument.DELETED_ONCE, COLLISIONSMODCOUNT, MODIFIED, MODCOUNT }));
- private final RDBDocumentSerializer ser = new RDBDocumentSerializer(this,
COLUMNPROPERTIES);
+ private final RDBDocumentSerializer ser = new RDBDocumentSerializer(this);
private void initialize(DataSource ds, DocumentMK.Builder builder,
RDBOptions options) throws Exception {
this.stats = builder.getDocumentStoreStatsCollector();
@@ -921,6 +926,7 @@ public class RDBDocumentStore implements
}
private void obtainFlagsFromResultSetMeta(ResultSetMetaData met,
RDBTableMetaData tmd) throws SQLException {
+
for (int i = 1; i <= met.getColumnCount(); i++) {
String lcName = met.getColumnName(i).toLowerCase(Locale.ENGLISH);
if ("id".equals(lcName)) {
@@ -1770,7 +1776,7 @@ public class RDBDocumentStore implements
// every 16th update is a full rewrite
if (isAppendableUpdate(update) && modcount % 16 != 0) {
- String appendData = ser.asString(update);
+ String appendData = ser.asString(update,
tmd.getColumnProperties());
if (appendData.length() < tmd.getDataLimitInOctets() /
CHAR2OCTETRATIO) {
try {
Operation modOperation =
update.getChanges().get(MODIFIEDKEY);
@@ -1792,7 +1798,7 @@ public class RDBDocumentStore implements
}
}
if (!success && shouldRetry) {
- data = ser.asString(document);
+ data = ser.asString(document, tmd.getColumnProperties());
Object m = document.get(MODIFIED);
long modified = (m instanceof Long) ? ((Long)m).longValue() :
0;
success = db.update(connection, tmd, document.getId(),
modified, hasBinary, deletedOnce, modcount, cmodcount,
@@ -1866,7 +1872,7 @@ public class RDBDocumentStore implements
int longest = 0, longestChars = 0;
for (Document d : documents) {
- String data = ser.asString(d);
+ String data = ser.asString(d, tmd.getColumnProperties());
byte bytes[] = asBytes(data);
if (bytes.length > longest) {
longest = bytes.length;
Modified:
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBC.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBC.java?rev=1816125&r1=1816124&r2=1816125&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBC.java
(original)
+++
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBC.java
Thu Nov 23 10:56:21 2017
@@ -249,7 +249,7 @@ public class RDBDocumentStoreJDBC {
int[] results;
try {
for (T document : sortedDocs) {
- String data = this.ser.asString(document);
+ String data = this.ser.asString(document,
tmd.getColumnProperties());
String id = document.getId();
Number hasBinary = (Number)
document.get(NodeDocument.HAS_BINARY_FLAG);
Boolean deletedOnce = (Boolean)
document.get(NodeDocument.DELETED_ONCE);
@@ -330,7 +330,7 @@ public class RDBDocumentStoreJDBC {
continue; // This is a new document. We'll deal with the
inserts later.
}
- String data = this.ser.asString(document);
+ String data = this.ser.asString(document,
tmd.getColumnProperties());
Number hasBinary = (Number)
document.get(NodeDocument.HAS_BINARY_FLAG);
Boolean deletedOnce = (Boolean)
document.get(NodeDocument.DELETED_ONCE);
Long cmodcount = (Long) document.get(COLLISIONSMODCOUNT);
Modified:
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBExport.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBExport.java?rev=1816125&r1=1816124&r2=1816125&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBExport.java
(original)
+++
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBExport.java
Thu Nov 23 10:56:21 2017
@@ -68,15 +68,18 @@ public class RDBExport {
private static final RDBJSONSupport JSON = new RDBJSONSupport(false);
+ private static final Set<String> EXCLUDE_COLUMNS = new HashSet<String>();
+ static {
+ EXCLUDE_COLUMNS.add(Document.ID);
+ }
+
public static void main(String[] args) throws ClassNotFoundException,
SQLException, IOException {
String url = null, user = null, pw = null, table = "nodes", query =
null, dumpfile = null, lobdir = null;
List<String> fieldList = Collections.emptyList();
Format format = Format.JSON;
PrintStream out = System.out;
- Set<String> excl = new HashSet<String>();
- excl.add(Document.ID);
- RDBDocumentSerializer ser = new RDBDocumentSerializer(new
MemoryDocumentStore(), excl);
+ RDBDocumentSerializer ser = new RDBDocumentSerializer(new
MemoryDocumentStore());
String columns = null;
String param = null;
@@ -358,7 +361,7 @@ public class RDBExport {
@Nonnull
private static StringBuilder dumpRow(RDBDocumentSerializer ser, String id,
RDBRow row) {
NodeDocument doc = ser.fromRow(Collection.NODES, row);
- String docjson = ser.asString(doc);
+ String docjson = ser.asString(doc, EXCLUDE_COLUMNS);
StringBuilder fulljson = new StringBuilder();
fulljson.append("{\"_id\":\"");
JsopBuilder.escape(id, fulljson);
Modified:
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializerTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializerTest.java?rev=1816125&r1=1816124&r2=1816125&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializerTest.java
(original)
+++
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializerTest.java
Thu Nov 23 10:56:21 2017
@@ -24,7 +24,6 @@ import static org.junit.Assert.assertTru
import static org.junit.Assert.fail;
import java.io.UnsupportedEncodingException;
-import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -46,7 +45,7 @@ public class RDBDocumentSerializerTest {
@Before
public void setUp() throws Exception {
store = fixture.createDocumentStore();
- ser = new RDBDocumentSerializer(store, Collections.singleton("_id"));
+ ser = new RDBDocumentSerializer(store);
}
@After
Modified:
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBCTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBCTest.java?rev=1816125&r1=1816124&r2=1816125&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBCTest.java
(original)
+++
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBCTest.java
Thu Nov 23 10:56:21 2017
@@ -80,7 +80,7 @@ public class RDBDocumentStoreJDBCTest ex
assumeTrue(super.rdbDataSource != null);
dbInfo = RDBDocumentStoreDB.getValue(((RDBDocumentStore)
super.ds).getMetadata().get("db"));
- RDBDocumentSerializer ser = new RDBDocumentSerializer(super.ds,
Collections.singleton("_id"));
+ RDBDocumentSerializer ser = new RDBDocumentSerializer(super.ds);
jdbc = new RDBDocumentStoreJDBC(dbInfo, ser, 100, 10000);
}