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/06/08 19:10:57 UTC
lucene-solr:branch_6_1: SOLR-9198: config APIs unable to add multiple
values with same name
Repository: lucene-solr
Updated Branches:
refs/heads/branch_6_1 eebce4a40 -> 78b0fac5d
SOLR-9198: config APIs unable to add multiple values with same name
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/78b0fac5
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/78b0fac5
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/78b0fac5
Branch: refs/heads/branch_6_1
Commit: 78b0fac5d1a795d708e1e3669f24ca7e4d3969c9
Parents: eebce4a
Author: Noble Paul <no...@apache.org>
Authored: Thu Jun 9 00:32:35 2016 +0530
Committer: Noble Paul <no...@apache.org>
Committed: Thu Jun 9 00:40:21 2016 +0530
----------------------------------------------------------------------
solr/CHANGES.txt | 2 ++
.../java/org/apache/solr/core/PluginInfo.java | 16 +++++++++++--
.../apache/solr/core/TestSolrConfigHandler.java | 24 ++++++++++++++++++++
3 files changed, 40 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/78b0fac5/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index c14112e..f66d4e9 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -224,6 +224,8 @@ Bug Fixes
* SOLR-8676: keep LOG4J_CONFIG in solr.cmd (Kristine Jetzke via Mikhail Khludnev)
+* SOLR-9198: config APIs unable to add multiple values with same name (noble)
+
Optimizations
----------------------
* SOLR-8722: Don't force a full ZkStateReader refresh on every Overseer operation.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/78b0fac5/solr/core/src/java/org/apache/solr/core/PluginInfo.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/PluginInfo.java b/solr/core/src/java/org/apache/solr/core/PluginInfo.java
index c6fe42c..832c8c2 100644
--- a/solr/core/src/java/org/apache/solr/core/PluginInfo.java
+++ b/solr/core/src/java/org/apache/solr/core/PluginInfo.java
@@ -67,8 +67,20 @@ public class PluginInfo implements MapSerializable{
for (Map.Entry<String, Object> entry : map.entrySet()) {
if (NAME.equals(entry.getKey()) || CLASS_NAME.equals(entry.getKey())) continue;
Object value = entry.getValue();
- if (value instanceof Map) value = new NamedList((Map) value);
- initArgs.add(entry.getKey(), value);
+ if (value instanceof List) {
+ List list = (List) value;
+ if (!list.isEmpty() && list.get(0) instanceof Map) {//this is a subcomponent
+ for (Object o : list) {
+ if (o instanceof Map) o = new NamedList<>((Map) o);
+ initArgs.add(entry.getKey(), o);
+ }
+ } else {
+ initArgs.add(entry.getKey(), value);
+ }
+ } else {
+ if (value instanceof Map) value = new NamedList((Map) value);
+ initArgs.add(entry.getKey(), value);
+ }
}
this.type = type;
this.name = (String) m.get(NAME);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/78b0fac5/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java b/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java
index 2d4a42a..250ccf0 100644
--- a/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java
+++ b/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java
@@ -426,6 +426,30 @@ public class TestSolrConfigHandler extends RestTestBase {
Arrays.asList("config", "searchComponent","myspellcheck", "spellchecker", "class"),
"solr.DirectSolrSpellChecker",
10);
+
+ payload = "{\n" +
+ " 'add-requesthandler': {\n" +
+ " name : '/dump100',\n" +
+ " class : 'org.apache.solr.handler.DumpRequestHandler'," +
+ " suggester: [{name: s1,lookupImpl: FuzzyLookupFactory, dictionaryImpl : DocumentDictionaryFactory}," +
+ " {name: s2,lookupImpl: FuzzyLookupFactory , dictionaryImpl : DocumentExpressionDictionaryFactory}]" +
+ " }\n" +
+ "}";
+ runConfigCommand(writeHarness, "/config?wt=json", payload);
+ map = testForResponseElement(writeHarness,
+ testServerBaseUrl,
+ "/config?wt=json",
+ cloudSolrClient,
+ Arrays.asList("config", "requestHandler","/dump100", "class"),
+ "org.apache.solr.handler.DumpRequestHandler",
+ 10);
+
+ map = getRespMap("/dump100?wt=json&json.nl=arrmap&initArgs=true", writeHarness);
+ List initArgs = (List) map.get("initArgs");
+ assertEquals(2, initArgs.size());
+ assertTrue(((Map)initArgs.get(0)).containsKey("suggester"));
+ assertTrue(((Map)initArgs.get(1)).containsKey("suggester"));
+ System.out.println(map);
}
public static Map testForResponseElement(RestTestHarness harness,