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]

Reply via email to