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