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