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 re...@apache.org on 2015/03/13 16:56:02 UTC

svn commit: r1666491 - in /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb: RDBBlobStore.java RDBDataSourceFactory.java RDBDocumentSerializer.java RDBDocumentStore.java

Author: reschke
Date: Fri Mar 13 15:56:01 2015
New Revision: 1666491

URL: http://svn.apache.org/r1666491
Log:
OAK-1266 - fix FindBug detected issues, remove unused imports

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDataSourceFactory.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializer.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java?rev=1666491&r1=1666490&r2=1666491&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java Fri Mar 13 15:56:01 2015
@@ -38,8 +38,6 @@ import javax.sql.DataSource;
 import org.apache.jackrabbit.oak.commons.StringUtils;
 import org.apache.jackrabbit.oak.plugins.blob.CachingBlobStore;
 import org.apache.jackrabbit.oak.plugins.document.DocumentStoreException;
-import org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.DB;
-import org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.FETCHFIRSTSYNTAX;
 import org.apache.jackrabbit.oak.spi.blob.AbstractBlobStore;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDataSourceFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDataSourceFactory.java?rev=1666491&r1=1666490&r2=1666491&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDataSourceFactory.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDataSourceFactory.java Fri Mar 13 15:56:01 2015
@@ -24,7 +24,6 @@ import java.sql.Driver;
 import java.sql.DriverManager;
 import java.sql.SQLException;
 import java.sql.SQLFeatureNotSupportedException;
-import java.util.Locale;
 import java.util.logging.Logger;
 
 import javax.sql.DataSource;

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializer.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializer.java?rev=1666491&r1=1666490&r2=1666491&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializer.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializer.java Fri Mar 13 15:56:01 2015
@@ -27,6 +27,7 @@ import java.util.TreeMap;
 import java.util.zip.GZIPInputStream;
 
 import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.jackrabbit.oak.commons.json.JsopBuilder;
@@ -122,8 +123,9 @@ public class RDBDocumentSerializer {
             }
             appendString(sb, key.getName());
             sb.append(",");
-            if (key.getRevision() != null) {
-                appendString(sb, key.getRevision().toString());
+            Revision rev = key.getRevision();
+            if (rev != null) {
+                appendString(sb, rev.toString());
                 sb.append(",");
             }
             appendValue(sb, op.value);
@@ -226,7 +228,7 @@ public class RDBDocumentSerializer {
                 if (!blobInUse) {
                     throw new DocumentStoreException("did not expect \"blob\" here: " + row.getData());
                 }
-                if (!json.getToken().equals("blob")) {
+                if (!"blob".equals(json.getToken())) {
                     throw new DocumentStoreException("expected string literal \"blob\"");
                 }
             } else {
@@ -329,7 +331,7 @@ public class RDBDocumentSerializer {
         }
     }
 
-    @Nonnull
+    @Nullable
     private static Object readValueFromJson(@Nonnull JsopTokenizer json) {
         switch (json.read()) {
             case JsopReader.NULL:
@@ -349,6 +351,9 @@ public class RDBDocumentSerializer {
                         break;
                     }
                     String k = json.readString();
+                    if (k == null) {
+                        throw new IllegalArgumentException("unexpected null revision");
+                    }
                     json.read(':');
                     map.put(Revision.fromString(k), readValueFromJson(json));
                     json.matches(',');

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java?rev=1666491&r1=1666490&r2=1666491&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java Fri Mar 13 15:56:01 2015
@@ -50,6 +50,7 @@ import javax.annotation.Nonnull;
 import javax.sql.DataSource;
 
 import com.google.common.collect.ImmutableMap;
+
 import org.apache.jackrabbit.oak.cache.CacheStats;
 import org.apache.jackrabbit.oak.cache.CacheValue;
 import org.apache.jackrabbit.oak.plugins.document.Collection;
@@ -846,13 +847,13 @@ public class RDBDocumentStore implements
 
                 int retries = maxRetries;
                 while (!success && retries > 0) {
-                    long lastmodcount = (Long) oldDoc.get(MODCOUNT);
+                    long lastmodcount = modcountOf(oldDoc);
                     success = updateDocument(collection, doc, update, lastmodcount);
                     if (!success) {
                         retries -= 1;
                         oldDoc = readDocumentCached(collection, update.getId(), Integer.MAX_VALUE);
                         if (oldDoc != null) {
-                            long newmodcount = (Long) oldDoc.get(MODCOUNT);
+                            long newmodcount = modcountOf(oldDoc);
                             if (lastmodcount == newmodcount) {
                                 // cached copy did not change so it probably was
                                 // updated by a different instance, get a fresh one
@@ -937,14 +938,16 @@ public class RDBDocumentStore implements
                 }
                 if (success) {
                     for (Entry<String, NodeDocument> entry : cachedDocs.entrySet()) {
-                        if (entry.getValue() == null) {
+                        T oldDoc = (T) (entry.getValue());
+                        if (oldDoc == null) {
                             // make sure concurrently loaded document is
                             // invalidated
                             nodesCache.invalidate(new StringValue(entry.getKey()));
                         } else {
-                            T oldDoc = (T) (entry.getValue());
-                            T newDoc = applyChanges(collection, (T) (entry.getValue()), update, true);
-                            applyToCache((NodeDocument) oldDoc, (NodeDocument) newDoc);
+                            T newDoc = applyChanges(collection, oldDoc, update, true);
+                            if (newDoc != null) {
+                                applyToCache((NodeDocument) oldDoc, (NodeDocument) newDoc);
+                            }
                         }
                     }
                 } else {
@@ -1011,8 +1014,8 @@ public class RDBDocumentStore implements
         String tableName = getTable(collection);
         try {
             long lastmodcount = -1;
-            if (cachedDoc != null && cachedDoc.getModCount() != null) {
-                lastmodcount = cachedDoc.getModCount().longValue();
+            if (cachedDoc != null) {
+                lastmodcount = modcountOf(cachedDoc);
             }
             connection = this.ch.getROConnection();
             RDBRow row = dbRead(connection, tableName, id, lastmodcount);
@@ -1583,6 +1586,20 @@ public class RDBDocumentStore implements
         return doc == null ? NodeDocument.NULL : doc;
     }
 
+    @Nonnull
+    private static String idOf(@Nonnull Document doc) {
+        String id = doc.getId();
+        if (id == null) {
+            throw new IllegalArgumentException("non-null ID expected");
+        }
+        return id;
+    }
+
+    private static long modcountOf(@Nonnull Document doc) {
+        Number n = doc.getModCount();
+        return n != null ? n.longValue() : -1;
+    }
+
     /**
      * Adds a document to the {@link #nodesCache} iff there is no document in
      * the cache with the document key. This method does not acquire a lock from
@@ -1605,7 +1622,7 @@ public class RDBDocumentStore implements
         // meantime. That is, use get() with a Callable,
         // which is only used when the document isn't there
         try {
-            CacheValue key = new StringValue(doc.getId());
+            CacheValue key = new StringValue(idOf(doc));
             for (;;) {
                 NodeDocument cached = nodesCache.get(key, new Callable<NodeDocument>() {
                     @Override
@@ -1637,7 +1654,7 @@ public class RDBDocumentStore implements
             // loading it into the cache -> return now
             return;
         } else {
-            CacheValue key = new StringValue(newDoc.getId());
+            CacheValue key = new StringValue(idOf(newDoc));
             // this is an update (oldDoc != null)
             if (Objects.equal(cached.getModCount(), oldDoc.getModCount())) {
                 nodesCache.put(key, newDoc);
@@ -1654,7 +1671,7 @@ public class RDBDocumentStore implements
 
     private <T extends Document> void addToCache(Collection<T> collection, T doc) {
         if (collection == Collection.NODES) {
-            Lock lock = getAndLock(doc.getId());
+            Lock lock = getAndLock(idOf(doc));
             try {
                 addToCache((NodeDocument) doc);
             } finally {