You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by ri...@apache.org on 2005/06/02 22:59:50 UTC

svn commit: r179654 - in /incubator/beehive/trunk/netui: src/pageflow/org/apache/beehive/netui/pageflow/ src/util/org/apache/beehive/netui/core/urltemplates/ test/webapps/drt/coreWeb/bugs/j785/ test/webapps/drt/testRecorder/config/ test/webapps/drt/testRecorder/tests/

Author: rich
Date: Thu Jun  2 13:59:49 2005
New Revision: 179654

URL: http://svn.apache.org/viewcvs?rev=179654&view=rev
Log:
Fix for http://issues.apache.org/jira/browse/BEEHIVE-785 : Illegal argument exception when clicking a link which contains a request parameter

Also fixed the logger category for URLTemplatesFactory.

tests: bvt in netui (WinXP)
BB: self (linux)


Added:
    incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/bugs/j785/
    incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/bugs/j785/Controller.jpf   (with props)
    incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/bugs/j785/index.jsp   (with props)
    incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/J785.xml   (with props)
Modified:
    incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/NullActionForm.java
    incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java
    incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/core/urltemplates/URLTemplatesFactory.java
    incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml

Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/NullActionForm.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/NullActionForm.java?rev=179654&r1=179653&r2=179654&view=diff
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/NullActionForm.java (original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/NullActionForm.java Thu Jun  2 13:59:49 2005
@@ -52,12 +52,15 @@
 
     public Object get( Object key )
     {
-        return null;
+        //
+        // We return a reference to the current bean, so that when BeanUtils tries to resolve properties
+        // (e.g., "foo.bar.baz"), we get an unlimited chain of Maps that won't cause it to throw errors.
+        //
+        return this;
     }
 
     public Object put( Object o, Object o1 )
     {
-        System.err.println( "here" );
         return null;
     }
 

Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java?rev=179654&r1=179653&r2=179654&view=diff
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java (original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java Thu Jun  2 13:59:49 2005
@@ -133,7 +133,6 @@
     private InternalConcurrentHashMap/*< String, Class >*/ _pageServletClasses = new InternalConcurrentHashMap/*< String, Class >*/();
     private PageFlowPageFilter _pageServletFilter;
     
-
     protected Action processActionCreate( HttpServletRequest request, HttpServletResponse response,
                                           ActionMapping actionMapping )
         throws IOException
@@ -410,10 +409,8 @@
         // TODO: performance?
         //
         PageFlowRequestWrapper wrapper = PageFlowRequestWrapper.get( request );
-        if ( ! wrapper.isForwardedByButton() )
+        if ( ! wrapper.isForwardedByButton() && ! wrapper.isForwardedRequest() )
         {
-            wrapper.setForwardedByButton( true );
-            
             //
             // First, since we need access to request parameters here, process a multipart request
             // if that's what we have.  This puts the parameters (each in a MIME part) behind an
@@ -438,6 +435,7 @@
                         _log.debug( "A request parameter overrode the action.  Forwarding to: " + actionPath );
                     }
 
+                    wrapper.setForwardedByButton( true );
                     doForward( actionPath, request, response );
                     return true;
                 }

Modified: incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/core/urltemplates/URLTemplatesFactory.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/core/urltemplates/URLTemplatesFactory.java?rev=179654&r1=179653&r2=179654&view=diff
==============================================================================
--- incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/core/urltemplates/URLTemplatesFactory.java (original)
+++ incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/core/urltemplates/URLTemplatesFactory.java Thu Jun  2 13:59:49 2005
@@ -37,7 +37,7 @@
  */
 public class URLTemplatesFactory
 {
-    private static final Logger _log = Logger.getInstance( DefaultURLTemplateFileParser.class );
+    private static final Logger _log = Logger.getInstance( URLTemplatesFactory.class );
 
     /** Default value for path from the web app to the URL templates. */
     public static final String DEFAULT_URL_TEMPLATE_CONFIG_FILE_PATH = "/WEB-INF/beehive-url-template-config.xml";

Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/bugs/j785/Controller.jpf
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/bugs/j785/Controller.jpf?rev=179654&view=auto
==============================================================================
--- incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/bugs/j785/Controller.jpf (added)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/bugs/j785/Controller.jpf Thu Jun  2 13:59:49 2005
@@ -0,0 +1,13 @@
+package bugs.j785;
+
+import org.apache.beehive.netui.pageflow.PageFlowController;
+import org.apache.beehive.netui.pageflow.annotations.Jpf;
+
+@Jpf.Controller(
+    simpleActions={
+        @Jpf.SimpleAction(name="begin", path="index.jsp")
+    }
+)
+public class Controller extends PageFlowController
+{
+}

Propchange: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/bugs/j785/Controller.jpf
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/bugs/j785/index.jsp
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/bugs/j785/index.jsp?rev=179654&view=auto
==============================================================================
--- incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/bugs/j785/index.jsp (added)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/bugs/j785/index.jsp Thu Jun  2 13:59:49 2005
@@ -0,0 +1,29 @@
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+<%@ taglib prefix="netui" uri="http://beehive.apache.org/netui/tags-html-1.0"%>
+<%@ taglib prefix="netui-data" uri="http://beehive.apache.org/netui/tags-databinding-1.0"%>
+<%@ taglib prefix="netui-template" uri="http://beehive.apache.org/netui/tags-template-1.0"%>
+
+
+<netui:html>
+    <head>
+        <netui:base/>
+    </head>
+    <netui:body>
+        <h3>${pageFlow.URI}</h3>
+
+        This test confirms that there are no exceptions when using a button to override the form
+        action, where the button adds a request parameter that <i>looks like a deeply-nested
+        property</i> (like "foo.bar", below).  This was blowing up in commons-beanutils, which was
+        trying to resolve the property.
+        <br/>
+        <br/>
+        <netui:form action="begin">
+            <netui:button value="submit" action="begin">
+                <netui:parameter name="foo.bar" value="bar"/>
+            </netui:button>
+        </netui:form>
+    </netui:body>
+</netui:html>
+
+  
+

Propchange: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/bugs/j785/index.jsp
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml?rev=179654&r1=179653&r2=179654&view=diff
==============================================================================
--- incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml (original)
+++ incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml Thu Jun  2 13:59:49 2005
@@ -4511,6 +4511,15 @@
          </categories>
       </test>
       <test>
+         <name>J785</name>
+         <description>Test to ensure that we don't blow up when using a button to override the form action, where the button adds a request parameter that looks like a deeply-nested property (e.g., "foo.bar").</description>
+         <webapp>coreWeb</webapp>
+         <categories>
+            <category>bvt</category>
+            <category>jiraBugs</category>
+         </categories>
+      </test>
+      <test>
          <name>JpfScopedFormsTest49</name>
          <description>JpfScopedFormsTest49</description>
          <webapp>coreWeb</webapp>

Added: incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/J785.xml
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/J785.xml?rev=179654&view=auto
==============================================================================
--- incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/J785.xml (added)
+++ incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/J785.xml Thu Jun  2 13:59:49 2005
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ses:recorderSession xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session">
+   <ses:sessionName>J785</ses:sessionName>
+   <ses:tester>rich</ses:tester>
+   <ses:startDate>02 Jun 2005, 02:47:22.609 PM MDT</ses:startDate>
+   <ses:description>Test to ensure that we don't blow up when using a button to override the form action, where the button adds a request parameter that looks like a deeply-nested property (e.g., "foo.bar").</ses:description>
+   <ses:tests>
+      <ses:test>
+         <ses:testNumber>1</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/coreWeb/bugs/j785/Controller.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>03C0028B401865276A3CBEDFD71DADE9</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>nde-textsize</ses:name>
+                  <ses:value>16px</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>CfBJQGf8Jm0Zjqqy1nwZnlBtGbYHdVJs6ThlrhMTz844wzkTy2Mm!-1019318680</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=03C0028B401865276A3CBEDFD71DADE9; nde-textsize=16px; JSESSIONID=CfBJQGf8Jm0Zjqqy1nwZnlBtGbYHdVJs6ThlrhMTz844wzkTy2Mm!-1019318680</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses: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/j785/index.jsp">
+    </head>
+    <body>
+        <h3>/bugs/j785/Controller.jpf</h3>
+
+        This test confirms that there are no exceptions when using a button to override the form
+        action, where the button adds a request parameter that <i>looks like a deeply-nested
+        property</i> (like "foo.bar", below).  This was blowing up in commons-beanutils, which was
+        trying to resolve the property.
+        <br/>
+        <br/>
+        <form action="/coreWeb/bugs/j785/begin.do" method="post">
+            <input type="submit" name="actionOverride:begin?foo.bar=bar" value="submit">
+        </form>
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>2</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/coreWeb/bugs/j785/begin.do</ses:uri>
+            <ses:method>POST</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>actionOverride:begin?foo.bar=bar</ses:name>
+                  <ses:value>submit</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>03C0028B401865276A3CBEDFD71DADE9</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>nde-textsize</ses:name>
+                  <ses:value>16px</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>CfBJQGf8Jm0Zjqqy1nwZnlBtGbYHdVJs6ThlrhMTz844wzkTy2Mm!-1019318680</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-length</ses:name>
+                  <ses:value>45</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-type</ses:name>
+                  <ses:value>application/x-www-form-urlencoded</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=03C0028B401865276A3CBEDFD71DADE9; nde-textsize=16px; JSESSIONID=CfBJQGf8Jm0Zjqqy1nwZnlBtGbYHdVJs6ThlrhMTz844wzkTy2Mm!-1019318680</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  <ses:value>http://localhost:8080/coreWeb/bugs/j785/Controller.jpf</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses: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/j785/index.jsp">
+    </head>
+    <body>
+        <h3>/bugs/j785/Controller.jpf</h3>
+
+        This test confirms that there are no exceptions when using a button to override the form
+        action, where the button adds a request parameter that <i>looks like a deeply-nested
+        property</i> (like "foo.bar", below).  This was blowing up in commons-beanutils, which was
+        trying to resolve the property.
+        <br/>
+        <br/>
+        <form action="/coreWeb/bugs/j785/begin.do" method="post">
+            <input type="submit" name="actionOverride:begin?foo.bar=bar" value="submit">
+        </form>
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+   </ses:tests>
+   <ses:endDate>02 Jun 2005, 02:47:38.472 PM MDT</ses:endDate>
+   <ses:testCount>2</ses:testCount>
+</ses:recorderSession>

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