Author: doogie
Date: Wed Sep 16 19:33:44 2009
New Revision: 815936
URL:
http://svn.apache.org/viewvc?rev=815936&view=revLog:
Based on OFBIZ-891, allow Iterate to handle java.util.Iterator.
Modified:
ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/Iterate.java
Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/Iterate.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/Iterate.java?rev=815936&r1=815935&r2=815936&view=diff==============================================================================
--- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/Iterate.java (original)
+++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/Iterate.java Wed Sep 16 19:33:44 2009
@@ -104,13 +104,9 @@
return false;
}
}
- } else {
+ } else if (objList instanceof Collection) {
Collection<Object> theList = UtilGenerics.checkList(objList);
- if (theList == null) {
- if (Debug.infoOn()) Debug.logInfo("List not found with name " + listAcsr + ", doing nothing: " + rawString(), module);
- return true;
- }
if (theList.size() == 0) {
if (Debug.verboseOn()) Debug.logVerbose("List with name " + listAcsr + " has zero entries, doing nothing: " + rawString(), module);
return true;
@@ -124,6 +120,25 @@
return false;
}
}
+ } else if (objList instanceof Iterator) {
+ Iterator<Object> theIterator = UtilGenerics.cast(objList);
+ if (!theIterator.hasNext()) {
+ if (Debug.verboseOn()) Debug.logVerbose("List with name " + listAcsr + " has no more entries, doing nothing: " + rawString(), module);
+ return true;
+ }
+
+ while (theIterator.hasNext()) {
+ Object theEntry = theIterator.next();
+ entryAcsr.put(methodContext, theEntry);
+
+ if (!SimpleMethod.runSubOps(subOps, methodContext)) {
+ // only return here if it returns false, otherwise just carry on
+ return false;
+ }
+ }
+ } else {
+ if (Debug.infoOn()) Debug.logInfo("List not found with name " + listAcsr + ", doing nothing: " + rawString(), module);
+ return true;
}
entryAcsr.put(methodContext, oldEntryValue);
return true;