There are two problems with that part of the script:
1. It modifies a List while iterating over it.
2. It modifies a List that is contained by OrderReadHelper - so any
further use of OrderReadHelper will produce incorrect data.
The solution is to iterate over the List contained on OrderReadHelper
and build a new List based on the selection criteria. In other words,
create a new List that excludes canceled promo items instead of
modifying the existing List.
-Adrian
On 5/11/2013 10:41 AM, Jonatan Soto wrote:
I could fix the issue by doing the following at line 122 of that groovy
file:
//canceledPromoOrderItem = [:];
orderItemList = orderReadHelper.getOrderItems();
for (Iterator iter = orderItemList.iterator(); iter.hasNext();) {
//orderItemList.each { orderItem ->
orderItem = iter.next();
if("Y".equals(orderItem.get("isPromo")) &&
"ITEM_CANCELLED".equals(orderItem.get("statusId"))) {
//canceledPromoOrderItem = orderItem;
iter.remove();
}
Debug.log("orderItem ==========> " + orderItem);
}
I've proceed in that way according to what I read from the LinkedList java
doc http://docs.oracle.com/javase/6/docs/api/java/util/LinkedList.html
On Fri, May 10, 2013 at 2:38 PM, Adrian Crum <
[email protected]> wrote:
Actually, OrderView.groovy line 122 doesn't make any sense. That is a flaw
in the groovy code, not a problem with the List implementation.
-Adrian
On 5/10/2013 1:09 PM, Adrian Crum wrote:
It appears LinkedList was not a good replacement for FastList. I will
take care of it this weekend.
-Adrian
On 5/10/2013 12:32 PM, Jonatan Soto wrote:
This is a more detailed stack trace btw. Note that once this happens is
not
possible to edit the order anymore.
2013-05-10 12:23:43,348 (ajp-bio-0.0.0.0-8009-exec-**511) [
ScreenFactory.java:130:INFO ] Got 29 screens in 0.0080s from:
file:/home/ofbiz/trunk/**applications/order/widget/**ordermgr/OrderViewScreens.xml
2013-05-10 12:23:43,522 (ajp-bio-0.0.0.0-8009-exec-**511) [
ScriptUtil.java:347:WARN ] ---- runtime exception report
------------------------------**-------------------- Error running
script at
location
[component://order/webapp/**ordermgr/WEB-INF/actions/**order/OrderView.groovy]:
java.util.**ConcurrentModificationExceptio**n Exception:
java.util.**ConcurrentModificationExceptio**n Message: null ---- stack
trace
------------------------------**------------------------------**---
java.util.**ConcurrentModificationExceptio**n
java.util.LinkedList$ListItr.**checkForComodification(**
LinkedList.java:761)
java.util.LinkedList$ListItr.**next(LinkedList.java:696)
org.codehaus.groovy.runtime.**DefaultGroovyMethods.each(**
DefaultGroovyMethods.java:**1375)
org.codehaus.groovy.runtime.**DefaultGroovyMethods.each(**
DefaultGroovyMethods.java:**1348)
org.codehaus.groovy.runtime.**dgm$162.invoke(Unknown Source)
org.codehaus.groovy.runtime.**callsite.PojoMetaMethodSite$**
PojoMetaMethodSiteNoUnwrapNoCo**erce.invoke(**PojoMetaMethodSite.java:271)
org.codehaus.groovy.runtime.**callsite.PojoMetaMethodSite.**
call(PojoMetaMethodSite.java:**53)
org.codehaus.groovy.runtime.**callsite.CallSiteArray.**
defaultCall(CallSiteArray.**java:42)
org.codehaus.groovy.runtime.**callsite.AbstractCallSite.**
call(AbstractCallSite.java:**108)
org.codehaus.groovy.runtime.**callsite.AbstractCallSite.**
call(AbstractCallSite.java:**116)
OrderView.run(OrderView.**groovy:122)
org.ofbiz.base.util.**GroovyUtil.**runScriptAtLocation(**
GroovyUtil.java:172)
org.ofbiz.base.util.**GroovyUtil.**runScriptAtLocation(**
GroovyUtil.java:165)
org.ofbiz.base.util.**ScriptUtil.executeScript(**ScriptUtil.java:342)
org.ofbiz.base.util.**ScriptUtil.executeScript(**ScriptUtil.java:324)
org.ofbiz.widget.**ModelWidgetAction$Script.**
runAction(ModelWidgetAction.**java:414)
org.ofbiz.widget.**ModelWidgetAction.**runSubActions(**ModelWidgetAction.java:114)
org.ofbiz.widget.screen.**ModelScreenWidget$Section.**
renderWidgetString(**ModelScreenWidget.java:184)
org.ofbiz.widget.screen.**ModelScreen.**renderScreenString(**ModelScreen.java:396)
org.ofbiz.widget.screen.**ScreenRenderer.render(**
ScreenRenderer.java:135)
org.ofbiz.widget.screen.**ScreenRenderer.render(**
ScreenRenderer.java:97)
org.ofbiz.widget.screen.**MacroScreenViewHandler.render(**
MacroScreenViewHandler.java:**104)
org.ofbiz.webapp.control.**RequestHandler.renderView(**RequestHandler.java:898)
org.ofbiz.webapp.control.**RequestHandler.doRequest(**RequestHandler.java:599)
org.ofbiz.webapp.control.**ControlServlet.doGet(**
ControlServlet.java:214)
org.ofbiz.webapp.control.**ControlServlet.doPost(**
ControlServlet.java:86)
javax.servlet.http.**HttpServlet.service(**HttpServlet.java:641)
javax.servlet.http.**HttpServlet.service(**HttpServlet.java:722)
org.apache.catalina.core.**ApplicationFilterChain.**internalDoFilter(**
ApplicationFilterChain.java:**305)
org.apache.catalina.core.**ApplicationFilterChain.**doFilter(**
ApplicationFilterChain.java:**210)
org.ofbiz.webapp.control.**ContextFilter.doFilter(**
ContextFilter.java:314)
org.apache.catalina.core.**ApplicationFilterChain.**internalDoFilter(**
ApplicationFilterChain.java:**243)
org.apache.catalina.core.**ApplicationFilterChain.**doFilter(**
ApplicationFilterChain.java:**210)
org.apache.catalina.core.**StandardWrapperValve.invoke(**StandardWrapperValve.java:222)
org.apache.catalina.core.**StandardContextValve.invoke(**StandardContextValve.java:123)
org.apache.catalina.**authenticator.**AuthenticatorBase.invoke(**AuthenticatorBase.java:472)
org.apache.catalina.core.**StandardHostValve.invoke(**StandardHostValve.java:171)
org.apache.catalina.valves.**ErrorReportValve.invoke(**ErrorReportValve.java:99)
org.apache.catalina.core.**StandardEngineValve.invoke(**StandardEngineValve.java:118)
org.apache.catalina.valves.**AccessLogValve.invoke(**AccessLogValve.java:947)
org.apache.catalina.connector.**CoyoteAdapter.service(**CoyoteAdapter.java:408)
org.apache.coyote.ajp.**AjpProcessor.process(**AjpProcessor.java:200)
org.apache.coyote.**AbstractProtocol$**AbstractConnectionHandler.**
process(AbstractProtocol.java:**589)
org.apache.tomcat.util.net.**JIoEndpoint$SocketProcessor.**run(JIoEndpoint.java:310)
java.util.concurrent.**ThreadPoolExecutor$Worker.**
runTask(ThreadPoolExecutor.**java:886)
java.util.concurrent.**ThreadPoolExecutor$Worker.run(**ThreadPoolExecutor.java:908)
java.lang.Thread.run(Thread.**java:662)
------------------------------**------------------------------**--------------------
2013-05-10 12:23:43,522 (ajp-bio-0.0.0.0-8009-exec-**511) [
ModelScreen.java:401:ERROR] Error rendering screen
[component://order/widget/**ordermgr/OrderViewScreens.xml#**OrderHeaderView]:
java.lang.**IllegalArgumentException: Error running script at location
[component://order/webapp/**ordermgr/WEB-INF/actions/**order/OrderView.groovy]:
java.util.**ConcurrentModificationExceptio**n. Rolling back transaction.
On Fri, May 10, 2013 at 1:21 PM, Jonatan Soto <[email protected]>
**wrote:
Hi,
When cancelling an order I'm getting the following exception using the
demo (trunk) :
org.ofbiz.widget.screen.**ScreenRenderException: Error rendering screen
[component://order/widget/**ordermgr/OrderViewScreens.xml#**OrderHeaderView]:
java.lang.**IllegalArgumentException: Error running script at location
[component://order/webapp/**ordermgr/WEB-INF/actions/**order/OrderView.groovy]:
java.util.**ConcurrentModificationExceptio**n (Error running script at
location
[component://order/webapp/**ordermgr/WEB-INF/actions/**order/OrderView.groovy]:
java.util.**ConcurrentModificationExceptio**n)
If nobody is working with it or something related, I can take a look at
it
later.
Cheers,
--
-----
Jonatan Soto