You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by cr...@apache.org on 2006/02/18 20:16:00 UTC

svn commit: r378760 - in /beehive/trunk/netui: src/pageflow/org/apache/beehive/netui/pageflow/internal/ test/webapps/drt/src/bugs/j1059/ test/webapps/drt/testRecorder/config/ test/webapps/drt/testRecorder/tests/ test/webapps/drt/web/bugs/j1059/

Author: crogers
Date: Sat Feb 18 11:15:58 2006
New Revision: 378760

URL: http://svn.apache.org/viewcvs?rev=378760&view=rev
Log:
Fix for http://issues.apache.org/jira/browse/BEEHIVE-1059 - ClassCastException when InternalUtils.addActionError() casts ActionMessages for the Global.ERROR_KEY attribute to a sub class, ActionErrors.

Added a test to cover this scenario.

tests: bvt in netui (WinXP)


Added:
    beehive/trunk/netui/test/webapps/drt/src/bugs/j1059/
    beehive/trunk/netui/test/webapps/drt/src/bugs/j1059/Controller.java   (with props)
    beehive/trunk/netui/test/webapps/drt/src/bugs/j1059/messages.properties   (with props)
    beehive/trunk/netui/test/webapps/drt/testRecorder/tests/J1059.xml   (with props)
    beehive/trunk/netui/test/webapps/drt/web/bugs/j1059/
    beehive/trunk/netui/test/webapps/drt/web/bugs/j1059/index.jsp   (with props)
Modified:
    beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java
    beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml

Modified: beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java?rev=378760&r1=378759&r2=378760&view=diff
==============================================================================
--- beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java (original)
+++ beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java Sat Feb 18 11:15:58 2006
@@ -412,8 +412,8 @@
 
     public static void addActionError( String propertyName, ActionMessage error, ServletRequest request )
     {
-        ActionErrors errors = ( ActionErrors ) request.getAttribute( Globals.ERROR_KEY );
-        if ( errors == null ) request.setAttribute( Globals.ERROR_KEY, errors = new ActionErrors() );
+        ActionMessages errors = ( ActionMessages ) request.getAttribute( Globals.ERROR_KEY );
+        if ( errors == null ) request.setAttribute( Globals.ERROR_KEY, errors = new ActionMessages() );
         errors.add( propertyName, error );
     }
 

Added: beehive/trunk/netui/test/webapps/drt/src/bugs/j1059/Controller.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/src/bugs/j1059/Controller.java?rev=378760&view=auto
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/src/bugs/j1059/Controller.java (added)
+++ beehive/trunk/netui/test/webapps/drt/src/bugs/j1059/Controller.java Sat Feb 18 11:15:58 2006
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * $Header:$
+ */
+package bugs.j1059;
+
+import org.apache.beehive.netui.pageflow.Forward;
+import org.apache.beehive.netui.pageflow.PageFlowController;
+import org.apache.beehive.netui.pageflow.annotations.Jpf;
+
+@Jpf.Controller(
+    messageBundles = {
+        @Jpf.MessageBundle(bundlePath="bugs.j1059.messages")
+    },
+    simpleActions={
+        @Jpf.SimpleAction(name="begin", path="index.jsp")
+    }
+)
+public class Controller extends PageFlowController
+{
+    public static class MyFormBean implements java.io.Serializable {
+        String name;
+        public String getName() {
+            return name;
+        }
+        public void setName(String value) {
+            name = value;
+        }
+    }
+
+    public static class BogusException extends Exception {
+        Object[] messageArgs = null;
+        public BogusException(String msg) {
+            super(msg);
+        }
+        public void setMessageArgs(Object[] args) {
+            messageArgs = args;
+        }
+        public Object[] getMessageArgs() {
+            return messageArgs;
+        }
+    }
+
+    @Jpf.Action(
+        forwards={
+           @Jpf.Forward(name="success", path="index.jsp")
+        },
+        catches = {
+            @Jpf.Catch(
+                type = Controller.BogusException.class,
+                method = "bogusExceptionHandler",
+                messageKey="messageKey_1")
+        }
+    )
+    protected Forward testAction(MyFormBean bean)
+            throws BogusException {
+        String name = bean.getName();
+        if (name != null && name.indexOf('X') != -1) {
+            BogusException ex2 =
+                new BogusException("testAction failed... BogusException msg.");
+            ex2.setMessageArgs(new Object[] {"name", "contains the character, 'X'"});
+            throw ex2;
+        }
+        return new Forward("success");
+    }
+
+    @Jpf.ExceptionHandler(
+        forwards = {
+            @Jpf.Forward(
+                name = "handleError",
+                path = "index.jsp")
+        })
+    protected Forward bogusExceptionHandler( Controller.BogusException ex,
+                                           String actionName,
+                                           String message, Object form ) {
+        Object[] args = ex.getMessageArgs();
+        addActionError("name", "messageKey_2", args);
+        return new Forward( "handleError" );
+    }
+}

Propchange: beehive/trunk/netui/test/webapps/drt/src/bugs/j1059/Controller.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: beehive/trunk/netui/test/webapps/drt/src/bugs/j1059/messages.properties
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/src/bugs/j1059/messages.properties?rev=378760&view=auto
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/src/bugs/j1059/messages.properties (added)
+++ beehive/trunk/netui/test/webapps/drt/src/bugs/j1059/messages.properties Sat Feb 18 11:15:58 2006
@@ -0,0 +1,3 @@
+messageKey_1=Caught Exception: '{0}'
+messageKey_2=Handled BogusException: field ''{0}'' - {1}.
+

Propchange: beehive/trunk/netui/test/webapps/drt/src/bugs/j1059/messages.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml?rev=378760&r1=378759&r2=378760&view=diff
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml (original)
+++ beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml Sat Feb 18 11:15:58 2006
@@ -5093,6 +5093,16 @@
          </features>
       </test>
       <test>
+         <name>J1059</name>
+         <description>Test the FlowController.addActionError() method, called from within an exception handler.</description>
+         <webapp>coreWeb</webapp>
+         <categories>
+            <category>bvt</category>
+            <category>bvt.struts11</category>
+            <category>jiraBugs</category>
+         </categories>
+      </test>
+      <test>
          <name>JpfScopedFormsTest49</name>
          <description>JpfScopedFormsTest49</description>
          <webapp>coreWeb</webapp>

Added: beehive/trunk/netui/test/webapps/drt/testRecorder/tests/J1059.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/J1059.xml?rev=378760&view=auto
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/testRecorder/tests/J1059.xml (added)
+++ beehive/trunk/netui/test/webapps/drt/testRecorder/tests/J1059.xml Sat Feb 18 11:15:58 2006
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<recorderSession xmlns="http://beehive.apache.org/netui/tools/testrecorder/2004/session">
+<sessionName>J1059</sessionName>
+<tester>crogers</tester>
+<startDate>17 Feb 2006, 04:10:54.988 PM MST</startDate>
+<description>test of the FlowController.addActionError() method called from within an exception handler.</description>
+<tests>
+<test>
+<testNumber>1</testNumber>
+<request>
+<protocol>HTTP</protocol>
+<protocolVersion>1.1</protocolVersion>
+<host>localhost</host>
+<port>8080</port>
+<uri>/coreWeb/bugs/j1059/begin.do</uri>
+<method>GET</method>
+<parameters>
+</parameters>
+<cookies>
+<cookie>
+<name>JSESSIONID</name>
+<value>152D20BC8CD23EBF32DD0C8BBCBA006A</value>
+</cookie>
+</cookies>
+<headers>
+<header>
+<name>accept</name>
+<value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</value>
+</header>
+<header>
+<name>accept-charset</name>
+<value>UTF-8,*</value>
+</header>
+<header>
+<name>accept-encoding</name>
+<value>gzip,deflate</value>
+</header>
+<header>
+<name>accept-language</name>
+<value>en-us,en;q=0.5</value>
+</header>
+<header>
+<name>connection</name>
+<value>keep-alive</value>
+</header>
+<header>
+<name>cookie</name>
+<value>JSESSIONID=152D20BC8CD23EBF32DD0C8BBCBA006A</value>
+</header>
+<header>
+<name>host</name>
+<value>localhost:8080</value>
+</header>
+<header>
+<name>keep-alive</name>
+<value>300</value>
+</header>
+<header>
+<name>user-agent</name>
+<value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1</value>
+</header>
+</headers>
+</request>
+<response>
+<statusCode>200</statusCode>
+<reason></reason>
+<responseBody>
+<![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+
+    <head>
+        <base href="http://localhost:8080/coreWeb/bugs/j1059/index.jsp">
+    </head>
+    <body>
+        <form action="/coreWeb/bugs/j1059/testAction.do" method="post">
+            <span>Name:</span>
+            <input type="text" name="{actionForm.name}">
+            
+            <br>To throw the exception, enter a string that includes an X...
+            <br>
+            <input type="submit" name="actionOverride:testAction" value="Test Action">
+        </form>
+        <a href="/coreWeb/bugs/j1059/begin.do">begin</a>
+        <hr>
+        Errors:
+        <br>
+        
+    </body>
+
+</html>]]>
+</responseBody>
+</response>
+</test>
+<test>
+<testNumber>2</testNumber>
+<request>
+<protocol>HTTP</protocol>
+<protocolVersion>1.1</protocolVersion>
+<host>localhost</host>
+<port>8080</port>
+<uri>/coreWeb/bugs/j1059/testAction.do</uri>
+<method>POST</method>
+<parameters>
+<parameter>
+<name>actionOverride:testAction</name>
+<value>Test Action</value>
+</parameter>
+<parameter>
+<name>{actionForm.name}</name>
+<value>eXception</value>
+</parameter>
+</parameters>
+<cookies>
+<cookie>
+<name>JSESSIONID</name>
+<value>152D20BC8CD23EBF32DD0C8BBCBA006A</value>
+</cookie>
+</cookies>
+<headers>
+<header>
+<name>accept</name>
+<value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</value>
+</header>
+<header>
+<name>accept-charset</name>
+<value>UTF-8,*</value>
+</header>
+<header>
+<name>accept-encoding</name>
+<value>gzip,deflate</value>
+</header>
+<header>
+<name>accept-language</name>
+<value>en-us,en;q=0.5</value>
+</header>
+<header>
+<name>connection</name>
+<value>keep-alive</value>
+</header>
+<header>
+<name>content-length</name>
+<value>71</value>
+</header>
+<header>
+<name>content-type</name>
+<value>application/x-www-form-urlencoded</value>
+</header>
+<header>
+<name>cookie</name>
+<value>JSESSIONID=152D20BC8CD23EBF32DD0C8BBCBA006A</value>
+</header>
+<header>
+<name>host</name>
+<value>localhost:8080</value>
+</header>
+<header>
+<name>keep-alive</name>
+<value>300</value>
+</header>
+<header>
+<name>referer</name>
+<value>http://localhost:8080/coreWeb/bugs/j1059/begin.do</value>
+</header>
+<header>
+<name>user-agent</name>
+<value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1</value>
+</header>
+</headers>
+</request>
+<response>
+<statusCode>200</statusCode>
+<reason></reason>
+<responseBody>
+<![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+
+    <head>
+        <base href="http://localhost:8080/coreWeb/bugs/j1059/index.jsp">
+    </head>
+    <body>
+        <form action="/coreWeb/bugs/j1059/testAction.do" method="post">
+            <span>Name:</span>
+            <input type="text" name="{actionForm.name}" value="eXception">
+            Handled BogusException: field ''name'' - contains the character, 'X'.
+
+            <br>To throw the exception, enter a string that includes an X...
+            <br>
+            <input type="submit" name="actionOverride:testAction" value="Test Action">
+        </form>
+        <a href="/coreWeb/bugs/j1059/begin.do">begin</a>
+        <hr>
+        Errors:
+        <br>
+        Caught Exception: 'testAction failed... BogusException msg.'
+Handled BogusException: field ''name'' - contains the character, 'X'.
+
+    </body>
+
+</html>]]>
+</responseBody>
+</response>
+</test>
+</tests>
+<endDate>17 Feb 2006, 04:11:51.399 PM MST</endDate>
+<testCount>2</testCount>
+</recorderSession>

Propchange: beehive/trunk/netui/test/webapps/drt/testRecorder/tests/J1059.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: beehive/trunk/netui/test/webapps/drt/web/bugs/j1059/index.jsp
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/web/bugs/j1059/index.jsp?rev=378760&view=auto
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/web/bugs/j1059/index.jsp (added)
+++ beehive/trunk/netui/test/webapps/drt/web/bugs/j1059/index.jsp Sat Feb 18 11:15:58 2006
@@ -0,0 +1,25 @@
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+<%@ taglib prefix="netui" uri="http://beehive.apache.org/netui/tags-html-1.0"%>
+
+<netui:html>
+    <head>
+        <netui:base/>
+    </head>
+    <netui:body>
+        <netui:form action="testAction">
+            <netui:span value="Name:"/>
+            <netui:textBox dataSource="actionForm.name"/>
+            <netui:error key="name"/>
+            <br>To throw the exception, enter a string that includes an X...
+            <br>
+            <netui:button type="submit" action="testAction" value="Test Action"/>
+        </netui:form>
+        <netui:anchor action="begin">begin</netui:anchor>
+        <hr>
+        Errors:
+        <br>
+        <netui:errors/>
+    </netui:body>
+</netui:html>
+
+  
\ No newline at end of file

Propchange: beehive/trunk/netui/test/webapps/drt/web/bugs/j1059/index.jsp
------------------------------------------------------------------------------
    svn:eol-style = native