mrdon 2004/04/08 15:53:19 Modified: src/share/org/apache/struts/config/impl ModuleConfigImpl.java src/test/org/apache/struts/config TestModuleConfig.java Log: Added a list to store ActionConfigs to ensure when enumerated, they are in the order in which they were added. Also added a test case to ensure correct behavior. PR: 28104 Revision Changes Path 1.13 +16 -6 jakarta-struts/src/share/org/apache/struts/config/impl/ModuleConfigImpl.java Index: ModuleConfigImpl.java =================================================================== RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/config/impl/ModuleConfigImpl.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- ModuleConfigImpl.java 8 Apr 2004 22:07:56 -0000 1.12 +++ ModuleConfigImpl.java 8 Apr 2004 22:53:18 -0000 1.13 @@ -22,6 +22,7 @@ import java.io.Serializable; import java.util.ArrayList; +import java.util.List; import java.util.HashMap; import org.apache.struts.config.ActionConfig; @@ -59,6 +60,7 @@ super(); this.prefix = prefix; this.actionConfigs = new HashMap(); + this.actionConfigList = new ArrayList(); this.actionFormBeanClass = "org.apache.struts.action.ActionFormBean"; this.actionMappingClass = "org.apache.struts.action.ActionMapping"; this.globalForwardClass = "org.apache.struts.action.ActionForward"; @@ -180,6 +182,7 @@ } config.setModuleConfig(this); actionConfigs.put(config.getPath(), config); + actionConfigList.add(config); } @@ -332,8 +335,8 @@ */ public ActionConfig[] findActionConfigs() { - ActionConfig results[] = new ActionConfig[actionConfigs.size()]; - return ((ActionConfig[]) actionConfigs.values().toArray(results)); + ActionConfig results[] = new ActionConfig[actionConfigList.size()]; + return ((ActionConfig[]) actionConfigList.toArray(results)); } @@ -528,6 +531,7 @@ } config.setModuleConfig(null); actionConfigs.remove(config.getPath()); + actionConfigList.remove(config); } @@ -625,6 +629,12 @@ * keyed by the <code>path</code> property. */ protected HashMap actionConfigs = null; + + /** + * The set of action configurations for this module, if any, + * listed in the order in which they are added. + */ + protected List actionConfigList = null; /** * The set of JDBC data source configurations for this 1.9 +27 -4 jakarta-struts/src/test/org/apache/struts/config/TestModuleConfig.java Index: TestModuleConfig.java =================================================================== RCS file: /home/cvs/jakarta-struts/src/test/org/apache/struts/config/TestModuleConfig.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- TestModuleConfig.java 14 Mar 2004 06:23:48 -0000 1.8 +++ TestModuleConfig.java 8 Apr 2004 22:53:19 -0000 1.9 @@ -228,4 +228,27 @@ } + /** + * Test order of action mappings defined perserved. + */ + public void testPreserveActionMappingsOrder() { + + parseConfig("-//Apache Software Foundation//DTD Struts Configuration 1.2//EN", + "/org/apache/struts/resources/struts-config_1_2.dtd", + "/org/apache/struts/config/struts-config.xml"); + + String[] paths = new String[] {"/editRegistration", + "/editSubscription", "/logoff", "/logon", "/saveRegistration", + "/saveSubscription", "/tour" + }; + + ActionConfig[] actions = config.findActionConfigs(); + for (int x=0; x<paths.length; x++) { + assertTrue("Action config out of order:"+actions[x].getPath(), + paths[x].equals(actions[x].getPath())); + } + } + + + }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]