Ok, I think I got it. My solution only covered first problem, but the
second problem implies that the first problem is no longer a problem
because the original order item list has to remain unmodified for further
usage. So this might fix problem 2:

orderItemListFiltered = new LinkedList();
    orderItemList = orderReadHelper.getOrderItems();
    orderItemList.each { orderItem ->
        if (UtilValidate.isEmpty(orderItem.get("isPromo")) ||
"N".equals(orderItem.get("isPromo"))) {
orderItemListFiltered.add(orderItem);
        } else {
if (!"ITEM_CANCELLED".equals(orderItem.get("statusId")))
orderItemListFiltered.add(orderItem);
        }
    }
    context.orderItemList = orderItemListFiltered;

HTH


On Sat, May 11, 2013 at 11:47 AM, Adrian Crum <
[email protected]> wrote:

> 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<http://docs.oracle.com/javase/6/docs/api/java/util/LinkedList.html>
>>
>>
>>
>>
>> On Fri, May 10, 2013 at 2:38 PM, Adrian Crum <
>> adrian.crum@sandglass-**software.com <[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
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>
>


-- 
-----

Jonatan Soto

Reply via email to