Author: ryan
Date: Mon Jan  7 09:42:42 2008
New Revision: 609717

URL: http://svn.apache.org/viewvc?rev=609717&view=rev
Log:
SOLR-281 -- only initialize search components that are not registered.

Modified:
    lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java

Modified: lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java?rev=609717&r1=609716&r2=609717&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java Mon Jan  7 
09:42:42 2008
@@ -493,16 +493,31 @@
   private static Map<String, SearchComponent> loadSearchComponents( SolrConfig 
config )
   {
     Map<String, SearchComponent> components = new HashMap<String, 
SearchComponent>();
-    components.put( QueryComponent.COMPONENT_NAME,        new QueryComponent() 
       );
-    components.put( FacetComponent.COMPONENT_NAME,        new FacetComponent() 
       );
-    components.put( MoreLikeThisComponent.COMPONENT_NAME, new 
MoreLikeThisComponent() );
-    components.put( HighlightComponent.COMPONENT_NAME,    new 
HighlightComponent()    );
-    components.put( DebugComponent.COMPONENT_NAME,        new DebugComponent() 
       );
   
     String xpath = "searchComponent";
     NamedListPluginLoader<SearchComponent> loader = new 
NamedListPluginLoader<SearchComponent>( xpath, components );
     loader.load( config.getResourceLoader(), (NodeList)config.evaluate( xpath, 
XPathConstants.NODESET ) );
   
+    final Map<String,Class<? extends SearchComponent>> standardcomponents 
+        = new HashMap<String, Class<? extends SearchComponent>>();
+    standardcomponents.put( QueryComponent.COMPONENT_NAME,        
QueryComponent.class        );
+    standardcomponents.put( FacetComponent.COMPONENT_NAME,        
FacetComponent.class        );
+    standardcomponents.put( MoreLikeThisComponent.COMPONENT_NAME, 
MoreLikeThisComponent.class );
+    standardcomponents.put( HighlightComponent.COMPONENT_NAME,    
HighlightComponent.class    );
+    standardcomponents.put( DebugComponent.COMPONENT_NAME,        
DebugComponent.class        );
+    for( Map.Entry<String, Class<? extends SearchComponent>> entry : 
standardcomponents.entrySet() ) {
+      if( components.get( entry.getKey() ) == null ) {
+        try {
+          SearchComponent comp = entry.getValue().newInstance();
+          comp.init( null ); // default components initialized with nothing
+          components.put( entry.getKey(), comp );
+        }
+        catch (Exception e) {
+          SolrConfig.severeErrors.add( e );
+          SolrException.logOnce(log,null,e);
+        }
+      }
+    }
     return components;
   }
   


Reply via email to