|
[ https://issues.apache.org/jira/browse/OFBIZ-10369?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Vikas Mayur updated OFBIZ-10369: -------------------------------- Summary: ConfigXMLReader - Events are not executed in the order defined (was: ConfigXMLReader - Does not execute events in the defined order) > ConfigXMLReader - Events are not executed in the order defined > -------------------------------------------------------------- > > Key: OFBIZ-10369 > URL: https://issues.apache.org/jira/browse/OFBIZ-10369 > Project: OFBiz > Issue Type: Bug > Components: ALL APPLICATIONS > Affects Versions: Release Branch 16.11 > Reporter: Vikas Mayur > Priority: Major > Fix For: Upcoming Branch > > > The events contained in the controller configuration for first-visit, pre-post processor and before-after login are executed in arbitrary order rather than the defined order. This results in unexpected results. > For example, > {code} > <after-login> > <event name="keepCartUpdated" type="java" path="org.apache.ofbiz.order.shoppingcart.ShoppingCartEvents" invoke="keepCartUpdated"/> > <event name="restoreAutoSaveList" type="java" path="org.apache.ofbiz.order.shoppinglist.ShoppingListEvents" invoke="restoreAutoSaveList"/> > <event name="saveCartToAutoSaveList" type="java" path="org.apache.ofbiz.order.shoppinglist.ShoppingListEvents" invoke="saveCartToAutoSaveList"/> > </after-login> > {code} > While debugging I have found that the event 'restoreAutoSaveList' run before 'keepCartUpdated'. I would expect the events to run from top (first) to bottom (last). > > I am unable to attach a patch but below are the changes to fix the issue. I have tested the issue on release 16 and it may be an issue in trunk. > {code} > Index: framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/ConfigXMLReader.java > =================================================================== > --- framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/ConfigXMLReader.java (revision 1830130) > +++ framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/ConfigXMLReader.java (working copy) > @@ -25,6 +25,7 @@ > import java.util.ArrayList; > import java.util.HashMap; > import java.util.HashSet; > +import java.util.LinkedHashMap; > import java.util.LinkedList; > import java.util.List; > import java.util.Map; > @@ -182,11 +183,11 @@ > private String defaultRequest; > private String statusCode; > private List<URL> includes = new ArrayList<URL>(); > - private Map<String, Event> firstVisitEventList = new HashMap<String, Event>(); > - private Map<String, Event> preprocessorEventList = new HashMap<String, Event>(); > - private Map<String, Event> postprocessorEventList = new HashMap<String, Event>(); > - private Map<String, Event> afterLoginEventList = new HashMap<String, Event>(); > - private Map<String, Event> beforeLogoutEventList = new HashMap<String, Event>(); > + private Map<String, Event> firstVisitEventList = new LinkedHashMap<String, Event>(); > + private Map<String, Event> preprocessorEventList = new LinkedHashMap<String, Event>(); > + private Map<String, Event> postprocessorEventList = new LinkedHashMap<String, Event>(); > + private Map<String, Event> afterLoginEventList = new LinkedHashMap<String, Event>(); > + private Map<String, Event> beforeLogoutEventList = new LinkedHashMap<String, Event>(); > private Map<String, String> eventHandlerMap = new HashMap<String, String>(); > private Map<String, String> viewHandlerMap = new HashMap<String, String>(); > private Map<String, RequestMap> requestMapMap = new HashMap<String, RequestMap>(); > {code} > -- This message was sent by Atlassian JIRA (v7.6.3#76005) |
| Free forum by Nabble | Edit this page |
