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]