Author: rich
Date: Mon Feb 28 15:28:37 2005
New Revision: 155714

URL: http://svn.apache.org/viewcvs?view=rev&rev=155714
Log:
Fix for http://issues.apache.org/jira/browse/BEEHIVE-377 : Handling of page 
exceptions with @Jpf.Catch is broken

DRT/BVT: netui (WinXP)
BB: self (linux)


Added:
    
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlePageException/
    
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlePageException/Controller.jpf
   (with props)
    
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlePageException/error.jsp
   (with props)
    
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlePageException/index.jsp
   (with props)
    
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/HandlePageException.xml
   (with props)
Modified:
    
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/AutoRegisterActionServlet.java
    
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java
    
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowUtils.java
    
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java
    
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/PageFlowRequestWrapper.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/AutoRegisterActionServlet.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/AutoRegisterActionServlet.java?view=diff&r1=155713&r2=155714
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/AutoRegisterActionServlet.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/AutoRegisterActionServlet.java
 Mon Feb 28 15:28:37 2005
@@ -19,6 +19,7 @@
 
 import org.apache.beehive.netui.pageflow.internal.InternalConstants;
 import org.apache.beehive.netui.pageflow.internal.InternalUtils;
+import org.apache.beehive.netui.pageflow.internal.PageFlowRequestWrapper;
 import org.apache.beehive.netui.util.Bundle;
 import org.apache.beehive.netui.util.DiscoveryUtils;
 import org.apache.beehive.netui.util.config.ConfigUtil;
@@ -575,7 +576,7 @@
         // First wrap the request with an object that contains request-scoped 
values that our runtime uses.  This
         // is faster than sticking everything into attributes on the request 
(then basically reading from a HashMap).
         //
-        request = InternalUtils.wrapPageFlowRequest( request );
+        request = PageFlowRequestWrapper.wrapRequest( request );
         
         ServletContext servletContext = getServletContext();
         String modulePath = PageFlowUtils.getModulePathForRelativeURI( 
InternalUtils.getDecodedServletPath( request ) );

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?view=diff&r1=155713&r2=155714
==============================================================================
--- 
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
 Mon Feb 28 15:28:37 2005
@@ -445,7 +445,7 @@
         // First wrap the request with an object that contains request-scoped 
values that our runtime uses.  This
         // is faster than sticking everything into attributes on the request 
(then basically reading from a HashMap).
         //
-        request = InternalUtils.wrapPageFlowRequest( request );
+        request = PageFlowRequestWrapper.wrapRequest( request );
         
         String uri = InternalUtils.getDecodedServletPath( request );
         ServletContext servletContext = getServletContext();
@@ -2038,6 +2038,7 @@
     void doActionForward( HttpServletRequest request, HttpServletResponse 
response, ActionForward forward )
         throws IOException, ServletException
     {
+        request = PageFlowRequestWrapper.wrapRequest( request );
         processForwardConfig( request, response, forward );
     }
 }

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowUtils.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowUtils.java?view=diff&r1=155713&r2=155714
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowUtils.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowUtils.java
 Mon Feb 28 15:28:37 2005
@@ -931,7 +931,7 @@
         //
         // Now process the request.  We create a PageFlowRequestWrapper for 
pageflow-specific request-scoped info.
         //
-        PageFlowRequestWrapper wrappedRequest = 
InternalUtils.wrapPageFlowRequest( ( HttpServletRequest ) request );
+        PageFlowRequestWrapper wrappedRequest = 
PageFlowRequestWrapper.wrapRequest( ( HttpServletRequest ) request );
         as.doGet( wrappedRequest, scopedResponse );  // this just calls 
process() -- same as doPost()
 
         String returnURI;

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java?view=diff&r1=155713&r2=155714
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java
 Mon Feb 28 15:28:37 2005
@@ -43,7 +43,6 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
-import javax.servlet.http.HttpServletRequestWrapper;
 import java.io.IOException;
 import java.lang.reflect.Method;
 import java.util.HashMap;
@@ -1000,36 +999,6 @@
     public static void setAvoidDirectResponseOutput( ServletRequest request )
     {
         request.setAttribute( AVOID_DIRECT_RESPONSE_OUTPUT_ATTR, Boolean.TRUE 
);
-    }
-    
-    public static PageFlowRequestWrapper wrapPageFlowRequest( 
HttpServletRequest request )
-    {
-        PageFlowRequestWrapper retVal;
-        if ( request instanceof PageFlowRequestWrapper )
-        {
-            retVal = ( PageFlowRequestWrapper ) request;
-        }
-        else
-        {
-            retVal = new PageFlowRequestWrapper( request );
-        }
-        
-        //
-        // If there's *any* PageFlowRequestWrapper up the chain of wrapped 
requests, we must copy values from that.
-        //
-        ServletRequest j = retVal.getRequest();
-        while ( j instanceof HttpServletRequestWrapper )
-        {
-            if ( j instanceof PageFlowRequestWrapper )
-            {
-                retVal.initFrom( ( PageFlowRequestWrapper ) j );
-                break;
-            }
-            
-            j = ( ( HttpServletRequestWrapper ) j ).getRequest();
-        }
-        
-        return retVal;
     }
     
     /**

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/PageFlowRequestWrapper.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/PageFlowRequestWrapper.java?view=diff&r1=155713&r2=155714
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/PageFlowRequestWrapper.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/PageFlowRequestWrapper.java
 Mon Feb 28 15:28:37 2005
@@ -171,4 +171,34 @@
     {
         _state.multipartRequestWrapper = multipartRequestWrapper;
     }
+    
+    public static PageFlowRequestWrapper wrapRequest( HttpServletRequest req )
+    {
+        PageFlowRequestWrapper retVal;
+        if ( req instanceof PageFlowRequestWrapper )
+        {
+            retVal = ( PageFlowRequestWrapper ) req;
+        }
+        else
+        {
+            retVal = new PageFlowRequestWrapper( req );
+        }
+        
+        //
+        // If there's *any* PageFlowRequestWrapper up the chain of wrapped 
requests, we must copy values from that.
+        //
+        ServletRequest j = retVal.getRequest();
+        while ( j instanceof HttpServletRequestWrapper )
+        {
+            if ( j instanceof PageFlowRequestWrapper )
+            {
+                retVal.initFrom( ( PageFlowRequestWrapper ) j );
+                break;
+            }
+            
+            j = ( ( HttpServletRequestWrapper ) j ).getRequest();
+        }
+        
+        return retVal;
+    }
 }

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlePageException/Controller.jpf
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlePageException/Controller.jpf?view=auto&rev=155714
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlePageException/Controller.jpf
 (added)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlePageException/Controller.jpf
 Mon Feb 28 15:28:37 2005
@@ -0,0 +1,16 @@
+package miniTests.handlePageException;
+
+import org.apache.beehive.netui.pageflow.*;
+import org.apache.beehive.netui.pageflow.annotations.*;
+
[EMAIL PROTECTED](
+    simpleActions={
+        @Jpf.SimpleAction(name="begin", path="index.jsp")
+    },
+    catches={
+        @Jpf.Catch(type=Exception.class, path="error.jsp")
+    }
+)
+public class Controller extends PageFlowController
+{
+}

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

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlePageException/error.jsp
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlePageException/error.jsp?view=auto&rev=155714
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlePageException/error.jsp
 (added)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlePageException/error.jsp
 Mon Feb 28 15:28:37 2005
@@ -0,0 +1,16 @@
+<%@ 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>
+        <h3>${pageFlow.URI}</h3>
+
+        <netui:exceptions showStackTrace="false" showMessage="true"/>
+    </netui:body>
+</netui:html>
+
+  
+

Propchange: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlePageException/error.jsp
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlePageException/index.jsp
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlePageException/index.jsp?view=auto&rev=155714
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlePageException/index.jsp
 (added)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlePageException/index.jsp
 Mon Feb 28 15:28:37 2005
@@ -0,0 +1,7 @@
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+
+<%
+    if ( true ) throw new IllegalStateException( "this was intentional" );
+%>
+
+We should never get here.

Propchange: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/handlePageException/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?view=diff&r1=155713&r2=155714
==============================================================================
--- 
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
 Mon Feb 28 15:28:37 2005
@@ -3654,6 +3654,19 @@
          </features>
       </test>
       <test>
+         <name>HandlePageException</name>
+         <description>Test of using @Jpf.Catch to handle an exception thrown 
from a JSP.</description>
+         <webapp>coreWeb</webapp>
+         <categories>
+            <category>bvt</category>
+            <category>bvt.struts11</category>
+            <category>corePageFlow</category>
+         </categories>
+         <features>
+            <feature>Exceptions</feature>
+         </features>
+      </test>
+      <test>
          <name>Handlers</name>
          <description>Sanity check test of handlers, which are registered in 
netui-config.xml.  Tests the ability to define and "chain" (by adapting) 
handlers.</description>
          <webapp>coreWeb</webapp>

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/HandlePageException.xml
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/HandlePageException.xml?view=auto&rev=155714
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/HandlePageException.xml
 (added)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/HandlePageException.xml
 Mon Feb 28 15:28:37 2005
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ses:recorderSession 
xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session";>
+   <ses:sessionName>HandlePageException</ses:sessionName>
+   <ses:tester>rich</ses:tester>
+   <ses:startDate>28 Feb 2005, 11:42:51.225 AM MST</ses:startDate>
+   <ses:description>Test of using @Jpf.Catch to handle an exception thrown 
from a JSP.</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/miniTests/handlePageException/Controller.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>B7C38AD0E611AD5429C52EDFAFD5794E</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=B7C38AD0E611AD5429C52EDFAFD5794E</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.5) Gecko/20041107 Firefox/1.0</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/miniTests/handlePageException/error.jsp";>
+    </head>
+    <body>
+        <h3>/miniTests/handlePageException/Controller.jpf</h3>
+
+        java.lang.IllegalStateException: this was intentional
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+   </ses:tests>
+   <ses:endDate>28 Feb 2005, 11:42:57.234 AM MST</ses:endDate>
+   <ses:testCount>1</ses:testCount>
+</ses:recorderSession>

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


Reply via email to