Author: nbelaevski
Date: 2007-11-08 15:01:59 -0500 (Thu, 08 Nov 2007)
New Revision: 3838
Modified:
branches/3.1.x/framework/api/src/main/java/org/richfaces/model/SequenceDataModel.java
Log:
http://jira.jboss.com/jira/browse/RF-1242
Modified:
branches/3.1.x/framework/api/src/main/java/org/richfaces/model/SequenceDataModel.java
===================================================================
---
branches/3.1.x/framework/api/src/main/java/org/richfaces/model/SequenceDataModel.java 2007-11-08
19:59:47 UTC (rev 3837)
+++
branches/3.1.x/framework/api/src/main/java/org/richfaces/model/SequenceDataModel.java 2007-11-08
20:01:59 UTC (rev 3838)
@@ -5,7 +5,9 @@
import java.io.IOException;
import java.util.AbstractList;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@@ -111,6 +113,13 @@
this.wrappedData = data;
if (data instanceof List) {
this.list = (List) data;
+ } else if (data instanceof Collection) {
+ this.list = new ArrayList((Collection) data);
+ //copying all collection content into new collection here should prevent us
+ //from possible issues caused by iteration tricks. e.g.: returning custom iterator
+ //caching current element and comparing indices inside get()
+ //
+ //possible concurrent collection modifications and multithreading will break the
magic
} else if (data instanceof NodeList) {
this.list = new AbstractList() {