You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sh...@apache.org on 2012/12/28 16:03:44 UTC

svn commit: r1426537 - in /lucene/dev/trunk/solr/core/src: java/org/apache/solr/handler/loader/XMLLoader.java test/org/apache/solr/cloud/ShardRoutingTest.java

Author: shalin
Date: Fri Dec 28 15:03:43 2012
New Revision: 1426537

URL: http://svn.apache.org/viewvc?rev=1426537&view=rev
Log:
SOLR-4134 -- Use List as value type only when multiple values are present in atomic updates

Modified:
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/loader/XMLLoader.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/ShardRoutingTest.java

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/loader/XMLLoader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/loader/XMLLoader.java?rev=1426537&r1=1426536&r2=1426537&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/loader/XMLLoader.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/loader/XMLLoader.java Fri Dec 28 15:03:43 2012
@@ -381,7 +381,7 @@ public class XMLLoader extends ContentSt
     float boost = 1.0f;
     boolean isNull = false;
     String update = null;
-    Map<String, Map<String, List<Object>>> updateMap = null;
+    Map<String, Map<String, Object>> updateMap = null;
     boolean complete = false;
     while (!complete) {
       int event = parser.next();
@@ -400,18 +400,27 @@ public class XMLLoader extends ContentSt
           } else if ("field".equals(parser.getLocalName())) {
             Object v = isNull ? null : text.toString();
             if (update != null) {
-              if (updateMap == null) updateMap = new HashMap<String, Map<String, List<Object>>>();
-              Map<String, List<Object>> extendedValues = updateMap.get(name);
+              if (updateMap == null) updateMap = new HashMap<String, Map<String, Object>>();
+              Map<String, Object> extendedValues = updateMap.get(name);
               if (extendedValues == null) {
-                extendedValues = new HashMap<String, List<Object>>(1);
+                extendedValues = new HashMap<String, Object>(1);
                 updateMap.put(name, extendedValues);
               }
-              List<Object> values = extendedValues.get(update);
-              if (values == null) {
-                values = new ArrayList<Object>();
-                extendedValues.put(update, values);
+              Object val = extendedValues.get(update);
+              if (val == null) {
+                extendedValues.put(update, v);
+              } else {
+                // multiple val are present
+                if (val instanceof List) {
+                  List list = (List) val;
+                  list.add(v);
+                } else {
+                  List<Object> values = new ArrayList<Object>();
+                  values.add(val);
+                  values.add(v);
+                  extendedValues.put(update, values);
+                }
               }
-              values.add(v);
               break;
             }
             doc.addField(name, v, boost);
@@ -450,9 +459,9 @@ public class XMLLoader extends ContentSt
     }
 
     if (updateMap != null)  {
-      for (Map.Entry<String, Map<String, List<Object>>> entry : updateMap.entrySet()) {
+      for (Map.Entry<String, Map<String, Object>> entry : updateMap.entrySet()) {
         name = entry.getKey();
-        Map<String, List<Object>> value = entry.getValue();
+        Map<String, Object> value = entry.getValue();
         doc.addField(name, value, 1.0f);
       }
     }

Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/ShardRoutingTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/ShardRoutingTest.java?rev=1426537&r1=1426536&r2=1426537&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/ShardRoutingTest.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/ShardRoutingTest.java Fri Dec 28 15:03:43 2012
@@ -118,7 +118,7 @@ public class ShardRoutingTest extends Ab
 
       doHashingTest();
       doTestNumRequests();
-      // doAtomicUpdate();  TODO: this currently fails!
+      doAtomicUpdate();
 
       testFinished = true;
     } finally {