Author: mreutegg
Date: Wed Jan  6 15:20:25 2016
New Revision: 1723347

URL: http://svn.apache.org/viewvc?rev=1723347&view=rev
Log:
OAK-3841: Change return type of Document.getModCount() to Long

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/CachedNodeDocument.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Document.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/cache/NodeDocumentCache.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/Utils.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentStorePerformanceTest.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoDocumentStoreIT.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MultiDocumentStoreTest.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBCacheConsistencyIT.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializerTest.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/CachedNodeDocument.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/CachedNodeDocument.java?rev=1723347&r1=1723346&r2=1723347&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/CachedNodeDocument.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/CachedNodeDocument.java
 Wed Jan  6 15:20:25 2016
@@ -26,7 +26,7 @@ package org.apache.jackrabbit.oak.plugin
  */
 public interface CachedNodeDocument {
 
-    Number getModCount();
+    Long getModCount();
 
     long getCreated();
 

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Document.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Document.java?rev=1723347&r1=1723346&r2=1723347&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Document.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Document.java
 Wed Jan  6 15:20:25 2016
@@ -83,8 +83,8 @@ public class Document implements CacheVa
      *         none is set.
      */
     @CheckForNull
-    public Number getModCount() {
-        return (Number) get(MOD_COUNT);
+    public Long getModCount() {
+        return Utils.asLong((Number) get(MOD_COUNT));
     }
 
     /**

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/cache/NodeDocumentCache.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/cache/NodeDocumentCache.java?rev=1723347&r1=1723346&r2=1723347&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/cache/NodeDocumentCache.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/cache/NodeDocumentCache.java
 Wed Jan  6 15:20:25 2016
@@ -79,11 +79,11 @@ public class NodeDocumentCache implement
      * @return number of invalidated entries
      */
     @Nonnegative
-    public int invalidateOutdated(@Nonnull Map<String, Number> modCounts) {
+    public int invalidateOutdated(@Nonnull Map<String, Long> modCounts) {
         int invalidatedCount = 0;
-        for (Entry<String, Number> e : modCounts.entrySet()) {
+        for (Entry<String, Long> e : modCounts.entrySet()) {
             String id = e.getKey();
-            Number modCount = e.getValue();
+            Long modCount = e.getValue();
             NodeDocument doc = getIfPresent(id);
             if (doc == null) {
                 continue;
@@ -163,14 +163,14 @@ public class NodeDocumentCache implement
                 newerDoc = doc;
                 putInternal(doc);
             } else {
-                Number cachedModCount = cachedDoc.getModCount();
-                Number modCount = doc.getModCount();
+                Long cachedModCount = cachedDoc.getModCount();
+                Long modCount = doc.getModCount();
 
                 if (cachedModCount == null || modCount == null) {
                     throw new IllegalStateException("Missing " + 
Document.MOD_COUNT);
                 }
 
-                if (modCount.longValue() > cachedModCount.longValue()) {
+                if (modCount > cachedModCount) {
                     newerDoc = doc;
                     putInternal(doc);
                 } else {

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java?rev=1723347&r1=1723346&r2=1723347&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
 Wed Jan  6 15:20:25 2016
@@ -286,7 +286,7 @@ public class MongoDocumentStore implemen
                         ids.size(), size);
             }
 
-            Map<String, Number> modCounts = getModCounts(ids);
+            Map<String, Long> modCounts = getModCounts(ids);
             result.queryCount++;
 
             int invalidated = nodesCache.invalidateOutdated(modCounts);
@@ -704,7 +704,7 @@ public class MongoDocumentStore implemen
         final long start = PERFLOG.start();
         try {
             // get modCount of cached document
-            Number modCount = null;
+            Long modCount = null;
             T cachedDoc = null;
             if (collection == Collection.NODES) {
                 cachedDoc = (T) nodesCache.getIfPresent(updateOp.getId());
@@ -894,17 +894,17 @@ public class MongoDocumentStore implemen
             try {
                 dbCollection.update(query.get(), update, false, true);
                 if (collection == Collection.NODES) {
-                    Map<String, Number> modCounts = 
getModCounts(filterValues(cachedDocs, notNull()).keySet());
+                    Map<String, Long> modCounts = 
getModCounts(filterValues(cachedDocs, notNull()).keySet());
                     // update cache
                     for (Entry<String, NodeDocument> entry : 
cachedDocs.entrySet()) {
                         // the cachedDocs is not empty, so the collection = 
NODES
                         Lock lock = nodeLocks.acquire(entry.getKey());
                         try {
-                            Number postUpdateModCount = 
modCounts.get(entry.getKey());
+                            Long postUpdateModCount = 
modCounts.get(entry.getKey());
                             if (postUpdateModCount != null
                                     && entry.getValue() != null
                                     && entry.getValue() != NodeDocument.NULL
-                                    && (postUpdateModCount.longValue() - 1) == 
entry.getValue().getModCount()) {
+                                    && (postUpdateModCount - 1) == 
entry.getValue().getModCount()) {
                                 // post update modCount is one higher than
                                 // what we currently see in the cache. we can
                                 // replace the cached document
@@ -943,7 +943,7 @@ public class MongoDocumentStore implemen
      * @throws MongoException if the call fails
      */
     @Nonnull
-    private Map<String, Number> getModCounts(Iterable<String> keys)
+    private Map<String, Long> getModCounts(Iterable<String> keys)
             throws MongoException {
         QueryBuilder query = QueryBuilder.start(Document.ID).in(keys);
         // Fetch only the modCount and id
@@ -953,10 +953,10 @@ public class MongoDocumentStore implemen
         DBCursor cursor = nodes.find(query.get(), fields);
         cursor.setReadPreference(ReadPreference.primary());
 
-        Map<String, Number> modCounts = Maps.newHashMap();
+        Map<String, Long> modCounts = Maps.newHashMap();
         for (DBObject obj : cursor) {
             String id = (String) obj.get(Document.ID);
-            Number modCount = (Number) obj.get(Document.MOD_COUNT);
+            Long modCount = Utils.asLong((Number) obj.get(Document.MOD_COUNT));
             modCounts.put(id, modCount);
         }
         return modCounts;

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=1723347&r1=1723346&r2=1723347&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
 Wed Jan  6 15:20:25 2016
@@ -1774,8 +1774,8 @@ public class RDBDocumentStore implements
     }
 
     private static long modcountOf(@Nonnull Document doc) {
-        Number n = doc.getModCount();
-        return n != null ? n.longValue() : -1;
+        Long n = doc.getModCount();
+        return n != null ? n : -1;
     }
 
     @Nonnull
@@ -1793,17 +1793,17 @@ public class RDBDocumentStore implements
 
         String id = row.getId();
         NodeDocument inCache = nodesCache.getIfPresent(id);
-        Number modCount = row.getModcount();
+        Long modCount = row.getModcount();
 
         // do not overwrite document in cache if the
         // existing one in the cache is newer
         if (inCache != null && inCache != NodeDocument.NULL) {
             // check mod count
-            Number cachedModCount = inCache.getModCount();
+            Long cachedModCount = inCache.getModCount();
             if (cachedModCount == null) {
                 throw new IllegalStateException("Missing " + 
Document.MOD_COUNT);
             }
-            if (modCount.longValue() <= cachedModCount.longValue()) {
+            if (modCount <= cachedModCount) {
                 // we can use the cached document
                 inCache.markUpToDate(now);
                 return castAsT(inCache);

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/Utils.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/Utils.java?rev=1723347&r1=1723346&r2=1723347&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/Utils.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/Utils.java
 Wed Jan  6 15:20:25 2016
@@ -669,4 +669,21 @@ public class Utils {
         }
         return maxTime;
     }
+
+    /**
+     * Returns the given number instance as a {@code Long}.
+     *
+     * @param n a number or {@code null}.
+     * @return the number converted to a {@code Long} or {@code null}
+     *      if {@code n} is {@code null}.
+     */
+    public static Long asLong(@Nullable Number n) {
+        if (n == null) {
+            return null;
+        } else if (n instanceof Long) {
+            return (Long) n;
+        } else {
+            return n.longValue();
+        }
+    }
 }

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentStorePerformanceTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentStorePerformanceTest.java?rev=1723347&r1=1723346&r2=1723347&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentStorePerformanceTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentStorePerformanceTest.java
 Wed Jan  6 15:20:25 2016
@@ -412,7 +412,7 @@ public class DocumentStorePerformanceTes
         assertNotNull(nd);
         int cc = nd.get("c") == null ? 0 : 
Integer.valueOf(nd.get("c").toString());
         int uc = nd.get("u") == null ? 0 : 
Integer.valueOf(nd.get("u").toString());
-        long mc = nd.getModCount().longValue();
+        long mc = nd.getModCount();
         String msg = String.format(
                 "Concurrent updates %s on %s cond. updates: %d (failures: %s), 
uncond. updates: %d (failures: %s), _modCount: %d, ops/sec: %d, %% of cond. 
updates: %d",
                 stores == 1 ? "(one ds)" : "(two ds)", super.dsname, cc, 
nd.get("cfailures"), uc, nd.get("ufailures"), mc,

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoDocumentStoreIT.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoDocumentStoreIT.java?rev=1723347&r1=1723346&r2=1723347&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoDocumentStoreIT.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoDocumentStoreIT.java
 Wed Jan  6 15:20:25 2016
@@ -148,7 +148,7 @@ public class MongoDocumentStoreIT extend
 
         NodeDocument doc = docStore.find(NODES, Utils.getIdFromPath("/test"));
         assertNotNull(doc);
-        Number mc1 = doc.getModCount();
+        Long mc1 = doc.getModCount();
         assertNotNull(mc1);
         try {
             mk.commit("/test", "^\"prop\":\"v2\"", head, null);
@@ -158,9 +158,9 @@ public class MongoDocumentStoreIT extend
         }
         doc = docStore.find(NODES, Utils.getIdFromPath("/test"));
         assertNotNull(doc);
-        Number mc2 = doc.getModCount();
+        Long mc2 = doc.getModCount();
         assertNotNull(mc2);
-        assertTrue(mc2.longValue() > mc1.longValue());
+        assertTrue(mc2 > mc1);
     }
 
     // OAK-3556

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MultiDocumentStoreTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MultiDocumentStoreTest.java?rev=1723347&r1=1723346&r2=1723347&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MultiDocumentStoreTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MultiDocumentStoreTest.java
 Wed Jan  6 15:20:25 2016
@@ -102,7 +102,7 @@ public class MultiDocumentStoreTest exte
         NodeDocument nd2 = super.ds2.find(Collection.NODES, id);
         assertNotNull(nd1);
         assertNotNull(nd2);
-        long firstVersion = nd1.getModCount().longValue();
+        long firstVersion = nd1.getModCount();
         assertEquals(firstVersion, nd2.getModCount().longValue());
 
         // letTimeElapse();
@@ -225,14 +225,14 @@ public class MultiDocumentStoreTest exte
 
         // only run test if DS supports modcount
         if (orig.getModCount() != null) {
-            long origMc = orig.getModCount().longValue();
+            long origMc = orig.getModCount();
 
             UpdateOp up2 = new UpdateOp(id, false);
             up2.set("_id", id);
             up2.increment("_foo", 1L);
             super.ds2.update(Collection.NODES, Collections.singletonList(id), 
up2);
             NodeDocument ds2doc = super.ds2.find(Collection.NODES, id);
-            long ds2Mc = ds2doc.getModCount().longValue();
+            long ds2Mc = ds2doc.getModCount();
             assertTrue("_modCount needs to be > " + origMc + " but was " + 
ds2Mc, ds2Mc > origMc);
 
             UpdateOp up1 = new UpdateOp(id, false);
@@ -241,7 +241,7 @@ public class MultiDocumentStoreTest exte
             super.ds1.update(Collection.NODES, Collections.singletonList(id), 
up1);
 
             NodeDocument ds1doc = super.ds1.find(Collection.NODES, id);
-            long ds1Mc = ds1doc.getModCount().longValue();
+            long ds1Mc = ds1doc.getModCount();
             assertTrue("_modCount needs to be > " + ds2Mc + " but was " + 
ds1Mc, ds1Mc > ds2Mc);
         }
     }
@@ -301,7 +301,7 @@ public class MultiDocumentStoreTest exte
                 try {
                     DocumentStore ds = 
stores.get(random.nextInt(stores.size()));
                     NodeDocument d = ds.find(Collection.NODES, id);
-                    long modCount = d.getModCount().longValue();
+                    long modCount = d.getModCount();
                     NodeDocument seen = docs.get(modCount);
                     if (seen == null) {
                         docs.put(modCount, d);

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBCacheConsistencyIT.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBCacheConsistencyIT.java?rev=1723347&r1=1723346&r2=1723347&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBCacheConsistencyIT.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBCacheConsistencyIT.java
 Wed Jan  6 15:20:25 2016
@@ -154,7 +154,7 @@ public class RDBCacheConsistencyIT exten
                                 q = (Long) value;
                             }
                         }
-                        mc = doc.getModCount().longValue();
+                        mc = doc.getModCount();
                     } catch (Throwable e) {
                         exceptions.add(e);
                     }

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializerTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializerTest.java?rev=1723347&r1=1723346&r2=1723347&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializerTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializerTest.java
 Wed Jan  6 15:20:25 2016
@@ -55,7 +55,7 @@ public class RDBDocumentSerializerTest
         assertEquals("_foo", doc.getId());
         assertEquals(true, doc.hasBinary());
         assertEquals(true, doc.get(NodeDocument.DELETED_ONCE));
-        assertEquals(2L, doc.getModCount());
+        assertEquals(2L, doc.getModCount().longValue());
     }
 
     @Test
@@ -64,7 +64,7 @@ public class RDBDocumentSerializerTest
         NodeDocument doc = this.ser.fromRow(Collection.NODES, row);
         assertEquals("_foo", doc.getId());
         assertEquals(false, doc.hasBinary());
-        assertEquals(2L, doc.getModCount());
+        assertEquals(2L, doc.getModCount().longValue());
     }
 
     @Test
@@ -73,7 +73,7 @@ public class RDBDocumentSerializerTest
         NodeDocument doc = this.ser.fromRow(Collection.NODES, row);
         assertEquals("_foo", doc.getId());
         assertEquals(false, doc.hasBinary());
-        assertEquals(2L, doc.getModCount());
+        assertEquals(2L, doc.getModCount().longValue());
         assertEquals("string", doc.get("s"));
         assertEquals(Boolean.TRUE, doc.get("b"));
         assertEquals(1L, doc.get("i"));


Reply via email to