mrdon 2003/12/09 13:40:43 Modified: src/test/org/apache/struts/config TestModuleConfig.java Added: src/test/org/apache/struts/config CustomMappingTest.java struts-config-custom-mapping.xml Log: Added test case to test custom action mapping and set-property Created to disprove bug 23139 Revision Changes Path 1.3 +35 -1 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.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- TestModuleConfig.java 26 Jul 2003 04:23:41 -0000 1.2 +++ TestModuleConfig.java 9 Dec 2003 21:40:43 -0000 1.3 @@ -62,6 +62,7 @@ import junit.framework.TestCase; import junit.framework.TestSuite; +import org.apache.struts.action.ActionMapping; import org.apache.commons.digester.Digester; import org.apache.struts.Globals; @@ -199,6 +200,39 @@ } + /** + * Tests a struts-config.xml that contains a custom mapping and property. + */ + public void testCustomMappingParse() { + + + // Prepare a Digester for parsing a struts-config.xml file + Digester digester = new Digester(); + digester.push(config); + digester.setNamespaceAware(true); + digester.setValidating(true); + digester.addRuleSet(new ConfigRuleSet()); + digester.register + ("-//Apache Software Foundation//DTD Struts Configuration 1.1//EN", + this.getClass().getResource + ("/org/apache/struts/resources/struts-config_1_1.dtd").toString()); + // Parse the test struts-config.xml file + try { + InputStream input = this.getClass().getResourceAsStream + ("/org/apache/struts/config/struts-config-custom-mapping.xml"); + assertNotNull("Got an input stream for struts-config.xml", input); + digester.parse(input); + input.close(); + } catch (Throwable t) { + t.printStackTrace(System.out); + fail("Parsing threw exception: " + t); + } + // Perform assertion tests on the parsed information + CustomMappingTest map = (CustomMappingTest)config.findActionConfig("/editRegistration"); + assertNotNull("Cannot find editRegistration mapping", map); + assertTrue("The custom mapping attribute has not been set", map.getPublic()); + + } } 1.1 jakarta-struts/src/test/org/apache/struts/config/CustomMappingTest.java Index: CustomMappingTest.java =================================================================== /* * The Apache Software License, Version 1.1 * * Copyright (c) 1999-2002 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Struts", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * */ package org.apache.struts.config; import org.apache.struts.action.ActionMapping; /** * Custom action mapping used by TestModuleConfing * * @author Don Brown */ public class CustomMappingTest extends ActionMapping { private boolean pub = false; public void setPublic(boolean val) { this.pub = val; } public boolean getPublic() { return pub; } } 1.1 jakarta-struts/src/test/org/apache/struts/config/struts-config-custom-mapping.xml Index: struts-config-custom-mapping.xml =================================================================== <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"> <!-- This is the Struts configuration file for the example application, using the proposed new syntax. NOTE: You would only flesh out the details in the "form-bean" declarations if you had a generator tool that used them to create the corresponding Java classes for you. Otherwise, you would need only the "form-bean" element itself, with the corresponding "name" and "type" attributes. --> <struts-config> <!-- ========== Data Source Configuration =============================== --> <data-sources> <data-source> <set-property property="autoCommit" value="false"/> <set-property property="description" value="Example Data Source Configuration"/> <set-property property="driverClass" value="org.postgresql.Driver"/> <set-property property="maxCount" value="4"/> <set-property property="minCount" value="2"/> <set-property property="password" value="mypassword"/> <set-property property="url" value="jdbc:postgresql://localhost/mydatabase"/> <set-property property="user" value="myusername"/> </data-source> </data-sources> <!-- ========== Form Bean Definitions =================================== --> <form-beans> <!-- Logon form bean --> <form-bean name="logonForm" type="org.apache.struts.webapp.example.LogonForm"/> <!-- Registration form bean --> <form-bean name="registrationForm" type="org.apache.struts.webapp.example.RegistrationForm"/> <!-- Subscription form bean --> <form-bean name="subscriptionForm" type="org.apache.struts.webapp.example.SubscriptionForm"/> </form-beans> <!-- ========== Global Forward Definitions ============================== --> <global-forwards> <forward name="logoff" path="/logoff.do"/> <forward name="logon" path="/logon.jsp"/> <forward name="success" path="/mainMenu.jsp"/> </global-forwards> <!-- ========== Action Mapping Definitions ============================== --> <action-mappings> <!-- Edit user registration --> <action path="/editRegistration" type="org.apache.struts.webapp.example.EditRegistrationAction" attribute="registrationForm" scope="request" validate="false" className="org.apache.struts.config.CustomMappingTest"> <set-property property="public" value="true"/> <forward name="success" path="/registration.jsp"/> </action> <!-- Edit mail subscription --> <action path="/editSubscription" type="org.apache.struts.webapp.example.EditSubscriptionAction" attribute="subscriptionForm" scope="request" validate="false"> <forward name="failure" path="/mainMenu.jsp"/> <forward name="success" path="/subscription.jsp"/> </action> <!-- Process a user logoff --> <action path="/logoff" type="org.apache.struts.webapp.example.LogoffAction"> <forward name="success" path="/index.jsp"/> </action> <!-- Process a user logon --> <action path="/logon" type="org.apache.struts.webapp.example.LogonAction" name="logonForm" scope="request" input="/logon.jsp"> </action> <!-- Save user registration --> <action path="/saveRegistration" type="org.apache.struts.webapp.example.SaveRegistrationAction" name="registrationForm" scope="request" input="/registration.jsp"/> <!-- Save mail subscription --> <action path="/saveSubscription" type="org.apache.struts.webapp.example.SaveSubscriptionAction" name="subscriptionForm" scope="request" input="/subscription.jsp"> <forward name="success" path="/editRegistration.do?action=Edit"/> </action> <!-- Display the "walking tour" documentation --> <action path="/tour" forward="/tour.htm"> </action> <!-- The standard administrative actions available with Struts --> <!-- These would be either omitted or protected by security --> <!-- in a real application deployment --> <action path="/admin/addFormBean" type="org.apache.struts.actions.AddFormBeanAction"/> <action path="/admin/addForward" type="org.apache.struts.actions.AddForwardAction"/> <action path="/admin/addMapping" type="org.apache.struts.actions.AddMappingAction"/> <action path="/admin/reload" type="org.apache.struts.actions.ReloadAction"/> <action path="/admin/removeFormBean" type="org.apache.struts.actions.RemoveFormBeanAction"/> <action path="/admin/removeForward" type="org.apache.struts.actions.RemoveForwardAction"/> <action path="/admin/removeMapping" type="org.apache.struts.actions.RemoveMappingAction"/> </action-mappings> </struts-config>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]