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


Reply via email to