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/12/18 09:27:16 UTC

svn commit: r1646402 - in /lucene/dev/branches/branch_5x: ./ solr/ solr/core/ solr/core/src/java/org/apache/solr/core/ solr/core/src/test-files/solr/collection1/conf/ solr/core/src/test/org/apache/solr/core/

Author: noble
Date: Thu Dec 18 08:27:16 2014
New Revision: 1646402

URL: http://svn.apache.org/r1646402
Log:
SOLR-6365 lazy loaded components did not have initParams applied

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-files/solr/collection1/conf/solrconfig-paramset.xml
    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=1646402&r1=1646401&r2=1646402&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 Thu Dec 18 08:27:16 2014
@@ -79,7 +79,7 @@ public class InitParams {
   }
 
   public void apply(PluginInfo info) {
-    if (info.isFromSolrConfig) {
+    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 {

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=1646402&r1=1646401&r2=1646402&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 Thu Dec 18 08:27:16 2014
@@ -38,7 +38,7 @@ public class PluginInfo implements MapSe
   public final NamedList initArgs;
   public final Map<String, String> attributes;
   public final List<PluginInfo> children;
-  public final boolean isFromSolrConfig;
+  private boolean isFromSolrConfig;
 
   public PluginInfo(String type, Map<String, String> attrs ,NamedList initArgs, List<PluginInfo> children) {
     this.type = type;
@@ -156,4 +156,14 @@ public class PluginInfo implements MapSe
   public static final String DEFAULTS = "defaults";
   public static final String APPENDS = "appends";
   public static final String INVARIANTS = "invariants";
+
+  public boolean isFromSolrConfig(){
+    return isFromSolrConfig;
+
+  }
+  public PluginInfo copy() {
+    PluginInfo result = new PluginInfo(type, attributes, initArgs.clone(), children);
+    result.isFromSolrConfig = isFromSolrConfig;
+    return result;
+  }
 }

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=1646402&r1=1646401&r2=1646402&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 Thu Dec 18 08:27:16 2014
@@ -160,7 +160,7 @@ public final class RequestHandlers {
         if( startup != null ) {
           if( "lazy".equals(startup) ) {
             log.info("adding lazy requestHandler: " + info.className);
-            requestHandler = new LazyRequestHandlerWrapper( core, info.className, info.initArgs );
+            requestHandler = new LazyRequestHandlerWrapper( core, info.className);
           } else {
             throw new Exception( "Unknown startup value: '"+startup+"' for: "+info.className );
           }
@@ -214,7 +214,7 @@ public final class RequestHandlers {
     for (InitParams args : config.getInitParams().values())
       if(args.matchPath(info.name)) ags.add(args);
     if(!ags.isEmpty()){
-      info = new PluginInfo(info.type, info.attributes, info.initArgs.clone(), info.children);
+      info = info.copy();
       for (InitParams initParam : ags) {
         initParam.apply(info);
       }
@@ -242,29 +242,25 @@ public final class RequestHandlers {
    * 
    * @since solr 1.2
    */
-  public static final class LazyRequestHandlerWrapper implements SolrRequestHandler
+  public static final class LazyRequestHandlerWrapper implements SolrRequestHandler , PluginInfoInitialized
   {
     private final SolrCore core;
     private String _className;
-    private NamedList _args;
     private SolrRequestHandler _handler;
+    private PluginInfo _pluginInfo;
     
-    public LazyRequestHandlerWrapper( SolrCore core, String className, NamedList args )
+    public LazyRequestHandlerWrapper( SolrCore core, String className )
     {
       this.core = core;
       _className = className;
-      _args = args;
       _handler = null; // don't initialize
     }
-    
-    /**
-     * In normal use, this function will not be called
-     */
+
     @Override
-    public void init(NamedList args) {
-      // do nothing
-    }
-    
+    public void init(NamedList args) { }
+
+
+
     /**
      * Wait for the first request before initializing the wrapped handler 
      */
@@ -282,7 +278,13 @@ public final class RequestHandlers {
       if( _handler == null ) {
         try {
           SolrRequestHandler handler = core.createRequestHandler(_className);
-          handler.init( _args );
+
+          if (handler instanceof PluginInfoInitialized) {
+            ((PluginInfoInitialized) handler).init(_pluginInfo);
+          } else {
+            handler.init( _pluginInfo.initArgs );
+          }
+
 
           if( handler instanceof SolrCoreAware ) {
             ((SolrCoreAware)handler).inform( core );
@@ -353,6 +355,12 @@ public final class RequestHandlers {
       lst.add("note", "not initialized yet" );
       return lst;
     }
+
+    @Override
+    public void init(PluginInfo info) {
+      _pluginInfo = info;
+
+    }
   }
 }
 

Modified: lucene/dev/branches/branch_5x/solr/core/src/test-files/solr/collection1/conf/solrconfig-paramset.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test-files/solr/collection1/conf/solrconfig-paramset.xml?rev=1646402&r1=1646401&r2=1646402&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test-files/solr/collection1/conf/solrconfig-paramset.xml (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test-files/solr/collection1/conf/solrconfig-paramset.xml Thu Dec 18 08:27:16 2014
@@ -67,6 +67,23 @@
     </lst>
   </requestHandler>
 
+  <initParams path="/update/**,/query,/select,/tvrh,/elevate,/spell,/browse">
+    <lst name="defaults">
+      <str name="df">text</str>
+    </lst>
+  </initParams>
+
+  <requestHandler name="/elevate" class="DumpRequestHandler" startup="lazy">
+    <lst name="defaults">
+      <str name="echoParams">explicit</str>
+    </lst>
+    <arr name="last-components">
+      <str>elevator</str>
+    </arr>
+  </requestHandler>
+
+
+
 
 
 </config>

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=1646402&r1=1646401&r2=1646402&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 Thu Dec 18 08:27:16 2014
@@ -109,6 +109,16 @@ public class TestInitParams extends Solr
     assertNull(h.getCore().getRequestHandler("/greedypath/unknownpath"));
   }
 
+  public void testElevateExample(){
+    SolrRequestHandler handler = h.getCore().getRequestHandler("/elevate");
+    SolrQueryResponse rsp = new SolrQueryResponse();
+    handler.handleRequest(req("initArgs", "true"), rsp);
+    NamedList nl = (NamedList) rsp.getValues().get("initArgs");
+    NamedList def = (NamedList) nl.get(PluginInfo.DEFAULTS);
+    assertEquals("text" ,def.get("df"));
+
+  }
+