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 2014/11/19 17:54:11 UTC
svn commit: r1640595 - in /lucene/dev/branches/branch_5x: ./ solr/
solr/core/ solr/core/src/java/org/apache/solr/core/
solr/core/src/test/org/apache/solr/core/
Author: noble
Date: Wed Nov 19 16:54:11 2014
New Revision: 1640595
URL: http://svn.apache.org/r1640595
Log:
SOLR-6365 implicit requesthandler (specified in code) takes lower precedence over <initParams>
Modified:
lucene/dev/branches/branch_5x/ (props changed)
lucene/dev/branches/branch_5x/solr/ (props changed)
lucene/dev/branches/branch_5x/solr/core/ (props changed)
lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/InitParams.java
lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/PluginInfo.java
lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/RequestHandlers.java
lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/core/TestInitParams.java
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/InitParams.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/InitParams.java?rev=1640595&r1=1640594&r2=1640595&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/InitParams.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/InitParams.java Wed Nov 19 16:54:11 2014
@@ -78,10 +78,16 @@ public class InitParams {
}
- public void apply(NamedList initArgs) {
- merge( (NamedList) initArgs.get(PluginInfo.DEFAULTS), defaults,initArgs, PluginInfo.DEFAULTS, false);
- merge((NamedList) initArgs.get(PluginInfo.INVARIANTS), invariants, initArgs, PluginInfo.INVARIANTS, false);
- merge((NamedList) initArgs.get(PluginInfo.APPENDS), appends, initArgs, PluginInfo.APPENDS, true);
+ public void apply(PluginInfo info) {
+ if (info.isFromSolrConfig) {
+ //if this is a component implicitly defined in code it should be overridden by initPrams
+ merge(defaults, (NamedList) info.initArgs.get(PluginInfo.DEFAULTS) ,info.initArgs, PluginInfo.DEFAULTS, false);
+ } else {
+ //if the args is initialized from solrconfig.xml inside the requesthHandler it should be taking precedence over initParams
+ merge( (NamedList) info.initArgs.get(PluginInfo.DEFAULTS), defaults,info.initArgs, PluginInfo.DEFAULTS, false);
+ }
+ merge((NamedList) info.initArgs.get(PluginInfo.INVARIANTS), invariants, info.initArgs, PluginInfo.INVARIANTS, false);
+ merge((NamedList) info.initArgs.get(PluginInfo.APPENDS), appends, info.initArgs, PluginInfo.APPENDS, true);
}
private static void merge(NamedList first, NamedList second, NamedList sink, String name, boolean appends) {
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/PluginInfo.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/PluginInfo.java?rev=1640595&r1=1640594&r2=1640595&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/PluginInfo.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/PluginInfo.java Wed Nov 19 16:54:11 2014
@@ -34,6 +34,7 @@ public class PluginInfo {
public final NamedList initArgs;
public final Map<String, String> attributes;
public final List<PluginInfo> children;
+ public final boolean isFromSolrConfig;
public PluginInfo(String type, Map<String, String> attrs ,NamedList initArgs, List<PluginInfo> children) {
this.type = type;
@@ -42,6 +43,7 @@ public class PluginInfo {
this.initArgs = initArgs;
attributes = unmodifiableMap(attrs);
this.children = children == null ? Collections.<PluginInfo>emptyList(): unmodifiableList(children);
+ isFromSolrConfig = false;
}
@@ -52,6 +54,7 @@ public class PluginInfo {
initArgs = DOMUtil.childNodesToNamedList(node);
attributes = unmodifiableMap(DOMUtil.toMap(node.getAttributes()));
children = loadSubPlugins(node);
+ isFromSolrConfig = true;
}
private List<PluginInfo> loadSubPlugins(Node node) {
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/RequestHandlers.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/RequestHandlers.java?rev=1640595&r1=1640594&r2=1640595&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/RequestHandlers.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/RequestHandlers.java Wed Nov 19 16:54:11 2014
@@ -212,7 +212,7 @@ public final class RequestHandlers {
if(!ags.isEmpty()){
info = new PluginInfo(info.type, info.attributes, info.initArgs.clone(), info.children);
for (InitParams initParam : ags) {
- initParam.apply(info.initArgs);
+ initParam.apply(info);
}
}
return info;
Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/core/TestInitParams.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/core/TestInitParams.java?rev=1640595&r1=1640594&r2=1640595&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/core/TestInitParams.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/core/TestInitParams.java Wed Nov 19 16:54:11 2014
@@ -18,6 +18,7 @@ package org.apache.solr.core;
*/
import org.apache.solr.SolrTestCaseJ4;
+import org.apache.solr.common.cloud.ZkNodeProps;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.request.SolrRequestHandler;
import org.apache.solr.response.SolrQueryResponse;
@@ -25,6 +26,9 @@ import org.junit.BeforeClass;
import org.junit.Test;
import java.util.Arrays;
+import java.util.HashMap;
+
+import static java.util.Collections.singletonMap;
public class TestInitParams extends SolrTestCaseJ4 {
@BeforeClass
@@ -46,6 +50,14 @@ public class TestInitParams extends Solr
def = (NamedList) nl.get(PluginInfo.APPENDS);
assertEquals("C", def.get("c"));
}
+
+ InitParams initParams = h.getCore().getSolrConfig().getInitParams().get("a");
+
+ PluginInfo pluginInfo = new PluginInfo("requestHandler",
+ new HashMap<String, String>(),
+ new NamedList<>(singletonMap("defaults", new NamedList(ZkNodeProps.makeMap("a", "A1")))), null);
+ initParams.apply(pluginInfo);
+ assertEquals( "A",initParams.defaults.get("a"));
}
@Test