Author: ssmiweve
Date: 2008-08-30 09:35:35 +0200 (Sat, 30 Aug 2008)
New Revision: 6797

Modified:
   
branches/2.17/generic.sesam/run-handler-control/src/main/java/no/sesat/search/run/handler/FederatorRunHandler.java
Log:

> java.lang.IndexOutOfBoundsException: Index: 2, Size: 2
>         at java.util.ArrayList.RangeCheck(ArrayList.java:547)
>         at java.util.ArrayList.get(ArrayList.java:322)
>         at java.util.Collections$UnmodifiableList.get(Collections.java:1154)
>         at 
> no.sesat.search.run.handler.FederatorRunHandler.insertResult(FederatorRunHandler.java:90)
>         at 
> no.sesat.search.run.handler.FederatorRunHandler.handleRunningQuery(FederatorRunHandler.java:63)



Modified: 
branches/2.17/generic.sesam/run-handler-control/src/main/java/no/sesat/search/run/handler/FederatorRunHandler.java
===================================================================
--- 
branches/2.17/generic.sesam/run-handler-control/src/main/java/no/sesat/search/run/handler/FederatorRunHandler.java
  2008-08-29 08:54:41 UTC (rev 6796)
+++ 
branches/2.17/generic.sesam/run-handler-control/src/main/java/no/sesat/search/run/handler/FederatorRunHandler.java
  2008-08-30 07:35:35 UTC (rev 6797)
@@ -23,6 +23,7 @@
 import no.sesat.search.datamodel.search.SearchDataObject;
 import no.sesat.search.result.ResultItem;
 import no.sesat.search.result.ResultList;
+import org.apache.log4j.Logger;
 
 
 
@@ -38,7 +39,7 @@
 
 
     public FederatorRunHandler(final RunHandlerConfig rhc) {
-       config = (FederatorRunHandlerConfig) rhc;
+        config = (FederatorRunHandlerConfig) rhc;
     }
 
 
@@ -71,6 +72,7 @@
         }
     }
 
+    // does nothing if insertPosition is greater (or equal to) size of results
     private void insertResult(
             final ResultItem result,
             final ResultList<ResultItem> results,
@@ -78,16 +80,23 @@
 
         final List<ResultItem> original = results.getResults();
 
-        // duplicate the last result
-        results.addResult(original.get(original.size()-1));
 
-        // now shuffle back everything between insertPosition and the last 
result
-        for(int i = results.getResults().size()-2; i > insertPosition; --i){
-            results.replaceResult(original.get(i), original.get(i-1));
+        if( insertPosition < original.size() ){
+
+            // duplicate the last result
+            results.addResult(original.get(original.size()-1));
+
+            // now shuffle back everything between insertPosition and the last 
result
+            for(int i = results.getResults().size()-2; i > insertPosition; 
--i){
+                // double check i exists in original list.
+                if( i < original.size() ){
+                    results.replaceResult(original.get(i), original.get(i-1));
+                }
+            }
+
+            // now add the new result in
+            results.replaceResult(original.get(insertPosition), result);
         }
 
-        // now add the new result in
-        results.replaceResult(original.get(insertPosition), result);
-
     }
 }

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

Reply via email to