Author: ssmiweve
Date: 2008-01-25 13:20:50 +0100 (Fri, 25 Jan 2008)
New Revision: 6037

Modified:
   
branches/2.16/core-api/src/main/java/no/sesat/search/run/RunningQueryImpl.java
   
branches/2.16/generic.sesam/search-command-control/default/src/test/java/no/sesat/search/mode/config/SearchModeTest.java
   
branches/2.16/search-command-config-spi/src/main/java/no/sesat/search/mode/SearchMode.java
   
branches/2.16/search-command-config-spi/src/main/java/no/sesat/search/mode/SearchModeFactory.java
Log:
SEARCH-4072 - RunningQueryImpl.performResultHandlers 
ConcurrentModificationException


Modified: 
branches/2.16/core-api/src/main/java/no/sesat/search/run/RunningQueryImpl.java
===================================================================
--- 
branches/2.16/core-api/src/main/java/no/sesat/search/run/RunningQueryImpl.java  
    2008-01-24 21:11:07 UTC (rev 6036)
+++ 
branches/2.16/core-api/src/main/java/no/sesat/search/run/RunningQueryImpl.java  
    2008-01-25 12:20:50 UTC (rev 6037)
@@ -206,7 +206,7 @@
 
     /**
      * Thread run. Guts of the logic behind this class.
-     * XXX Insanely long method. Divide & Conquer.
+     * XXX long method. Divide & Conquer.
      *
      * @throws InterruptedException
      */
@@ -610,7 +610,9 @@
                 },
                 context);
 
-        final List<RunHandlerConfig> rhcList = 
context.getSearchMode().getRunHandlers();
+        final List<RunHandlerConfig> rhcList 
+                = new 
ArrayList<RunHandlerConfig>(context.getSearchMode().getRunHandlers());
+        
         /* Adding NavigationRunHandler to all search modes */
         rhcList.add(new NavigationRunHandlerConfig());
 

Modified: 
branches/2.16/generic.sesam/search-command-control/default/src/test/java/no/sesat/search/mode/config/SearchModeTest.java
===================================================================
--- 
branches/2.16/generic.sesam/search-command-control/default/src/test/java/no/sesat/search/mode/config/SearchModeTest.java
    2008-01-24 21:11:07 UTC (rev 6036)
+++ 
branches/2.16/generic.sesam/search-command-control/default/src/test/java/no/sesat/search/mode/config/SearchModeTest.java
    2008-01-25 12:20:50 UTC (rev 6037)
@@ -17,6 +17,8 @@
  */
 package no.sesat.search.mode.config;
 
+import java.util.ArrayList;
+import java.util.Collection;
 import javax.xml.parsers.DocumentBuilder;
 import no.schibstedsok.commons.ioc.ContextWrapper;
 import no.sesat.search.mode.SearchMode;
@@ -68,7 +70,9 @@
         webCrawl.setSpellchecklanguage("no");
         webCrawl.setResultsToReturn(10);
 
-        mode.addSearchConfiguration(webCrawl);
+        final Collection<SearchConfiguration> searchConfigurations = new 
ArrayList<SearchConfiguration>();
+        searchConfigurations.add(webCrawl);
+        mode.setSearchConfigurations(searchConfigurations);
 
         final DataModel datamodel = getDataModel();
 
@@ -146,8 +150,11 @@
         searchConfiguration.setPartnerId("overturePartnerId");
         
searchConfiguration.setUrl("/d/search/p/standard/eu/xml/rlb/?mkt=se&amp;adultFilter=clean&amp;accountFilters=schibstedsok_se");
         searchConfiguration.setEncoding("UTF-8");
-        mode.addSearchConfiguration(searchConfiguration);
 
+        final Collection<SearchConfiguration> searchConfigurations = new 
ArrayList<SearchConfiguration>();
+        searchConfigurations.add(searchConfiguration);
+        mode.setSearchConfigurations(searchConfigurations);
+
         final DataModel datamodel = getDataModel();
 
         final RunningQuery.Context rqCxt = new RunningQuery.Context(){

Modified: 
branches/2.16/search-command-config-spi/src/main/java/no/sesat/search/mode/SearchMode.java
===================================================================
--- 
branches/2.16/search-command-config-spi/src/main/java/no/sesat/search/mode/SearchMode.java
  2008-01-24 21:11:07 UTC (rev 6036)
+++ 
branches/2.16/search-command-config-spi/src/main/java/no/sesat/search/mode/SearchMode.java
  2008-01-25 12:20:50 UTC (rev 6037)
@@ -29,6 +29,7 @@
 
 import java.util.Collection;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import no.sesat.search.mode.config.SearchConfiguration;
 import no.sesat.search.run.handler.RunHandlerConfig;
@@ -76,7 +77,7 @@
 
     private SearchCommandExecutorConfig searchCommandExecutor = 
SearchCommandExecutorConfig.SEQUENTIAL;
 
-    private Collection<SearchConfiguration> searchConfigurations = new 
ArrayList<SearchConfiguration>();
+    private Collection<SearchConfiguration> searchConfigurations;
     private SearchMode parentSearchMode;
     private boolean queryAnalysisEnabled = false;
     private String parentMode;
@@ -136,20 +137,11 @@
      * @param searchConfigurations
      */
     public void setSearchConfigurations(Collection<SearchConfiguration> 
searchConfigurations) {
-        this.searchConfigurations = searchConfigurations;
+        this.searchConfigurations = 
Collections.unmodifiableCollection(searchConfigurations);
     }
 
     /**
      *
-     * @param conf
-     */
-    public void addSearchConfiguration(SearchConfiguration conf) {
-        searchConfigurations.add(conf);
-    }
-
-
-    /**
-     *
      * @return
      */
     public SearchCommandExecutorConfig getExecutor() {
@@ -232,7 +224,7 @@
      * @param runHandlers New list of run handlers
      */
     public void setRunHandlers(final List<RunHandlerConfig> runHandlers) {
-        this.runHandlers = runHandlers;
+        this.runHandlers = Collections.unmodifiableList(runHandlers);
     }
 
     /**
@@ -248,7 +240,7 @@
       * @param runTransformers New List of run transformers
       */
      public void setRunTransformers(final List<RunTransformerConfig> 
runTransformers) {
-         this.runTransformers = runTransformers;
+         this.runTransformers = Collections.unmodifiableList(runTransformers);
      }
 
      /**
@@ -258,6 +250,7 @@
      public List<RunTransformerConfig> getRunTransformers() {
          return runTransformers;
      }
+     
     // Inner classes -------------------------------------------------
 
 }

Modified: 
branches/2.16/search-command-config-spi/src/main/java/no/sesat/search/mode/SearchModeFactory.java
===================================================================
--- 
branches/2.16/search-command-config-spi/src/main/java/no/sesat/search/mode/SearchModeFactory.java
   2008-01-24 21:11:07 UTC (rev 6036)
+++ 
branches/2.16/search-command-config-spi/src/main/java/no/sesat/search/mode/SearchModeFactory.java
   2008-01-25 12:20:50 UTC (rev 6037)
@@ -43,6 +43,7 @@
 import javax.xml.parsers.ParserConfigurationException;
 import java.text.MessageFormat;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -266,6 +267,7 @@
 
 
                 final NodeList childNodes = modeE.getChildNodes();
+                final Collection<SearchConfiguration> searchConfigurations = 
new ArrayList<SearchConfiguration>();
 
                 for (int j = 0; j < childNodes.getLength(); ++j) {
                     final Node childNode = childNodes.item(j);
@@ -273,7 +275,7 @@
                         continue;
                     }
                     final Element childElement = (Element) childNode;
-
+                    
                     
if(SEARCH_CONFIGURATION_FACTORY.supported(childElement.getTagName(), context)){
 
                         // commands
@@ -281,7 +283,7 @@
                                 = 
SEARCH_CONFIGURATION_FACTORY.parseSearchConfiguration(context, childElement, 
mode);
 
                         modesCommands.put(sc.getName(), sc);
-                        mode.addSearchConfiguration(sc);
+                        searchConfigurations.add(sc);
 
 //                    }else if("navigation".equals(childElement.getTagName())){
 //                        // navigation
@@ -292,6 +294,7 @@
 //                        mode.setNavigationConfiguration(parseNavigation(id, 
navigationElements));
                     }
                 }
+                mode.setSearchConfigurations(searchConfigurations);
 
                 // add mode
                 try {

_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits

Reply via email to