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 {