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 2015/05/15 07:51:29 UTC

svn commit: r1679494 - in /lucene/dev/trunk/solr: CHANGES.txt solrj/src/java/org/apache/solr/common/params/SolrParams.java solrj/src/test/org/apache/solr/common/params/SolrParamTest.java

Author: noble
Date: Fri May 15 05:51:29 2015
New Revision: 1679494

URL: http://svn.apache.org/r1679494
Log:
SOLR-7508: SolrParams.toMultiMap() does not handle arrays

Modified:
    lucene/dev/trunk/solr/CHANGES.txt
    lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/params/SolrParams.java
    lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/common/params/SolrParamTest.java

Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1679494&r1=1679493&r2=1679494&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Fri May 15 05:51:29 2015
@@ -666,6 +666,8 @@ Bug Fixes
 * SOLR-7286: Using HDFS's FileSystem.newInstance does not guarantee a new instance.
   (Mark Miller)
 
+* SOLR-7508: SolrParams.toMultiMap() does not handle arrays (Thomas Scheffler , Noble Paul)
+
 Optimizations
 ----------------------
 

Modified: lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/params/SolrParams.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/params/SolrParams.java?rev=1679494&r1=1679493&r2=1679494&view=diff
==============================================================================
--- lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/params/SolrParams.java (original)
+++ lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/params/SolrParams.java Fri May 15 05:51:29 2015
@@ -313,8 +313,12 @@ public abstract class SolrParams impleme
     HashMap<String,String[]> map = new HashMap<>();
     for (int i=0; i<params.size(); i++) {
       String name = params.getName(i);
-      String val = params.getVal(i).toString();
-      MultiMapSolrParams.addParam(name,val,map);
+      Object val = params.getVal(i);
+      if (val instanceof String[]) {
+        MultiMapSolrParams.addParam(name, (String[]) val, map);
+      } else {
+        MultiMapSolrParams.addParam(name, val.toString(), map);
+      }
     }
     return map;
   }

Modified: lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/common/params/SolrParamTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/common/params/SolrParamTest.java?rev=1679494&r1=1679493&r2=1679494&view=diff
==============================================================================
--- lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/common/params/SolrParamTest.java (original)
+++ lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/common/params/SolrParamTest.java Fri May 15 05:51:29 2015
@@ -17,6 +17,7 @@
 
 package org.apache.solr.common.params;
 
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.List;
@@ -25,6 +26,7 @@ import java.util.Iterator;
 
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.solr.common.SolrException;
+import org.apache.solr.common.util.NamedList;
 
 /**
  */
@@ -80,6 +82,36 @@ public class SolrParamTest extends Lucen
 
   }
 
+  public void testMultiValues() {
+    NamedList nl = new NamedList();
+    nl.add("x", "X1");
+    nl.add("x", "X2");
+    nl.add("x", new String[]{"X3", "X4"});
+    Map<String, String[]> m = SolrParams.toMultiMap(nl);
+    String[] r = m.get("x");
+    assertTrue(Arrays.asList(r).containsAll(Arrays.asList(new String[]{"X1", "X2", "X3", "X4"})));
+  }
+
+  public void testGetAll() {
+    ModifiableSolrParams params = new ModifiableSolrParams();
+    params.add("x", "X1");
+    params.add("x", "X2");
+    params.add("y", "Y");
+    Map<String, Object> m = params.getAll(null, "x", "y");
+    String[] x = (String[]) m.get("x");
+    assertEquals(2, x.length);
+    assertEquals("X1", x[0]);
+    assertEquals("X2", x[1]);
+    assertEquals("Y", m.get("y"));
+    try {
+      params.required().getAll(null, "z");
+      fail("Error expected");
+    } catch (SolrException e) {
+      assertEquals(e.code(), SolrException.ErrorCode.BAD_REQUEST.code);
+
+    }
+  }
+
   public void testModParamAddParams() {
 
     ModifiableSolrParams aaa = new ModifiableSolrParams();