epugh       2003/09/26 10:49:47

  Modified:    xdocs    changes.xml
               src/test/org/apache/turbine/modules ActionLoaderTest.java
               src/test/org/apache/turbine/modules/actions
                        VelocityActionThrowsException.java
               conf     TurbineResources.properties
  Log:
  Unit test testing the bubble exceptions property
  
  Revision  Changes    Path
  1.65      +5 -0      jakarta-turbine-2/xdocs/changes.xml
  
  Index: changes.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-2/xdocs/changes.xml,v
  retrieving revision 1.64
  retrieving revision 1.65
  diff -u -r1.64 -r1.65
  --- changes.xml       26 Sep 2003 00:39:51 -0000      1.64
  +++ changes.xml       26 Sep 2003 17:49:46 -0000      1.65
  @@ -75,6 +75,11 @@
   <p>
     <ul>
       <li>
  +       doXXX events would eat exceptions while doPerform would bubble them up.
  +       Added property action.event.bubbleexception which is true by default that
  +       applies to both types and either bubbles them up, or logs and sinks them.
  +    </li>    
  +    <li>
          The intake validators were fixed so that fields with required=false 
          rules no longer attempt to execute the remaining rules when no
          input is provided.  A minLength > 0 rule is no longer synonymous
  
  
  
  1.2       +209 -123  
jakarta-turbine-2/src/test/org/apache/turbine/modules/ActionLoaderTest.java
  
  Index: ActionLoaderTest.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-2/src/test/org/apache/turbine/modules/ActionLoaderTest.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ActionLoaderTest.java     11 Sep 2003 15:00:09 -0000      1.1
  +++ ActionLoaderTest.java     26 Sep 2003 17:49:46 -0000      1.2
  @@ -1,9 +1,63 @@
   package org.apache.turbine.modules;
  +/* ====================================================================
  + * The Apache Software License, Version 1.1
  + *
  + * Copyright (c) 2001-2003 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 acknowledgment:
  + *       "This product includes software developed by the
  + *        Apache Software Foundation (http://www.apache.org/)."
  + *    Alternately, this acknowledgment may appear in the software itself,
  + *    if and wherever such third-party acknowledgments normally appear.
  + *
  + * 4. The names "Apache" and "Apache Software Foundation" and
  + *    "Apache Turbine" 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",
  + *    "Apache Turbine", nor may "Apache" appear in their name, without
  + *    prior written permission of the Apache Software Foundation.
  + *
  + * 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/>.
  + */
  +
   import java.util.Vector;
   import javax.servlet.ServletConfig;
   import javax.servlet.http.HttpServletResponse;
  -import org.apache.turbine.modules.ActionLoader;
  -import org.apache.turbine.modules.PageLoader;
  +
  +import org.apache.turbine.Turbine;
   import org.apache.turbine.om.security.User;
   import org.apache.turbine.services.TurbineServices;
   import org.apache.turbine.services.rundata.RunDataService;
  @@ -16,131 +70,163 @@
   import com.mockobjects.servlet.MockHttpServletResponse;
   import com.mockobjects.servlet.MockServletConfig;
   /**
  - * This test case is to verify whether Exceptions in Velocity actions are 
  - * properly bubbled up.
  + * This test case is to verify whether exceptions in Velocity actions are 
  + * properly bubbled up when action.event.bubbleexception=true.  Or, if
  + * action.event.bubbleexception=false, then the exceptions should be
  + * logged and sunk.
    * 
    * @author     <a href="mailto:[EMAIL PROTECTED]">Eric Pugh</a>
    */
  -public class ActionLoaderTest extends BaseTestCase
  -{
  -    private static TurbineConfig tc = null;
  -    private static TemplateService ts = null;
  -    private MockServletConfig config = null;
  -    private EnhancedMockHttpServletRequest request = null;
  -    private EnhancedMockHttpSession session = null;
  -    private HttpServletResponse response = null;
  -    private static ServletConfig sc = null;
  -    /*
  -     * @see TestCase#setUp()
  -     */
  -    protected void setUp() throws Exception
  -    {
  -        super.setUp();
  -        config = new MockServletConfig();
  -        config.setupNoParameters();
  -        request = new EnhancedMockHttpServletRequest();
  -        request.setupServerName("bob");
  -        request.setupGetProtocol("http");
  -        request.setupScheme("scheme");
  -        request.setupPathInfo("damn");
  -        request.setupGetServletPath("damn2");
  -        request.setupGetContextPath("wow");
  -        request.setupGetContentType("html/text");
  -        request.setupAddHeader("Content-type", "html/text");
  -        request.setupAddHeader("Accept-Language", "en-US");
  -        Vector v = new Vector();
  -        request.setupGetParameterNames(v.elements());
  -        session = new EnhancedMockHttpSession();
  -        response = new MockHttpServletResponse();
  -        session.setupGetAttribute(User.SESSION_KEY, null);
  -        request.setSession(session);
  -        sc = config;
  -        tc = new TurbineConfig(".", 
"/conf/test/CompleteTurbineResources.properties");
  -        tc.initialize();
  -    }
  -    /*
  -     * @see TestCase#tearDown()
  -     */
  -    protected void tearDown() throws Exception
  -    {
  -        super.tearDown();
  -        if (tc != null)
  -        {
  -            tc.dispose();
  -        }
  -    }
  -    /**
  -     * Constructor for VelocityErrorScreenTest.
  -     * @param arg0
  -     */
  -    public ActionLoaderTest(String arg0) throws Exception
  -    {
  -        super(arg0);
  -    }
  -    /**
  -     * This unit test verifies that if your standard doPerform is called, 
  -     * and it throws an Exception, the exception is bubbled up out of the 
ActionLoader...
  +public class ActionLoaderTest extends BaseTestCase {
  +     private static TurbineConfig tc = null;
  +     private static TemplateService ts = null;
  +     private MockServletConfig config = null;
  +     private EnhancedMockHttpServletRequest request = null;
  +     private EnhancedMockHttpSession session = null;
  +     private HttpServletResponse response = null;
  +     private static ServletConfig sc = null;
  +     /*
  +      * @see TestCase#setUp()
  +      */
  +     protected void setUp() throws Exception {
  +             super.setUp();
  +             config = new MockServletConfig();
  +             config.setupNoParameters();
  +             request = new EnhancedMockHttpServletRequest();
  +             request.setupServerName("bob");
  +             request.setupGetProtocol("http");
  +             request.setupScheme("scheme");
  +             request.setupPathInfo("damn");
  +             request.setupGetServletPath("damn2");
  +             request.setupGetContextPath("wow");
  +             request.setupGetContentType("html/text");
  +             request.setupAddHeader("Content-type", "html/text");
  +             request.setupAddHeader("Accept-Language", "en-US");
  +             Vector v = new Vector();
  +             request.setupGetParameterNames(v.elements());
  +             session = new EnhancedMockHttpSession();
  +             response = new MockHttpServletResponse();
  +             session.setupGetAttribute(User.SESSION_KEY, null);
  +             request.setSession(session);
  +             sc = config;
  +             tc =
  +                     new TurbineConfig(
  +                             ".",
  +                             "/conf/test/CompleteTurbineResources.properties");
  +             tc.initialize();
  +     }
  +     /*
  +      * @see TestCase#tearDown()
  +      */
  +     protected void tearDown() throws Exception {
  +             super.tearDown();
  +             if (tc != null) {
  +                     tc.dispose();
  +             }
  +     }
  +     /**
  +      * Constructor for VelocityErrorScreenTest.
  +      * @param arg0
  +      */
  +     public ActionLoaderTest(String arg0) throws Exception {
  +             super(arg0);
  +     }
  +     /**
  +      * This unit test verifies that if your standard doPerform is called, 
  +      * and it throws an Exception, the exception is bubbled up out of the 
ActionLoader...
  +      * 
  +      * @throws Exception If something goes wrong with the unit test
  +      */
  +     public void testDoPerformBubblesException() throws Exception {
  +             RunData data = getRunData();
  +             try {
  +                     String defaultPage = "VelocityPage";
  +                     ActionLoader.getInstance().exec(data, data.getAction());
  +                     fail("Should have thrown an exception");
  +             } catch (Exception e) {
  +                     //good
  +             }
  +     }
  +     /**
  +        * This unit test verifies that if an Action Event doEventSubmit_ is called, 
and it throws an Exception, the
  +        * exception is bubbled up out of the ActionLoader...
  +        * 
  +        * @throws Exception If something goes wrong with the unit test
  +        */
  +     public void testActionEventBubblesException() throws Exception {
  +             // can't seem to figure out how to setup the Mock Request with the 
right parameters...
  +             request.setupAddParameter("eventSubmit_doCauseexception", "foo");
  +             RunData data = getRunData();
  +             data.getParameters().add("eventSubmit_doCauseexception", "foo");
  +             assertTrue(
  +                     
data.getParameters().containsKey("eventSubmit_doCauseexception"));
  +             try {
  +                     String defaultPage = "VelocityPage";
  +                     ActionLoader.getInstance().exec(data, data.getAction());
  +                     fail("Should have bubbled out an exception thrown by the 
action.");
  +             } catch (Exception e) {
  +                     //good
  +             }
  +     }
  +
  +     /**
  +      * This unit test verifies that if your standard doPerform is called, 
  +      * and it throws an Exception, if the action.event.bubbleexception
  +     * property is set to false then the exception is NOT bubbled up
  +      * 
  +      * @throws Exception If something goes wrong with the unit test
  +      */
  +     public void testDoPerformDoesntBubbleException() throws Exception {
  +             
Turbine.getConfiguration().setProperty("action.event.bubbleexception",Boolean.FALSE);
  +             
assertFalse(Turbine.getConfiguration().getBoolean("action.event.bubbleexception"));
  +             RunData data = getRunData();
  +             try {
  +                     String defaultPage = "VelocityPage";
  +                     ActionLoader.getInstance().exec(data, data.getAction());
  +             
  +             } catch (Exception e) {
  +                     fail("Should NOT have thrown an exception:" + e.getMessage());
  +             }
  +     }
  +     /**
  +     * This unit test verifies that if an Action Event doEventSubmit_ is called, 
  +     * and it throws an Exception, if the action.event.bubbleexception
  +     * property is set to false then the exception is NOT bubbled up
        * 
        * @throws Exception If something goes wrong with the unit test
        */
  -    public void testDoPerformBubblesException() throws Exception
  -    {
  -        RunData data = getRunData();
  -        data.setAction("VelocityActionThrowsException");
  -        try
  -        {
  -            String defaultPage = "VelocityPage";
  -            ActionLoader.getInstance().exec(data, data.getAction());
  -            fail("Should have thrown an exception");
  -        }
  -        catch (Exception e)
  -        {
  -            //good
  -        }
  -    }
  -    /**
  -       * This unit test verifies that if an Action Event doEventSubmit_ is called, 
and it throws an Exception, the
  -       * exception is bubbled up out of the ActionLoader...
  -       * 
  -       * @throws Exception If something goes wrong with the unit test
  -       */
  -    public void testActionEventBubblesException() throws Exception
  -    {
  -        // can't seem to figure out how to setup the Mock Request with the right 
parameters...
  -        request.setupAddParameter("eventSubmit_doCauseexception", "foo");
  -        RunData data = getRunData();
  -        data.getParameters().add("eventSubmit_doCauseexception", "foo");
  -        
assertTrue(data.getParameters().containsKey("eventSubmit_doCauseexception"));
  -        data.setAction("VelocityActionThrowsException");
  -        try
  -        {
  -            String defaultPage = "VelocityPage";
  -            ActionLoader.getInstance().exec(data, data.getAction());
  -            fail("Should have bubbled out an exception thrown by the action.");
  -        }
  -        catch (Exception e)
  -        {
  -            //good
  -        }
  -    }
  -    public void testNonexistentActionCausesError() throws Exception
  -    {
  -        RunData data = getRunData();
  -        data.setAction("ImaginaryAction");
  -        try
  -        {
  -            PageLoader.getInstance().exec(data, "boo");
  -            fail("Should have thrown an exception");
  -        }
  -        catch (Exception e)
  -        {
  -            //good
  -        }
  -    }
  -    private RunData getRunData() throws Exception
  -    {
  -        RunDataService rds = (RunDataService) 
TurbineServices.getInstance().getService(RunDataService.SERVICE_NAME);
  -        RunData runData = rds.getRunData(request, response, config);
  -        return runData;
  -    }
  +     public void testActionEventDoesntBubbleException() throws Exception {
  +             // can't seem to figure out how to setup the Mock Request with the 
right parameters...
  +             
Turbine.getConfiguration().setProperty("action.event.bubbleexception",Boolean.FALSE);
  +             request.setupAddParameter("eventSubmit_doCauseexception", "foo");
  +             RunData data = getRunData();
  +             data.getParameters().add("eventSubmit_doCauseexception", "foo");
  +             assertTrue(
  +                     
data.getParameters().containsKey("eventSubmit_doCauseexception"));
  +             
  +             try {
  +                     String defaultPage = "VelocityPage";
  +                     ActionLoader.getInstance().exec(data, data.getAction());       
                 
  +             } catch (Exception e) {
  +                     fail("Should NOT have thrown an exception:" + e.getMessage());
  +             }
  +     }
  +     public void testNonexistentActionCausesError() throws Exception {
  +             RunData data = getRunData();
  +             data.setAction("ImaginaryAction");
  +             try {
  +                     PageLoader.getInstance().exec(data, "boo");
  +                     fail("Should have thrown an exception");
  +             } catch (Exception e) {
  +                     //good
  +             }
  +     }
  +     private RunData getRunData() throws Exception {
  +             RunDataService rds =
  +                     (RunDataService) TurbineServices.getInstance().getService(
  +                             RunDataService.SERVICE_NAME);
  +             RunData runData = rds.getRunData(request, response, config);
  +             runData.setAction("VelocityActionThrowsException");
  +             return runData;
  +     }
   }
  
  
  
  1.2       +1 -1      
jakarta-turbine-2/src/test/org/apache/turbine/modules/actions/VelocityActionThrowsException.java
  
  Index: VelocityActionThrowsException.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-2/src/test/org/apache/turbine/modules/actions/VelocityActionThrowsException.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- VelocityActionThrowsException.java        11 Sep 2003 15:00:09 -0000      1.1
  +++ VelocityActionThrowsException.java        26 Sep 2003 17:49:46 -0000      1.2
  @@ -89,6 +89,6 @@
       public void doCauseexception(RunData data, Context context) throws Exception
       {
           log.debug("Calling doCauseexception");
  -        throw new Exception("From Actin Event 
VelocityActionThrowsException.doCauseexception an Exception is always thrown!");
  +        throw new Exception("From Action Event 
VelocityActionThrowsException.doCauseexception an Exception is always thrown!");
       }
   }
  
  
  
  1.52      +8 -1      jakarta-turbine-2/conf/TurbineResources.properties
  
  Index: TurbineResources.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-2/conf/TurbineResources.properties,v
  retrieving revision 1.51
  retrieving revision 1.52
  diff -u -r1.51 -r1.52
  --- TurbineResources.properties       2 Sep 2003 13:28:28 -0000       1.51
  +++ TurbineResources.properties       26 Sep 2003 17:49:47 -0000      1.52
  @@ -217,6 +217,13 @@
   # 
   action.eventsubmit.needsvalue = false
   
  +#
  +# Set this value to false if you want perform your own error trapping.
  +# Otherwise when an exception in an do<xxx> or doPerform method occurs
  +# then Turbine will hand control over to your specified error screen
  +# 
  +action.event.bubbleexception = true
  +
   # -------------------------------------------------------------------
   #
   #  J N D I  C O N T E X T S
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to