You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by no...@apache.org on 2016/09/13 11:51:29 UTC

lucene-solr:branch_6x: SOLR-9485:Indexfingerprint.fromObject() returns wrong values if object passed was itself of type IndexFingerprint

Repository: lucene-solr
Updated Branches:
  refs/heads/branch_6x ba085d4c8 -> da358bafd


SOLR-9485:Indexfingerprint.fromObject() returns wrong values if object passed was itself of type IndexFingerprint


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/da358baf
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/da358baf
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/da358baf

Branch: refs/heads/branch_6x
Commit: da358bafd6a123d3bb9382447befb315e59de450
Parents: ba085d4
Author: Noble Paul <no...@apache.org>
Authored: Tue Sep 13 17:19:12 2016 +0530
Committer: Noble Paul <no...@apache.org>
Committed: Tue Sep 13 17:21:12 2016 +0530

----------------------------------------------------------------------
 .../apache/solr/update/IndexFingerprint.java    | 36 +++++++++++---------
 1 file changed, 19 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/da358baf/solr/core/src/java/org/apache/solr/update/IndexFingerprint.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/IndexFingerprint.java b/solr/core/src/java/org/apache/solr/update/IndexFingerprint.java
index b85b224..a299017 100644
--- a/solr/core/src/java/org/apache/solr/update/IndexFingerprint.java
+++ b/solr/core/src/java/org/apache/solr/update/IndexFingerprint.java
@@ -26,6 +26,7 @@ import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.queries.function.FunctionValues;
 import org.apache.lucene.queries.function.ValueSource;
 import org.apache.lucene.util.Bits;
+import org.apache.solr.common.SolrException;
 import org.apache.solr.common.util.Hash;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.core.SolrCore;
@@ -168,16 +169,8 @@ public class IndexFingerprint {
     return map;
   }
 
-  private static long getLong(Object o, String key, long def) {
-    long v = def;
-
-    Object oval = null;
-    if (o instanceof Map) {
-      oval = ((Map)o).get(key);
-    } else if (o instanceof NamedList) {
-      oval = ((NamedList)o).get(key);
-    }
-
+  private static long getLong(Map m, String key, long def) {
+    Object oval = m.get(key);
     return oval != null ? ((Number)oval).longValue() : def;
   }
 
@@ -185,14 +178,23 @@ public class IndexFingerprint {
    * Create an IndexFingerprint object from a deserialized generic object (Map or NamedList)
    */
   public static IndexFingerprint fromObject(Object o) {
+    if (o instanceof IndexFingerprint) return (IndexFingerprint) o;
+    Map map = null;
+    if (o instanceof Map) {
+      map = (Map) o;
+    } else if (o instanceof NamedList) {
+      map = ((NamedList) o).asShallowMap();
+    } else {
+      throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Unknown type " + o);
+    }
     IndexFingerprint f = new IndexFingerprint();
-    f.maxVersionSpecified = getLong(o, "maxVersionSpecified", Long.MAX_VALUE);
-    f.maxVersionEncountered = getLong(o, "maxVersionEncountered", -1);
-    f.maxInHash = getLong(o, "maxInHash", -1);
-    f.versionsHash = getLong(o, "versionsHash", -1);
-    f.numVersions = getLong(o, "numVersions", -1);
-    f.numDocs = getLong(o, "numDocs", -1);
-    f.maxDoc = getLong(o, "maxDoc", -1);
+    f.maxVersionSpecified = getLong(map, "maxVersionSpecified", Long.MAX_VALUE);
+    f.maxVersionEncountered = getLong(map, "maxVersionEncountered", -1);
+    f.maxInHash = getLong(map, "maxInHash", -1);
+    f.versionsHash = getLong(map, "versionsHash", -1);
+    f.numVersions = getLong(map, "numVersions", -1);
+    f.numDocs = getLong(map, "numDocs", -1);
+    f.maxDoc = getLong(map, "maxDoc", -1);
     return f;
   }