Author: rich
Date: Mon Jan 24 01:03:38 2005
New Revision: 126271
URL: http://svn.apache.org/viewcvs?view=rev&rev=126271
Log:
Reworked "Page Flow Action Interceptors" (see below for more info on this
feature) to make the following changes:
- The APIs now conform to a more generic set of Interceptor APIs, which
will allow this feature to share functionality/user-model with pageflow-request
and pageflow-app interceptors. It may also be possible for
Controls/NetUI(/WSM?) to share the base Interceptor code in the future, if this
makes sense.
- Added "simple" action interceptors, which can be configured wholly in XML
(and don't require a user ActionInterceptor class).
- Added the ability to configure interceptors per-pageflow and per-action
in the XML.
- Changed the default behavior when injecting a nested page flow before or
after an action. Previously, if the ActionInterceptor callback
(afterNestedIntercept) did nothing, then the nested page flow's return-action
would be raised on the original page flow. Now, if the callback does nothing,
the intercepted action's original destination is used. This is far more likely
to work (and is far more likely to be the intended behavior).
- Added the ability to set custom properties in the XML that are passed to
the user's ActionInterceptor class when it is initialized.
- Added the ability to intercept an action and prevent *any* forwarding to
occur. This is useful when the interceptor wants to write directly to the
response.
Info on Action Interceptors
---------------------------
In general, this feature is used to alter the behavior of a page flow action,
in any of the following ways:
- "inject" an entire nested page flow, before or after the action runs
- change the destination of the action, before or after it runs
- prevent the action from running
- perform non-flow-altering logic before or after the action runs
As an example, a global action interceptor could decide (dynamically at
runtime) to show an Update Contact Information page flow before allowing the
user to reach the original destination page flow, and, depending on the outcome
of the Update Contact page flow, could redirect the user somewhere else or
allow the user to reach the original destination.
Action interceptors are configured in /WEB-INF/netui-config.xml. They are
chainable, and can be configured to run for every action, for every action in a
given page flow, or for a specific action in a given page flow.
"Global" action interceptors, which are invoked before and after every action,
are configured like this:
<pageflow-action-interceptors>
<global>
<action-interceptor>
<interceptor-class>test.Interceptor1</interceptor-class>
</action-interceptor>
</global>
</pageflow-action-interceptors>
The interceptor-class is a class that extends
org.apache.beehive.netui.pageflow.actioninterceptor.ActionInterceptor.
Per-page flow interceptors are configured using a page flow URI and
interceptor-class:
<pageflow-action-interceptors>
<per-pageflow>
<pageflow-uri>/test/MyFlow.jpf</pageflow-uri>
<action-interceptor>
<interceptor-class>test.Interceptor2</interceptor-class>
</action-interceptor>
</per-pageflow>
</pageflow-action-interceptors>
Finally, per-action interceptors are configured using a page flow URI and
action name:
<pageflow-action-interceptors>
<per-pageflow>
<pageflow-uri>/test/MyFlow.jpf</pageflow-uri>
<per-action>
<action-name>someAction</action-name>
<action-interceptor>
<interceptor-class>test.Interceptor3</interceptor-class>
</action-interceptor>
</per-action>
</per-pageflow>
</pageflow-action-interceptors>
"Simple" action interceptors can be used when a specific override path is known:
<simple-action-interceptor>
<override-path>/privacy/PrivacyNotice.jpf</override-path>
</simple-action-interceptor>
In all cases, there can be a list of action-interceptors or
simple-action-interceptors, in which case a chain of interceptors is created.
Inside an ActionInterceptor class, there are methods for intercepting
pre-action and post-action:
public void preAction( ActionInterceptorContext context, InterceptorChain
chain )
public void postAction( ActionInterceptorContext context, InterceptorChain
chain )
public abstract void afterNestedIntercept( AfterNestedInterceptContext
context )
In either method, the original destination can be overridden by setting an
"interceptor forward":
setInterceptorForward( new InterceptorForward( [webapp-relative URI] ),
context );
To allow the rest of the interceptor chain to run, continueChain() is called on
the given chain (similar to FilterChain.doFilter() in a Servlet Filter):
chain.continueChain();
*If* the InterceptorForward refers to a nested page flow, then the following
method will be called on the ActionInterceptor when the nested page flow is
finished:
public void afterNestedIntercept( AfterNestedInterceptContext context )
This method can set an InterceptorForward as above, but if the method does
nothing, the original (intercepted) action will be allowed to forward to its
desired destination.
Odd and ends:
- a simple-action-interceptor can run *after* the action by providing the
optional after-action element:
<simple-action-interceptor>
<override-path>/privacy/PrivacyNotice.jpf</override-path>
<after-action>true</after-action>
</simple-action-interceptor>
- an action-interceptor element can contain custom properties, which are
provided to the ActionInterceptor in its ActionInterceptorConfig:
<action-interceptor>
<interceptor-class>test.Interceptor3</interceptor-class>
<custom-property>
<name>someProperty</name>
<value>some value</value>
</custom-property>
</action-interceptor>
DRT/BVT: netui (WinXP)
BB: self (linux)
Added:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/RequestInterceptor.java
(contents, props changed)
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/RequestInterceptorContext.java
(contents, props changed)
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/
- copied from r125998,
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/ActionInterceptor.java
- copied, changed from r126260,
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptor.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/ActionInterceptorConfig.java
- copied, changed from r126260,
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorConfig.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/ActionInterceptorContext.java
(contents, props changed)
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/AfterNestedInterceptContext.java
(contents, props changed)
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/InterceptorForward.java
- copied, changed from r126260,
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/InterceptorForward.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/OriginalForward.java
- copied, changed from r126260,
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/OriginalForward.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/SimpleActionInterceptor.java
(contents, props changed)
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/SimpleActionInterceptorConfig.java
(contents, props changed)
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/interceptor/
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/interceptor/Interceptor.java
(contents, props changed)
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/interceptor/InterceptorChain.java
(contents, props changed)
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/interceptor/InterceptorConfig.java
(contents, props changed)
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/interceptor/InterceptorContext.java
(contents, props changed)
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/interceptor/InterceptorException.java
(contents, props changed)
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/interceptor/Interceptors.java
(contents, props changed)
incubator/beehive/trunk/netui/src/tomcat-webapp/5x/META-INF/services/org.apache.beehive.netui.pageflow.ServletContainerAdapter
- copied, changed from r125998,
incubator/beehive/trunk/netui/src/tomcat-webapp/5x/META-INF/services/org.apache.beehive.netui.pageflow.ServerAdapter
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/BaseInterceptor.java
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/ForwardAwayInterceptor.java
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/ForwardToNestedInterceptor.java
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/ForwardToNestedThenAwayInterceptor.java
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/ForwardToNullInterceptor.java
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/GlobalInterceptor.java
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/InterruptAfterActionInterceptor.java
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/InterruptBeforeActionInterceptor.java
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/Controller.jpf
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/globalInterceptors/
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/globalInterceptors/Controller.jpf
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/globalInterceptors/index.jsp
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/index.jsp
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interceptedAfterAction/
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interceptedAfterAction/Controller.jpf
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interceptedAfterAction/another.jsp
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interceptedAfterAction/index.jsp
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interceptedBeforeAction/
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interceptedBeforeAction/Controller.jpf
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interceptedBeforeAction/another.jsp
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interceptedBeforeAction/index.jsp
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interruptChain/
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interruptChain/Controller.jpf
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interruptChain/index.jsp
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/nested/
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/nested/Controller.jpf
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/nested/index.jsp
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/nonNested/
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/nonNested/Controller.jpf
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/nonNested/error.jsp
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/nonNested/index.jsp
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/overrideForwards/
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/overrideForwards/Controller.jpf
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/overrideForwards/alternate.jsp
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/overrideForwards/error.jsp
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/overrideForwards/index.jsp
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/someFlow/
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/someFlow/Controller.jpf
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/someFlow/another.jsp
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/someFlow/index.jsp
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ActionInterceptorsChain.xml
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ActionInterceptorsGlobal.xml
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ActionInterceptorsOverrideForwards.xml
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ActionInterceptorsSimple.xml
(contents, props changed)
Removed:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/ActionInterceptorChain.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/ActionInterceptorChainConfig.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/ActionInterceptorsConfig.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/
incubator/beehive/trunk/netui/src/tomcat-webapp/5x/META-INF/services/org.apache.beehive.netui.pageflow.ServerAdapter
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/interceptors/
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ActionInterceptors.xml
Modified:
incubator/beehive/trunk/netui/src/pageflow/build.xml
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/DynamicSubappActionServlet.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/Forward.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ForwardHandler.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.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/PageFlowStack.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/AdapterManager.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/RequestValues.java
incubator/beehive/trunk/netui/src/util/schema/netui-config.xsd
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/local-netui-config.xml
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
Modified: incubator/beehive/trunk/netui/src/pageflow/build.xml
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/build.xml?view=diff&rev=126271&p1=incubator/beehive/trunk/netui/src/pageflow/build.xml&r1=126270&p2=incubator/beehive/trunk/netui/src/pageflow/build.xml&r2=126271
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/build.xml (original)
+++ incubator/beehive/trunk/netui/src/pageflow/build.xml Mon Jan 24
01:03:38 2005
@@ -15,6 +15,7 @@
<path refid="controls.dependency.path"/>
<path refid="struts11.dependency.path"/>
<path refid="jsf.dependency.path"/>
+ <path refid="commons-discovery.dependency.path"/>
<pathelement path="${build.lib.dir}/beehive-netui-util.jar"/>
<pathelement path="${build.lib.dir}/beehive-netui-scoping.jar"/>
Modified:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/DynamicSubappActionServlet.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/DynamicSubappActionServlet.java?view=diff&rev=126271&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/DynamicSubappActionServlet.java&r1=126270&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/DynamicSubappActionServlet.java&r2=126271
==============================================================================
---
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/DynamicSubappActionServlet.java
(original)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/DynamicSubappActionServlet.java
Mon Jan 24 01:03:38 2005
@@ -17,6 +17,11 @@
*/
package org.apache.beehive.netui.pageflow;
+import org.apache.beehive.netui.util.logging.Logger;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+
/**
* ActionServlet that dynamically registers modules based on naming/location
conventions for Struts
@@ -30,4 +35,16 @@
*/
public class DynamicSubappActionServlet extends PageFlowActionServlet
{
+ private static final Logger _log = Logger.getInstance(
DynamicSubappActionServlet.class );
+
+ public void init( ServletConfig config ) throws ServletException
+ {
+ super.init( config );
+
+ if ( _log.isWarnEnabled() )
+ {
+ _log.warn( DynamicSubappActionServlet.class.getName() + " is
registered as the action Servlet. "
+ + "This class is deprecated; use " +
PageFlowActionServlet.class.getName() + " instead." );
+ }
+ }
}
Modified:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/Forward.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/Forward.java?view=diff&rev=126271&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/Forward.java&r1=126270&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/Forward.java&r2=126271
==============================================================================
---
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/Forward.java
(original)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/Forward.java
Mon Jan 24 01:03:38 2005
@@ -217,7 +217,7 @@
setPath( path.toString() );
super.setRedirect( redirect || path.isAbsolute() );
setContextRelative( path.getPath().startsWith( "/" ) );
- _explicitPath = true;
+ _explicitPath = true;
}
/**
Modified:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ForwardHandler.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ForwardHandler.java?view=diff&rev=126271&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ForwardHandler.java&r1=126270&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ForwardHandler.java&r2=126271
==============================================================================
---
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ForwardHandler.java
(original)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ForwardHandler.java
Mon Jan 24 01:03:38 2005
@@ -26,18 +26,17 @@
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletContext;
-import org.apache.beehive.netui.pageflow.interceptor.ActionInterceptor;
-import org.apache.beehive.netui.pageflow.interceptor.InterceptorForward;
-import org.apache.beehive.netui.pageflow.interceptor.ActionInterceptorChain;
import org.apache.beehive.netui.pageflow.internal.InternalUtils;
import org.apache.beehive.netui.pageflow.internal.RequestValues;
import org.apache.beehive.netui.pageflow.internal.InternalConstants;
import org.apache.beehive.netui.pageflow.internal.ViewRenderer;
+import
org.apache.beehive.netui.pageflow.internal.interceptor.InterceptorException;
+import org.apache.beehive.netui.pageflow.actioninterceptor.ActionInterceptor;
+import org.apache.beehive.netui.pageflow.actioninterceptor.InterceptorForward;
+import
org.apache.beehive.netui.pageflow.actioninterceptor.AfterNestedInterceptContext;
import org.apache.beehive.netui.util.logging.Logger;
import org.apache.beehive.netui.script.common.ImplicitObjectUtil;
-import java.io.IOException;
-
class ForwardHandler
implements PageFlowConstants
@@ -156,7 +155,7 @@
if ( pageFlowFwd.shouldPopPageFlow() )
{
isSpecialForward = true;
- fwd = doNestingReturn( pageFlowFwd, request, response,
mapping, flowController, form );
+ fwd = doNestingReturn( pageFlowFwd, request, response,
servletContext, mapping, flowController, form );
}
//
@@ -427,8 +426,9 @@
}
private static ActionForward doNestingReturn( Forward pageFlowFwd,
HttpServletRequest request,
- HttpServletResponse
response, ActionMapping mapping,
- FlowController
flowController, ActionForm form )
+ HttpServletResponse
response, ServletContext servletContext,
+ ActionMapping mapping,
FlowController flowController,
+ ActionForm form )
{
PageFlowStack pfStack = PageFlowStack.get( request );
String returnAction = pageFlowFwd.getPath();
@@ -473,37 +473,15 @@
//
- // If an ActionInterceptor forwarded to the nested page flow, give it
a chance to
- // determine the URI as the nested flow is returning.
+ // If an ActionInterceptor forwarded to the nested page flow, give it
a chance to change the URI as the nested
+ // flow is returning. If it doesn't, we'll go to the
originally-intended Forward.
//
ActionInterceptor interceptor = pushedPageFlowWrapper.getInterceptor();
if ( interceptor != null )
{
- InterceptorForward interceptorForward = null;
-
- try
- {
- interceptorForward = interceptor.doPostIntercept( request,
response, poppedPageFlow,
-
pushedPageFlowWrapper.getInterceptedForward(),
- returnAction
);
- }
- catch ( Exception e )
- {
- _log.error( "Exception in " + interceptor.getClass().getName()
+ ".doPostIntercept", e );
- }
-
- if ( interceptorForward != null )
- {
- if ( _log.isDebugEnabled() )
- {
- _log.debug( "post-intercept: forwarding to " +
interceptorForward.getPath() );
- }
-
- interceptorForward.rehydrateRequest( request );
- ActionInterceptorChain.setIsReturningFromIntercept( request,
true );
- return interceptorForward;
- }
+ return handleInterceptorReturn( request, response, servletContext,
poppedPageFlow, pushedPageFlowWrapper,
+ returnAction, mapping, form,
interceptor );
}
//
@@ -538,5 +516,72 @@
ActionForward fwd = new ActionForward( returnActionPath.toString(),
false );
fwd.setContextRelative( true );
return fwd;
+ }
+
+ private static ActionForward handleInterceptorReturn( HttpServletRequest
request, HttpServletResponse response,
+ ServletContext
servletContext,
+ PageFlowController
poppedPageFlow,
+
PageFlowStack.PushedPageFlow pushedPageFlowWrapper,
+ String returnAction,
ActionMapping actionMapping,
+ ActionForm form,
ActionInterceptor interceptor )
+ {
+ RequestValues.setReturningFromActionIntercept( request, true );
+
+ try
+ {
+ AfterNestedInterceptContext context =
+ new AfterNestedInterceptContext( request, response,
servletContext, poppedPageFlow,
+
pushedPageFlowWrapper.getInterceptedForward(),
+
pushedPageFlowWrapper.getInterceptedActionName(),
+ returnAction );
+
+ interceptor.afterNestedIntercept( context );
+
+ if ( context.hasInterceptorForward() )
+ {
+ InterceptorForward fwd = context.getInterceptorForward();
+
+ if ( _log.isDebugEnabled() )
+ {
+ StringBuilder message = new StringBuilder();
+ message.append( "Interceptor " );
+ message.append( interceptor.getClass().getName() );
+ message.append( " after nested page flow: " );
+
+ if ( fwd != null )
+ {
+ message.append( "forwarding to " );
+ message.append( fwd.getPath() );
+ }
+ else
+ {
+ message.append( "returned InterceptorForward is null."
);
+ }
+
+ _log.debug( message.toString() );
+ }
+
+ if ( fwd != null ) fwd.rehydrateRequest( request );
+ return fwd;
+ }
+ }
+ catch ( InterceptorException e )
+ {
+ _log.error( "Exception in " + interceptor.getClass().getName() +
".afterNestedIntercept", e );
+
+ try
+ {
+ return poppedPageFlow.handleException( e, actionMapping, form,
request, response );
+ }
+ catch ( Exception anotherException )
+ {
+ _log.error( "Exception thrown while handling exception.",
anotherException );
+ }
+ }
+
+ //
+ // The interceptor declined to forward us anywhere -- just go to the
originally-intended Forward.
+ //
+ return pushedPageFlowWrapper.getInterceptedForward();
}
}
Modified:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.java?view=diff&rev=126271&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.java&r1=126270&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.java&r2=126271
==============================================================================
---
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.java
(original)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.java
Mon Jan 24 01:03:38 2005
@@ -893,7 +893,7 @@
}
catch ( Exception e )
{
- _log.error( "Exception thrown while handling exception in
onExitNesting()", e );
+ _log.error( "Exception thrown while handling exception.", e );
}
}
finally
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&rev=126271&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java&r1=126270&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java&r2=126271
==============================================================================
---
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 Jan 24 01:03:38 2005
@@ -17,77 +17,79 @@
*/
package org.apache.beehive.netui.pageflow;
+import org.apache.beehive.netui.core.urls.URLRewriterService;
+import
org.apache.beehive.netui.pageflow.actioninterceptor.ActionInterceptorContext;
+import org.apache.beehive.netui.pageflow.actioninterceptor.InterceptorForward;
+import org.apache.beehive.netui.pageflow.config.PageFlowActionFormBean;
+import org.apache.beehive.netui.pageflow.config.PageFlowActionForward;
+import org.apache.beehive.netui.pageflow.config.PageFlowActionMapping;
+import org.apache.beehive.netui.pageflow.handler.ForwardRedirectHandler;
+import org.apache.beehive.netui.pageflow.handler.LoginHandler;
+import org.apache.beehive.netui.pageflow.handler.ReloadableClassHandler;
+import org.apache.beehive.netui.pageflow.internal.AdapterManager;
+import org.apache.beehive.netui.pageflow.internal.ContextCache;
+import org.apache.beehive.netui.pageflow.internal.DefaultURLRewriter;
+import org.apache.beehive.netui.pageflow.internal.FlowControllerAction;
+import org.apache.beehive.netui.pageflow.internal.InternalUtils;
+import org.apache.beehive.netui.pageflow.internal.JavaControlUtils;
+import org.apache.beehive.netui.pageflow.internal.RequestValues;
+import org.apache.beehive.netui.pageflow.internal.interceptor.Interceptor;
+import
org.apache.beehive.netui.pageflow.internal.interceptor.InterceptorException;
+import org.apache.beehive.netui.pageflow.internal.interceptor.Interceptors;
+import org.apache.beehive.netui.pageflow.scoping.ScopedRequest;
+import org.apache.beehive.netui.pageflow.scoping.ScopedServletUtils;
+import org.apache.beehive.netui.script.common.ImplicitObjectUtil;
+import org.apache.beehive.netui.util.DiscoveryUtils;
+import org.apache.beehive.netui.util.FileUtils;
+import org.apache.beehive.netui.util.ServletUtils;
+import org.apache.beehive.netui.util.logging.Logger;
+import org.apache.struts.Globals;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
-import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;
-import org.apache.struts.action.DynaActionFormClass;
-import org.apache.struts.action.DynaActionForm;
+import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionServlet;
+import org.apache.struts.action.DynaActionForm;
+import org.apache.struts.action.DynaActionFormClass;
import org.apache.struts.config.ActionConfig;
-import org.apache.struts.config.ForwardConfig;
import org.apache.struts.config.FormBeanConfig;
+import org.apache.struts.config.ForwardConfig;
import org.apache.struts.config.ModuleConfig;
-import org.apache.struts.Globals;
import org.apache.struts.tiles.TilesRequestProcessor;
import org.apache.struts.tiles.TilesUtil;
import org.apache.struts.tiles.TilesUtilImpl;
import org.apache.struts.tiles.TilesUtilStrutsImpl;
-import org.apache.struts.upload.MultipartRequestWrapper;
import org.apache.struts.upload.MultipartRequestHandler;
+import org.apache.struts.upload.MultipartRequestWrapper;
import org.apache.struts.util.RequestUtils;
import org.apache.struts.util.TokenProcessor;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-import javax.servlet.ServletException;
-import javax.servlet.ServletContext;
import javax.servlet.FilterChain;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
import java.io.IOException;
-import java.io.Serializable;
import java.io.InputStream;
+import java.io.Serializable;
+import java.lang.reflect.Field;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.Enumeration;
-import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
-import java.util.ArrayList;
+import java.util.Map;
import java.util.Properties;
-import java.util.Collections;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.lang.reflect.Field;
-
-import org.apache.beehive.netui.util.logging.Logger;
-import org.apache.beehive.netui.util.ServletUtils;
-import org.apache.beehive.netui.util.FileUtils;
-import org.apache.beehive.netui.util.DiscoveryUtils;
-import org.apache.beehive.netui.core.urls.URLRewriterService;
-import org.apache.beehive.netui.pageflow.config.PageFlowActionForward;
-import org.apache.beehive.netui.pageflow.config.PageFlowActionMapping;
-import org.apache.beehive.netui.pageflow.config.PageFlowActionFormBean;
-import org.apache.beehive.netui.pageflow.interceptor.ActionInterceptorChain;
-import org.apache.beehive.netui.pageflow.interceptor.InterceptorForward;
-import org.apache.beehive.netui.pageflow.internal.ContextCache;
-import org.apache.beehive.netui.pageflow.internal.DefaultURLRewriter;
-import org.apache.beehive.netui.pageflow.internal.RequestValues;
-import org.apache.beehive.netui.pageflow.internal.InternalUtils;
-import org.apache.beehive.netui.pageflow.internal.JavaControlUtils;
-import org.apache.beehive.netui.pageflow.internal.FlowControllerAction;
-import org.apache.beehive.netui.pageflow.internal.AdapterManager;
-import org.apache.beehive.netui.pageflow.scoping.ScopedServletUtils;
-import org.apache.beehive.netui.pageflow.scoping.ScopedRequest;
-import org.apache.beehive.netui.pageflow.handler.ForwardRedirectHandler;
-import org.apache.beehive.netui.pageflow.handler.LoginHandler;
-import org.apache.beehive.netui.pageflow.handler.ReloadableClassHandler;
-import org.apache.beehive.netui.script.common.ImplicitObjectUtil;
import static org.apache.beehive.netui.pageflow.internal.InternalConstants.*;
import static org.apache.beehive.netui.pageflow.PageFlowConstants.*;
@@ -717,7 +719,6 @@
}
}
-
public void process( HttpServletRequest request, HttpServletResponse
response )
throws IOException, ServletException
{
@@ -730,6 +731,20 @@
+ " -----------------------------------" );
}
+ /*
+ List< Interceptor > interceptors = null;
+ RequestInterceptorContext context = new RequestInterceptorContext(
getServletContext(), request, response );
+ try
+ {
+ InterceptorResult result = Interceptors.doPreIntercept( context,
interceptors );
+ if ( result.hasResultOverride() ) return;
+ }
+ catch ( InterceptorException e )
+ {
+ throw new ServletException( e );
+ }
+ */
+
//
// First reinitialize the reloadable class handler. This will bounce
a classloader if necessary.
//
@@ -1800,80 +1815,91 @@
PageFlowJspFilter.preventCache( request );
}
}
-
+
protected ActionForward processActionPerform( HttpServletRequest request,
HttpServletResponse response,
Action action, ActionForm
form, ActionMapping mapping )
throws IOException, ServletException
{
- PageFlowController pfc = null;
ServletContext servletContext = getServletContext();
+ String actionName = InternalUtils.getActionName( mapping );
+ ActionInterceptorContext context = null;
+ List< Interceptor > interceptors = null;
if ( action instanceof FlowControllerAction )
{
FlowController fc = ( ( FlowControllerAction ) action
).getFlowController();
- if ( fc instanceof PageFlowController ) pfc = ( PageFlowController
) fc;
+
+ if ( fc instanceof PageFlowController )
+ {
+ PageFlowController pfc = ( PageFlowController ) fc;
+ context = new ActionInterceptorContext( request, response,
servletContext, pfc, null, actionName );
+ interceptors = context.getActionInterceptors();
+ }
}
- //
- // Run any before-action interceptors.
- //
- if ( ! ActionInterceptorChain.isReturningFromIntercept( request ) &&
pfc != null )
+
+ try
{
- String actionName = InternalUtils.getActionName( mapping );
- ActionInterceptorChain interceptorChain =
- ActionInterceptorChain.getBeforeActionChain( actionName,
request, servletContext );
- if ( interceptorChain != null )
+ //
+ // Run any before-action interceptors.
+ //
+ if ( interceptors != null && !
RequestValues.isReturningFromActionIntercept( request ) )
{
- InterceptorForward interceptorForward =
- interceptorChain.doIntercept( request, response, null,
pfc, actionName );
+ Interceptors.doPreIntercept( context, interceptors );
- if ( interceptorForward != null )
+ if ( context.hasInterceptorForward() )
{
+ InterceptorForward fwd = context.getInterceptorForward();
+
if ( _log.isDebugEnabled() )
{
- _log.debug( "Before-action intercepted in
processMapping; forwarding to "
- + interceptorForward.getPath() );
+ _log.debug( "Action interceptor " +
context.getOverridingInterceptor().getClass().getName()
+ + " before action " + actionName + ":
forwarding to "
+ + fwd != null ? fwd.getPath() : "null [no
forward]" );
}
- return interceptorForward;
+ return fwd;
}
}
- }
- else
- {
- ActionInterceptorChain.setIsReturningFromIntercept( request, false
);
- }
-
- ActionForward ret = super.processActionPerform( request, response,
action, form, mapping );
-
- //
- // Run any after-action interceptors.
- //
- if ( pfc != null )
- {
- String actionName = InternalUtils.getActionName( mapping );
- ActionInterceptorChain interceptorChain =
- ActionInterceptorChain.getAfterActionChain( actionName,
request, servletContext );
- if ( interceptorChain != null )
+ else
{
- InterceptorForward originalForward = ret != null ? new
InterceptorForward( ret, servletContext ) : null;
- InterceptorForward interceptorForward =
- interceptorChain.doIntercept( request, response,
originalForward, pfc, actionName );
+ RequestValues.setReturningFromActionIntercept( request, false
);
+ }
+
+ //
+ // Execute the action.
+ //
+ ActionForward ret = super.processActionPerform( request, response,
action, form, mapping );
+
+ //
+ // Run any after-action interceptors.
+ //
+ if ( interceptors != null )
+ {
+ context.setOriginalForward( ret );
+ Interceptors.doPostIntercept( context, interceptors );
- if ( interceptorForward != null )
+ if ( context.hasInterceptorForward() )
{
+ InterceptorForward fwd = context.getInterceptorForward();
+
if ( _log.isDebugEnabled() )
{
- _log.debug( "After-action intercepted in
processMapping; forwarding to "
- + interceptorForward.getPath() );
+ _log.debug( "Action interceptor " +
context.getOverridingInterceptor().getClass().getName()
+ + " after action " + actionName + ":
forwarding to "
+ + fwd != null ? fwd.getPath() : "null [no
forward]" );
}
- return interceptorForward;
+ return fwd;
}
}
+
+ return ret;
+ }
+ catch ( InterceptorException e )
+ {
+ throw new ServletException( e );
}
-
- return ret;
}
void processActionForward( HttpServletRequest request, HttpServletResponse
response, ActionForward forward )
Modified:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowStack.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowStack.java?view=diff&rev=126271&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowStack.java&r1=126270&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowStack.java&r2=126271
==============================================================================
---
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowStack.java
(original)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowStack.java
Mon Jan 24 01:03:38 2005
@@ -18,12 +18,12 @@
package org.apache.beehive.netui.pageflow;
import org.apache.beehive.netui.util.logging.Logger;
-import org.apache.beehive.netui.pageflow.interceptor.ActionInterceptor;
-import org.apache.beehive.netui.pageflow.interceptor.InterceptorForward;
-import org.apache.beehive.netui.pageflow.interceptor.ActionInterceptorChain;
import org.apache.beehive.netui.pageflow.scoping.ScopedServletUtils;
import org.apache.beehive.netui.pageflow.internal.InternalConstants;
import org.apache.beehive.netui.pageflow.internal.AdapterManager;
+import org.apache.beehive.netui.pageflow.actioninterceptor.ActionInterceptor;
+import org.apache.beehive.netui.pageflow.actioninterceptor.InterceptorForward;
+import
org.apache.beehive.netui.pageflow.actioninterceptor.ActionInterceptorContext;
import javax.servlet.http.HttpSessionBindingListener;
import javax.servlet.http.HttpSessionBindingEvent;
@@ -54,13 +54,20 @@
private PageFlowController _pageFlow;
private ActionInterceptor _interceptor;
private InterceptorForward _interceptedForward;
+ private String _interceptedActionName;
- public PushedPageFlow( PageFlowController pageFlow, ActionInterceptor
interceptor,
- InterceptorForward interceptedFwd )
+ public PushedPageFlow( PageFlowController pageFlow )
{
_pageFlow = pageFlow;
+ }
+
+ public PushedPageFlow( PageFlowController pageFlow, ActionInterceptor
interceptor,
+ InterceptorForward interceptedFwd, String
interceptedActionName )
+ {
+ this( pageFlow );
_interceptor = interceptor;
_interceptedForward = interceptedFwd;
+ _interceptedActionName = interceptedActionName;
}
public PageFlowController getPageFlow()
@@ -68,29 +75,19 @@
return _pageFlow;
}
- public void setPageFlow( PageFlowController pageFlow )
- {
- _pageFlow = pageFlow;
- }
-
public ActionInterceptor getInterceptor()
{
return _interceptor;
}
- public void setInterceptor( ActionInterceptor interceptor )
- {
- _interceptor = interceptor;
- }
-
public InterceptorForward getInterceptedForward()
{
return _interceptedForward;
}
- public void setInterceptedForward( InterceptorForward
interceptedForward )
+ public String getInterceptedActionName()
{
- _interceptedForward = interceptedForward;
+ return _interceptedActionName;
}
}
@@ -226,10 +223,22 @@
*/
public void push( PageFlowController pageFlow, HttpServletRequest request )
{
+ ActionInterceptorContext interceptorContext =
ActionInterceptorContext.getActiveContext( request, true );
+
+ if ( interceptorContext != null )
+ {
+ ActionInterceptor interceptor =
interceptorContext.getOverridingInterceptor();
+ InterceptorForward originalForward =
interceptorContext.getOriginalForward();
+ String actionName = interceptorContext.getActionName();
+ _stack.push( new PushedPageFlow( pageFlow, interceptor,
originalForward, actionName ) );
+ }
+ else
+ {
+ _stack.push( new PushedPageFlow( pageFlow ) );
+ }
+
+ // Tell the page flow that it is on the nesting stack.
pageFlow.setIsOnNestingStack( true );
- ActionInterceptor interceptor =
ActionInterceptorChain.getActiveInterceptor( request );
- InterceptorForward interceptedForward =
ActionInterceptorChain.getInterceptedForward( request, true );
- _stack.push( new PushedPageFlow( pageFlow, interceptor,
interceptedForward ) );
// To ensure that this attribute is replicated for session failover...
ensureFailover( request, pageFlow.getServletContext() );
Added:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/RequestInterceptor.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/RequestInterceptor.java?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/RequestInterceptor.java
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2004 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 org.apache.beehive.netui.pageflow;
+
+import org.apache.beehive.netui.pageflow.internal.interceptor.Interceptor;
+import org.apache.beehive.netui.pageflow.internal.interceptor.InterceptorChain;
+import
org.apache.beehive.netui.pageflow.internal.interceptor.InterceptorException;
+
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletResponse;
+
+public abstract class RequestInterceptor
+ implements Interceptor
+{
+ public void init( Object config )
+ {
+ }
+
+ public final void preInvoke( Object context, InterceptorChain chain )
throws InterceptorException
+ {
+ preRequest( ( RequestInterceptorContext ) context, chain );
+ }
+
+ public abstract void preRequest( RequestInterceptorContext context,
InterceptorChain chain )
+ throws InterceptorException;
+
+ public final void postInvoke( Object context, InterceptorChain chain )
throws InterceptorException
+ {
+ postRequest( ( RequestInterceptorContext ) context, chain );
+ }
+
+ public abstract void postRequest( RequestInterceptorContext context,
InterceptorChain chain )
+ throws InterceptorException;
+}
+
Added:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/RequestInterceptorContext.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/RequestInterceptorContext.java?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/RequestInterceptorContext.java
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2004 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 org.apache.beehive.netui.pageflow;
+
+import javax.servlet.ServletContext;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+
+class RequestInterceptorContext
+{
+ private ServletContext _servletContext;
+ private ServletRequest _request;
+ private ServletResponse _response;
+
+ public RequestInterceptorContext( ServletContext servletContext,
ServletRequest request, ServletResponse response )
+ {
+ _servletContext = servletContext;
+ _request = request;
+ _response = response;
+ }
+
+ public ServletContext getServletContext()
+ {
+ return _servletContext;
+ }
+
+ public ServletRequest getRequest()
+ {
+ return _request;
+ }
+
+ public ServletResponse getResponse()
+ {
+ return _response;
+ }
+}
\ No newline at end of file
Copied:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/ActionInterceptor.java
(from r126260,
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptor.java)
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/ActionInterceptor.java?view=diff&rev=126271&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptor.java&r1=126260&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/ActionInterceptor.java&r2=126271
==============================================================================
---
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptor.java
(original)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/ActionInterceptor.java
Mon Jan 24 01:03:38 2005
@@ -15,13 +15,16 @@
*
* $Header:$
*/
-package org.apache.beehive.netui.pageflow.interceptor;
+package org.apache.beehive.netui.pageflow.actioninterceptor;
-import org.apache.beehive.netui.pageflow.PageFlowController;
+import org.apache.beehive.netui.pageflow.internal.interceptor.Interceptor;
+import org.apache.beehive.netui.pageflow.internal.interceptor.InterceptorChain;
+import
org.apache.beehive.netui.pageflow.internal.interceptor.InterceptorException;
+import
org.apache.beehive.netui.pageflow.internal.interceptor.InterceptorContext;
+import
org.apache.beehive.netui.pageflow.internal.interceptor.InterceptorConfig;
+
+import java.io.Serializable;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.ServletContext;
/**
* Interface for page flow action interceptors. These are configured in
/WEB-INF/netui-config.xml like this:
@@ -59,55 +62,52 @@
* Note that a registered ActionInterceptor is created and cached as a single
instance per ServletContext.
* It should not hold any per-request or per-session state.
*/
-public abstract interface ActionInterceptor
+public abstract class ActionInterceptor
+ implements Interceptor, Serializable
{
+ private ActionInterceptorConfig _config;
+
/**
* Called when this interceptor is being initialized.
*
* @param config the configuration object associated with this interceptor.
- * @param servletContext the ServletContext for the current web
application.
*/
- public void init( ActionInterceptorConfig config, ServletContext
servletContext );
+ public void init( ActionInterceptorConfig config )
+ {
+ _config = config;
+ }
+
+ public void init( InterceptorConfig config )
+ {
+ init( ( ActionInterceptorConfig ) config );
+ }
+
+ public abstract void preAction( ActionInterceptorContext context,
InterceptorChain chain )
+ throws InterceptorException;
- /**
- * Called either before or after (depending on registration; see [EMAIL
PROTECTED] ActionInterceptor}) an action is raised on
- * a page flow.
- *
- * @param request the current HttpServletRequest.
- * @param response the current HttpServletResponse.
- * @param pageFlow the page flow on which the action is being raised.
- * @param originalForward a wrapper for the original URI from the action
that was intercepted. This value will be
- * <code>null</code> if the interceptor was run before the
action, or if the action itself returned
- * <code>null</code>.
- * @param actionName the name of the action being raised.
- * @return an InterceptorForward that changes the destination URI, or
<code>null</code> to allow flow to the
- * intended URI. If the returned InterceptorForward points to
a nested page flow, then
- * [EMAIL PROTECTED] #doPostIntercept} will be called before
the nested page flow returns to the original page
- * flow.
- * @throws Exception
- */
- public InterceptorForward doIntercept( HttpServletRequest request,
HttpServletResponse response,
- PageFlowController pageFlow,
InterceptorForward originalForward,
- String actionName )
- throws Exception;
+ public void preInvoke( InterceptorContext context, InterceptorChain chain
) throws InterceptorException
+ {
+ preAction( ( ActionInterceptorContext ) context, chain );
+ }
- /**
- * Called when returning to the original page flow after an action
interceptor had shown a nested page flow.
- *
- * @param request the current HttpServletRequest.
- * @param response the current HttpServletResponse.
- * @param pageFlow the page flow to which control is being returned.
- * @param originalForward the forward in the original page flow that was
intercepted (through #doIntercept)
- * to transfer control to the nested page flow. This object
may be returned, in which case the
- * original page flow navigates to the same URI it intended to
show before interception occurred.
- * @param returningActionName the action returned by the nested page flow.
If <code>null</code> is returned
- * from this method, then that action will be raised on the
original page flow.
- * @return an InterceptorForward that changes the destination URI when
returning to the original page flow; or
- * <code>null</code> if the original page flow should handle
the nested return normally.
- * @throws Exception
- */
- public InterceptorForward doPostIntercept( HttpServletRequest request,
HttpServletResponse response,
- PageFlowController pageFlow,
InterceptorForward originalForward,
- String returningActionName )
- throws Exception;
+ public abstract void postAction( ActionInterceptorContext context,
InterceptorChain chain )
+ throws InterceptorException;
+
+ public void postInvoke( InterceptorContext context, InterceptorChain chain
) throws InterceptorException
+ {
+ postAction( ( ActionInterceptorContext ) context, chain );
+ }
+
+ public abstract void afterNestedIntercept( AfterNestedInterceptContext
context )
+ throws InterceptorException;
+
+ public ActionInterceptorConfig getConfig()
+ {
+ return _config;
+ }
+
+ protected void setInterceptorForward( InterceptorForward forward,
ActionInterceptorContext context )
+ {
+ context.setInterceptorForward( forward, this );
+ }
}
Deleted:
/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorChain.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorChain.java?view=auto&rev=125998
==============================================================================
Deleted:
/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorChainConfig.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorChainConfig.java?view=auto&rev=125998
==============================================================================
Copied:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/ActionInterceptorConfig.java
(from r126260,
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorConfig.java)
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/ActionInterceptorConfig.java?view=diff&rev=126271&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorConfig.java&r1=126260&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/ActionInterceptorConfig.java&r2=126271
==============================================================================
---
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorConfig.java
(original)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/ActionInterceptorConfig.java
Mon Jan 24 01:03:38 2005
@@ -15,31 +15,35 @@
*
* $Header:$
*/
-package org.apache.beehive.netui.pageflow.interceptor;
+package org.apache.beehive.netui.pageflow.actioninterceptor;
-import java.io.Serializable;
+import
org.apache.beehive.netui.pageflow.internal.interceptor.InterceptorConfig;
+import java.util.Map;
+import java.util.HashMap;
-/**
- * Configuration object used to initialize an [EMAIL PROTECTED]
ActionInterceptor}.
- */
public class ActionInterceptorConfig
- implements Serializable
+ extends InterceptorConfig
{
- private String _interceptorClass;
+ private Map< String, String > _customProperties = new HashMap< String,
String >();
public ActionInterceptorConfig( String interceptorClass )
{
- _interceptorClass = interceptorClass;
+ super( interceptorClass );
}
- public String getInterceptorClass()
+ public Map< String, String > getCustomProperties()
{
- return _interceptorClass;
+ return _customProperties;
}
-
- public void setInterceptorClass( String interceptorClass )
+
+ void addCustomProperty( String name, String value )
+ {
+ _customProperties.put( name, value );
+ }
+
+ public String getCustomProperty( String name )
{
- _interceptorClass = interceptorClass;
+ return _customProperties.get( name );
}
}
Added:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/ActionInterceptorContext.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/ActionInterceptorContext.java?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/ActionInterceptorContext.java
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,361 @@
+/*
+ * Copyright 2004 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 org.apache.beehive.netui.pageflow.actioninterceptor;
+
+import org.apache.beehive.netui.pageflow.PageFlowController;
+import
org.apache.beehive.netui.pageflow.internal.interceptor.InterceptorContext;
+import org.apache.beehive.netui.pageflow.internal.interceptor.Interceptor;
+import org.apache.beehive.netui.pageflow.internal.interceptor.Interceptors;
+import org.apache.beehive.netui.util.logging.Logger;
+import org.apache.beehive.netui.util.config.bean.*;
+import org.apache.beehive.netui.util.config.ConfigUtil;
+import org.apache.struts.action.ActionForward;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletRequest;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.concurrent.ConcurrentHashMap;
+import java.io.Serializable;
+
+import static
org.apache.beehive.netui.pageflow.internal.InternalConstants.ATTR_PREFIX;
+
+
+public class ActionInterceptorContext
+ extends InterceptorContext
+{
+ private static final String ACTIVE_INTERCEPTOR_CONTEXT_ATTR = ATTR_PREFIX
+ "interceptorContext";
+ private static final String CACHE_ATTR = ATTR_PREFIX +
"actionInterceptorConfig";
+
+ private static final Logger _log = Logger.getInstance(
ActionInterceptorContext.class );
+
+ private transient ServletContext _servletContext;
+ private transient HttpServletRequest _request;
+ private transient HttpServletResponse _response;
+ private PageFlowController _pageFlow;
+ private InterceptorForward _originalForward;
+ private String _actionName;
+
+
+ public ActionInterceptorContext( HttpServletRequest request,
HttpServletResponse response,
+ ServletContext servletContext,
PageFlowController controller,
+ InterceptorForward originalForward,
String actionName )
+ {
+ _request = request;
+ _response = response;
+ _pageFlow = controller;
+ _originalForward = originalForward;
+ _actionName = actionName;
+ _servletContext = servletContext;
+ }
+
+ public HttpServletRequest getRequest()
+ {
+ return _request;
+ }
+
+ public HttpServletResponse getResponse()
+ {
+ return _response;
+ }
+
+ /**
+ * Get the page flow on which the action is being raised.
+ */
+ public PageFlowController getPageFlow()
+ {
+ return _pageFlow;
+ }
+
+ /**
+ *
+ * Get a wrapper for the original URI from the action that was
intercepted. This value will be <code>null</code>
+ * if the interceptor was run before the action, or if the action itself
returned <code>null</code>.
+ */
+ public InterceptorForward getOriginalForward()
+ {
+ return _originalForward;
+ }
+
+ /**
+ * Get the name of the action being raised.
+ */
+ public String getActionName()
+ {
+ return _actionName;
+ }
+
+ public ServletContext getServletContext()
+ {
+ return _servletContext;
+ }
+
+ /**
+ *
+ * Set an [EMAIL PROTECTED] InterceptorForward} that changes the
destination URI of the intercepted action. If the
+ * InterceptorForward points to a nested page flow, then [EMAIL
PROTECTED] ActionInterceptor#afterNestedIntercept} will be
+ * called before the nested page flow returns to the original page flow.
+ */
+ public void setInterceptorForward( InterceptorForward fwd,
ActionInterceptor interceptor )
+ {
+ setResultOverride( fwd, interceptor );
+
+ //
+ // If there was no original forward (i.e., this is happening before
the action was invoked), create a
+ // pseudo-forward out of the original request.
+ //
+ if ( _originalForward == null ) _originalForward = new
OriginalForward( _request );
+
+ //
+ // Store this context in the request.
+ //
+ _request.setAttribute( ACTIVE_INTERCEPTOR_CONTEXT_ATTR, this );
+ }
+
+ public InterceptorForward getResultOverride()
+ {
+ return ( InterceptorForward ) super.getResultOverride();
+ }
+
+ public ActionInterceptor getOverridingInterceptor()
+ {
+ return ( ActionInterceptor ) super.getOverridingInterceptor();
+ }
+
+ public InterceptorForward getInterceptorForward()
+ {
+ return getResultOverride();
+ }
+
+ public boolean hasInterceptorForward()
+ {
+ return hasResultOverride();
+ }
+
+ public static ActionInterceptorContext getActiveContext( ServletRequest
request, boolean consume )
+ {
+ ActionInterceptorContext context =
+ ( ActionInterceptorContext ) request.getAttribute(
ACTIVE_INTERCEPTOR_CONTEXT_ATTR );
+ if ( consume ) request.removeAttribute(
ACTIVE_INTERCEPTOR_CONTEXT_ATTR );
+ return context;
+ }
+
+
+ private static class OriginalForward extends InterceptorForward
+ {
+ private Map _savedAttrs;
+
+
+ public OriginalForward( HttpServletRequest request )
+ {
+ super( request );
+ saveRequestAttrs( request );
+ }
+
+ private void saveRequestAttrs( ServletRequest request )
+ {
+ _savedAttrs = new HashMap();
+
+ for ( Enumeration e = request.getAttributeNames();
e.hasMoreElements(); )
+ {
+ String attrName = ( String ) e.nextElement();
+ Object attrVal = request.getAttribute( attrName );
+
+ if ( attrVal instanceof Serializable )
+ {
+ _savedAttrs.put( attrName, attrVal );
+ }
+ else
+ {
+ if ( _log.isWarnEnabled() )
+ {
+ _log.warn( "Dropping non-serializable request
attribute " + attrName + " (" + attrVal + ")." );
+ }
+ }
+ }
+ }
+
+ public void rehydrateRequest( ServletRequest request )
+ {
+ if ( _savedAttrs != null )
+ {
+ for ( Iterator i = _savedAttrs.entrySet().iterator();
i.hasNext(); )
+ {
+ Map.Entry entry = ( Map.Entry ) i.next();
+
+ String attrName = ( String ) entry.getKey();
+ if ( request.getAttribute( attrName ) == null )
+ {
+ request.setAttribute( attrName, entry.getValue() );
+ }
+ }
+ }
+ }
+ }
+
+ public List< Interceptor > getActionInterceptors()
+ {
+ ServletContext servletContext = getServletContext();
+ ConcurrentHashMap< String, HashMap< String, ArrayList< Interceptor > >
> cache =
+ ( ConcurrentHashMap< String, HashMap< String, ArrayList<
Interceptor > > > ) servletContext.getAttribute( CACHE_ATTR );
+
+ if ( cache == null )
+ {
+ //
+ // Don't have to synchronize here. If by some chance two initial
requests come in at the same time,
+ // one of the caches will get overwritten in the ServletContext,
but it will just get recreated the
+ // next time.
+ //
+ cache = new ConcurrentHashMap< String, HashMap< String, ArrayList<
Interceptor > > >();
+ servletContext.setAttribute( CACHE_ATTR, cache );
+ }
+
+ String modulePath = getPageFlow().getModulePath();
+ String actionName = getActionName();
+ HashMap< String, ArrayList< Interceptor > > cacheByPageFlow =
cache.get( modulePath );
+ if ( cacheByPageFlow != null )
+ {
+ List< Interceptor > interceptors = cacheByPageFlow.get( actionName
);
+ if ( interceptors != null ) return interceptors;
+ }
+
+ //
+ // We didn't find it in the cache -- build it.
+ //
+ if ( cacheByPageFlow == null ) cacheByPageFlow = new HashMap< String,
ArrayList< Interceptor > >();
+ PageflowActionInterceptors config =
ConfigUtil.getConfig().getPageflowActionInterceptors();
+ ArrayList< Interceptor > interceptorsList = new ArrayList< Interceptor
>();
+
+ if ( config == null )
+ {
+ cacheByPageFlow.put( actionName, interceptorsList );
+ cache.put( modulePath, cacheByPageFlow );
+ return interceptorsList;
+ }
+
+ //
+ // Global interceptors.
+ //
+ PageflowActionInterceptors.Global globalInterceptors =
config.getGlobal();
+
+ if ( globalInterceptors != null )
+ {
+ addInterceptors( globalInterceptors.getActionInterceptorArray(),
interceptorsList );
+ addSimpleInterceptors(
globalInterceptors.getSimpleActionInterceptorArray(), interceptorsList );
+ }
+
+ //
+ // Per-pageflow and per-action interceptors.
+ //
+ String pageFlowURI = getPageFlow().getURI();
+ PageflowActionInterceptors.PerPageflow[] perPageFlowInterceptorsConfig
= config.getPerPageflowArray();
+
+ if ( perPageFlowInterceptorsConfig != null )
+ {
+ for ( int i = 0; i < perPageFlowInterceptorsConfig.length; i++ )
+ {
+ PageflowActionInterceptors.PerPageflow ppfi =
perPageFlowInterceptorsConfig[i];
+
+ if ( ppfi != null && pageFlowURI.equals( ppfi.getPageflowUri()
) )
+ {
+ //
+ // This is a matching page flow -- add per-pageflow
interceptors.
+ //
+ addInterceptors(
perPageFlowInterceptorsConfig[i].getActionInterceptorArray(), interceptorsList
);
+ addSimpleInterceptors(
perPageFlowInterceptorsConfig[i].getSimpleActionInterceptorArray(),
+ interceptorsList );
+
+ PageflowActionInterceptors.PerPageflow.PerAction[]
perActionConfigs =
+
perPageFlowInterceptorsConfig[i].getPerActionArray();
+
+ if ( perActionConfigs != null )
+ {
+ for ( int j = 0; j < perActionConfigs.length; j++ )
+ {
+ PageflowActionInterceptors.PerPageflow.PerAction
perActionConfig = perActionConfigs[j];
+
+ if ( perActionConfig != null && actionName.equals(
perActionConfig.getActionName() ) )
+ {
+ //
+ // This is a matching action -- add per-action
interceptors.
+ //
+ addInterceptors(
perActionConfig.getActionInterceptorArray(), interceptorsList );
+ addSimpleInterceptors(
perActionConfig.getSimpleActionInterceptorArray(),
+ interceptorsList );
+ }
+ }
+ }
+ }
+ }
+ }
+
+ cacheByPageFlow.put( actionName, interceptorsList );
+ cache.put( modulePath, cacheByPageFlow );
+ return interceptorsList;
+ }
+
+ private static void addInterceptors(
org.apache.beehive.netui.util.config.bean.ActionInterceptor[] configBeans,
+ List< Interceptor > interceptorsList )
+ {
+ if ( configBeans != null )
+ {
+ for ( int i = 0; i < configBeans.length; i++ )
+ {
+ org.apache.beehive.netui.util.config.bean.ActionInterceptor
configBean = configBeans[i];
+ String className = configBean.getInterceptorClass();
+ ActionInterceptorConfig config = new ActionInterceptorConfig(
className );
+ CustomProperty[] customProps =
configBean.getCustomPropertyArray();
+
+ if ( customProps != null )
+ {
+ for ( int j = 0; j < customProps.length; j++ )
+ {
+ CustomProperty customProp = customProps[j];
+ config.addCustomProperty( customProp.getName(),
customProp.getValue() );
+ }
+ }
+
+ Interceptors.addInterceptor( config, ActionInterceptor.class,
interceptorsList );
+ }
+ }
+ }
+
+ private static void addSimpleInterceptors(
org.apache.beehive.netui.util.config.bean.SimpleActionInterceptor[] configBeans,
+ List< Interceptor >
interceptorsList )
+ {
+ for ( int i = 0; i < configBeans.length; i++ )
+ {
+ org.apache.beehive.netui.util.config.bean.SimpleActionInterceptor
configBean = configBeans[i];
+ String path = configBean.getInterceptPath();
+ boolean afterAction = configBean.getAfterAction();
+ SimpleActionInterceptorConfig config = new
SimpleActionInterceptorConfig( path, afterAction );
+ interceptorsList.add( new SimpleActionInterceptor( config ) );
+ }
+ }
+
+ public void setOriginalForward( ActionForward origFwd )
+ {
+ _originalForward = origFwd != null ? new InterceptorForward( origFwd,
_servletContext, _pageFlow ) : null;
+ }
+}
Deleted:
/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorsConfig.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorsConfig.java?view=auto&rev=125998
==============================================================================
Added:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/AfterNestedInterceptContext.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/AfterNestedInterceptContext.java?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/AfterNestedInterceptContext.java
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2004 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 org.apache.beehive.netui.pageflow.actioninterceptor;
+
+import org.apache.beehive.netui.pageflow.PageFlowController;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.ServletContext;
+
+public class AfterNestedInterceptContext
+ extends ActionInterceptorContext
+{
+ private String _returnAction;
+
+ public AfterNestedInterceptContext( HttpServletRequest request,
HttpServletResponse response,
+ ServletContext servletContext,
PageFlowController controller,
+ InterceptorForward originalForward,
String actionName,
+ String returnAction )
+ {
+ super( request, response, servletContext, controller, originalForward,
actionName );
+ _returnAction = returnAction;
+ }
+
+ /**
+ * Get the return action from the nested page flow that intercepted the
original page flow's action.
+ */
+ public String getReturnAction()
+ {
+ return _returnAction;
+ }
+}
Copied:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/InterceptorForward.java
(from r126260,
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/InterceptorForward.java)
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/InterceptorForward.java?view=diff&rev=126271&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/InterceptorForward.java&r1=126260&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/InterceptorForward.java&r2=126271
==============================================================================
---
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/InterceptorForward.java
(original)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/InterceptorForward.java
Mon Jan 24 01:03:38 2005
@@ -15,13 +15,16 @@
*
* $Header:$
*/
-package org.apache.beehive.netui.pageflow.interceptor;
+package org.apache.beehive.netui.pageflow.actioninterceptor;
import org.apache.beehive.netui.pageflow.Forward;
+import org.apache.beehive.netui.pageflow.PageFlowController;
+import
org.apache.beehive.netui.pageflow.internal.interceptor.InterceptorException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.ServletContext;
import java.net.URI;
+import java.net.URISyntaxException;
import org.apache.struts.action.ActionForward;
@@ -31,21 +34,26 @@
*/
public class InterceptorForward extends Forward
{
- InterceptorForward( Forward originalForward )
+ protected InterceptorForward( Forward originalForward )
{
super( originalForward );
}
/**
- * Internal. Initialize from an existing Struts ActionForward
- * @exclude
+ * Initialize from an existing Struts ActionForward
*/
- public InterceptorForward( ActionForward originalForward, ServletContext
servletContext )
+ InterceptorForward( ActionForward originalForward, ServletContext
servletContext, PageFlowController pageFlow )
{
super( originalForward, servletContext );
+
+ if ( ! getContextRelative() )
+ {
+ setPath( pageFlow.getModulePath() + getPath() );
+ setContextRelative( true );
+ }
}
- InterceptorForward( HttpServletRequest request )
+ protected InterceptorForward( HttpServletRequest request )
{
super( request );
}
Copied:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/OriginalForward.java
(from r126260,
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/OriginalForward.java)
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/OriginalForward.java?view=diff&rev=126271&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/OriginalForward.java&r1=126260&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/OriginalForward.java&r2=126271
==============================================================================
---
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/OriginalForward.java
(original)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/OriginalForward.java
Mon Jan 24 01:03:38 2005
@@ -15,7 +15,7 @@
*
* $Header:$
*/
-package org.apache.beehive.netui.pageflow.interceptor;
+package org.apache.beehive.netui.pageflow.actioninterceptor;
import org.apache.beehive.netui.util.logging.Logger;
import org.apache.beehive.netui.pageflow.Forward;
Added:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/SimpleActionInterceptor.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/SimpleActionInterceptor.java?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/SimpleActionInterceptor.java
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2004 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 org.apache.beehive.netui.pageflow.actioninterceptor;
+
+import
org.apache.beehive.netui.pageflow.internal.interceptor.InterceptorException;
+import org.apache.beehive.netui.pageflow.internal.interceptor.InterceptorChain;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+class SimpleActionInterceptor
+ extends ActionInterceptor
+{
+ public SimpleActionInterceptor( SimpleActionInterceptorConfig config )
+ {
+ init( config );
+ }
+
+ public void preAction( ActionInterceptorContext context, InterceptorChain
chain )
+ throws InterceptorException
+ {
+ if ( ! getConfig().isAfterAction() ) doit( context, chain );
+ }
+
+ public void postAction( ActionInterceptorContext context, InterceptorChain
chain )
+ throws InterceptorException
+ {
+ if ( getConfig().isAfterAction() ) doit( context, chain );
+ }
+
+ private void doit( ActionInterceptorContext context, InterceptorChain
chain )
+ throws InterceptorException
+ {
+ try
+ {
+ String path = getConfig().getPath();
+ setInterceptorForward( new InterceptorForward( new URI( path ) ),
context );
+ chain.continueChain();
+ }
+ catch ( URISyntaxException e )
+ {
+ throw new InterceptorException( e );
+ }
+ }
+
+ public void afterNestedIntercept( AfterNestedInterceptContext context )
throws InterceptorException
+ {
+ }
+
+ public SimpleActionInterceptorConfig getConfig()
+ {
+ return ( SimpleActionInterceptorConfig ) super.getConfig();
+ }
+}
Added:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/SimpleActionInterceptorConfig.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/SimpleActionInterceptorConfig.java?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/actioninterceptor/SimpleActionInterceptorConfig.java
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2004 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 org.apache.beehive.netui.pageflow.actioninterceptor;
+
+class SimpleActionInterceptorConfig
+ extends ActionInterceptorConfig
+{
+ private String _path;
+ private boolean _afterAction;
+
+ public SimpleActionInterceptorConfig( String path, boolean afterAction )
+ {
+ super( SimpleActionInterceptor.class.getName() );
+ _path = path;
+ _afterAction = afterAction;
+ }
+
+ public String getPath()
+ {
+ return _path;
+ }
+
+ public boolean isAfterAction()
+ {
+ return _afterAction;
+ }
+}
Modified:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/AdapterManager.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/AdapterManager.java?view=diff&rev=126271&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/AdapterManager.java&r1=126270&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/AdapterManager.java&r2=126271
==============================================================================
---
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/AdapterManager.java
(original)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/AdapterManager.java
Mon Jan 24 01:03:38 2005
@@ -21,6 +21,15 @@
import org.apache.beehive.netui.pageflow.ServletContainerAdapter;
import org.apache.beehive.netui.util.logging.Logger;
import org.apache.beehive.netui.util.DiscoveryUtils;
+import org.apache.commons.discovery.resource.classes.DiscoverClasses;
+import org.apache.commons.discovery.resource.ClassLoaders;
+import org.apache.commons.discovery.resource.names.DiscoverServiceNames;
+import org.apache.commons.discovery.ResourceClassIterator;
+import org.apache.commons.discovery.ResourceClass;
+import org.apache.commons.discovery.ResourceNameIterator;
+import org.apache.commons.discovery.DiscoveryException;
+import org.apache.commons.discovery.tools.DiscoverClass;
+import org.apache.commons.discovery.tools.SPInterface;
import javax.servlet.ServletContext;
@@ -111,6 +120,24 @@
return null;
}
+ private static Class loadClass( ClassLoaders classLoaders, String
className, Class spiClass )
+ {
+ for ( int i = 0; i < classLoaders.size(); ++i )
+ {
+ try
+ {
+ return classLoaders.get( i ).loadClass( className );
+ }
+ catch ( ClassNotFoundException e )
+ {
+ // ignore
+ }
+ }
+
+ _log.error( "Could not load class " + className + " to implement " +
spiClass.getName() );
+ return null;
+ }
+
private static ServletContainerAdapter createServletContainerAdapter(
ServletContext servletContext )
{
String adapterClassName = System.getProperty(
SERVLET_CONTAINER_ADAPTER_PROP );
@@ -128,15 +155,23 @@
}
}
- Class[] classes = DiscoveryUtils.getImplementorClasses(
ServletContainerAdapter.class );
-
- for ( int i = 0; i < classes.length; i++ )
+
+ ClassLoaders loaders = ClassLoaders.getAppLoaders(
ServletContainerAdapter.class, AdapterManager.class, true );
+ DiscoverServiceNames dsn = new DiscoverServiceNames( loaders );
+ ResourceNameIterator i = dsn.findResourceNames(
ServletContainerAdapter.class.getName() );
+
+ while ( i.hasNext() )
{
- ServletContainerAdapter sa =
- ( ServletContainerAdapter ) tryAdapter( classes[i],
servletContext );
- if ( sa != null ) return sa;
+ Class adapterClass = loadClass( loaders, i.nextResourceName(),
ServletContainerAdapter.class );
+
+ if ( adapterClass != null )
+ {
+ ServletContainerAdapter sa =
+ ( ServletContainerAdapter ) tryAdapter( adapterClass,
servletContext );
+ if ( sa != null ) return sa;
+ }
}
-
+
_log.info( "No ServletContainerAdapter specified or discovered; using
" + DefaultServletContainerAdapter.class );
ServletContainerAdapter sa =
new DefaultServletContainerAdapter()
Modified:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/RequestValues.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/RequestValues.java?view=diff&rev=126271&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/RequestValues.java&r1=126270&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/RequestValues.java&r2=126271
==============================================================================
---
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/RequestValues.java
(original)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/RequestValues.java
Mon Jan 24 01:03:38 2005
@@ -38,6 +38,7 @@
private static final String CURRENT_FLOWCONTROLLER_ATTR = ATTR_PREFIX +
"flowController";
private static final String VIEW_RENDERER_ATTR = ATTR_PREFIX +
"viewRenderer";
private static final String PREVIOUS_PAGE_INFO_ATTR = ATTR_PREFIX +
"prevPageInfo";
+ private static final String RETURNING_FROM_ACTION_INTERCEPT_ATTR =
ATTR_PREFIX + "interceptReturn";
public static boolean isForwardedRequest( ServletRequest request )
@@ -143,5 +144,22 @@
public static void setPreviousPageInfo( ServletRequest request,
PreviousPageInfo previousPageInfo )
{
request.setAttribute( PREVIOUS_PAGE_INFO_ATTR, previousPageInfo );
+ }
+
+ public static void setReturningFromActionIntercept( ServletRequest
request, boolean isReturning )
+ {
+ if ( isReturning )
+ {
+ request.setAttribute( RETURNING_FROM_ACTION_INTERCEPT_ATTR,
Boolean.TRUE );
+ }
+ else
+ {
+ request.removeAttribute( RETURNING_FROM_ACTION_INTERCEPT_ATTR );
+ }
+ }
+
+ public static boolean isReturningFromActionIntercept( ServletRequest
request )
+ {
+ return request.getAttribute( RETURNING_FROM_ACTION_INTERCEPT_ATTR ) !=
null;
}
}
Added:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/interceptor/Interceptor.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/interceptor/Interceptor.java?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/interceptor/Interceptor.java
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2004 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 org.apache.beehive.netui.pageflow.internal.interceptor;
+
+/**
+ * Base class for all interceptors.
+ */
+// TODO: this interface is in internal because it needs to move to a common
area.
+// TODO: the controls interceptor model
+public interface Interceptor
+{
+ public void init( InterceptorConfig config );
+
+ public void preInvoke( InterceptorContext context, InterceptorChain chain )
+ throws InterceptorException;
+
+ public void postInvoke( InterceptorContext context, InterceptorChain chain
)
+ throws InterceptorException;
+}
+
Added:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/interceptor/InterceptorChain.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/interceptor/InterceptorChain.java?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/interceptor/InterceptorChain.java
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2004 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 org.apache.beehive.netui.pageflow.internal.interceptor;
+
+import java.util.List;
+import java.util.LinkedList;
+
+public abstract class InterceptorChain
+{
+ private LinkedList< Interceptor > _chain = new LinkedList< Interceptor >();
+ private InterceptorContext _context;
+
+ protected InterceptorChain( InterceptorContext context, List< Interceptor
> interceptors )
+ {
+ _context = context;
+ _chain.addAll( interceptors );
+ }
+
+ public void continueChain()
+ throws InterceptorException
+ {
+ if ( ! _chain.isEmpty() )
+ {
+ invoke( _chain.remove() );
+ }
+ }
+
+ protected abstract void invoke( Interceptor interceptor ) throws
InterceptorException;
+
+ public InterceptorContext getContext()
+ {
+ return _context;
+ }
+}
Added:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/interceptor/InterceptorConfig.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/interceptor/InterceptorConfig.java?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/interceptor/InterceptorConfig.java
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2004 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 org.apache.beehive.netui.pageflow.internal.interceptor;
+
+import java.io.Serializable;
+
+public abstract class InterceptorConfig
+ implements Serializable
+{
+ private String _interceptorClass;
+
+ protected InterceptorConfig()
+ {
+ }
+
+ protected InterceptorConfig( String interceptorClass )
+ {
+ _interceptorClass = interceptorClass;
+ }
+
+ public String getInterceptorClass()
+ {
+ return _interceptorClass;
+ }
+
+ public void setInterceptorClass( String interceptorClass )
+ {
+ _interceptorClass = interceptorClass;
+ }
+}
Added:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/interceptor/InterceptorContext.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/interceptor/InterceptorContext.java?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/interceptor/InterceptorContext.java
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2004 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 org.apache.beehive.netui.pageflow.internal.interceptor;
+
+import java.io.Serializable;
+
+public class InterceptorContext
+ implements Serializable
+{
+ private Object _resultOverride;
+ private Interceptor _overridingInterceptor;
+
+ public void setResultOverride( Object newResult, Interceptor interceptor )
+ {
+ _resultOverride = newResult;
+ _overridingInterceptor = interceptor;
+ }
+
+ public boolean hasResultOverride()
+ {
+ return _overridingInterceptor != null;
+ }
+
+ public Object getResultOverride()
+ {
+ return _resultOverride;
+ }
+
+ public Interceptor getOverridingInterceptor()
+ {
+ return _overridingInterceptor;
+ }
+
+}
Added:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/interceptor/InterceptorException.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/interceptor/InterceptorException.java?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/interceptor/InterceptorException.java
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2004 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 org.apache.beehive.netui.pageflow.internal.interceptor;
+
+public class InterceptorException
+ extends Exception
+{
+ public InterceptorException( String message )
+ {
+ super( message );
+ }
+
+ public InterceptorException( String message, Throwable cause )
+ {
+ super( message, cause );
+ }
+
+ public InterceptorException( Throwable cause )
+ {
+ super( cause );
+ }
+}
Added:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/interceptor/Interceptors.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/interceptor/Interceptors.java?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/interceptor/Interceptors.java
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,139 @@
+/*
+ * Copyright 2004 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 org.apache.beehive.netui.pageflow.internal.interceptor;
+
+
+import org.apache.beehive.netui.util.DiscoveryUtils;
+import org.apache.beehive.netui.util.logging.Logger;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Collection;
+
+public class Interceptors
+{
+ private static final Logger _log = Logger.getInstance( Interceptors.class
);
+
+ public static void doPreIntercept( InterceptorContext context, List<
Interceptor > interceptors )
+ throws InterceptorException
+ {
+ PreInvokeInterceptorChain chain = new PreInvokeInterceptorChain(
context, interceptors );
+ chain.continueChain();
+ }
+
+ public static void doPostIntercept( InterceptorContext context, List<
Interceptor > interceptors )
+ throws InterceptorException
+ {
+ PostInvokeInterceptorChain chain = new PostInvokeInterceptorChain(
context, interceptors );
+ chain.continueChain();
+ }
+
+ /**
+ * Instantiates an interceptor, based on the class name in the given
InterceptorConfig.
+ *
+ * @param config the InterceptorConfig used to determine the interceptor
class.
+ * @param baseClassOrInterface the required base class or interface. May
be <code>null</code>.
+ * @return an initialized Interceptor, or <code>null</code> if an error
occurred.
+ */
+ public static Interceptor createInterceptor( InterceptorConfig config,
Class baseClassOrInterface )
+ {
+ ClassLoader cl = DiscoveryUtils.getClassLoader();
+ String className = config.getInterceptorClass();
+
+ try
+ {
+ Class interceptorClass = cl.loadClass( className );
+
+ if ( baseClassOrInterface != null && !
baseClassOrInterface.isAssignableFrom( interceptorClass ) )
+ {
+ _log.error( "Interceptor " + interceptorClass.getName() + "
does not implement or extend "
+ + baseClassOrInterface.getName() );
+ return null;
+ }
+
+ Interceptor interceptor = ( Interceptor )
interceptorClass.newInstance();
+ interceptor.init( config );
+ return interceptor;
+ }
+ catch ( ClassNotFoundException e )
+ {
+ _log.error( "Could not find interceptor class " + className );
+ }
+ catch ( InstantiationException e )
+ {
+ _log.error( "Could not instantiate interceptor class " +
className, e );
+ }
+ catch ( IllegalAccessException e )
+ {
+ _log.error( "Could not instantiate interceptor class " +
className, e );
+ }
+ catch ( ClassCastException e )
+ {
+ _log.error( "Interceptor class " + className + " does not
implement " + Interceptor.class.getName() );
+ }
+
+ return null;
+ }
+
+ /**
+ * Instantiates an interceptor, based on the class name in the given
InterceptorConfig, and adds it to the
+ * given collection of interceptors.
+ *
+ * @param config the InterceptorConfig used to determine the interceptor
class.
+ * @param baseClassOrInterface the required base class or interface. May
be <code>null</code>.
+ * @param interceptors the List of interceptors to which to add.
+ * @return an initialized Interceptor, or <code>null</code> if an error
occurred.
+ */
+ public static Interceptor addInterceptor( InterceptorConfig config, Class
baseClassOrInterface,
+ List< Interceptor > interceptors
)
+ {
+ Interceptor interceptor = createInterceptor( config,
baseClassOrInterface );
+ if ( interceptor != null ) interceptors.add( interceptor );
+ return interceptor;
+ }
+
+ private static final class PreInvokeInterceptorChain
+ extends InterceptorChain
+ {
+ public PreInvokeInterceptorChain( InterceptorContext context, List<
Interceptor > interceptors )
+ {
+ super( context, interceptors );
+ }
+
+ protected void invoke( Interceptor interceptor )
+ throws InterceptorException
+ {
+ interceptor.preInvoke( getContext(), this );
+ }
+ }
+
+ private static final class PostInvokeInterceptorChain
+ extends InterceptorChain
+ {
+ public PostInvokeInterceptorChain( InterceptorContext context, List<
Interceptor > interceptors )
+ {
+ super( context, interceptors );
+ }
+
+ protected void invoke( Interceptor interceptor )
+ throws InterceptorException
+ {
+ interceptor.postInvoke( getContext(), this );
+ }
+ }
+}
Deleted:
/incubator/beehive/trunk/netui/src/tomcat-webapp/5x/META-INF/services/org.apache.beehive.netui.pageflow.ServerAdapter
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tomcat-webapp/5x/META-INF/services/org.apache.beehive.netui.pageflow.ServerAdapter?view=auto&rev=126270
==============================================================================
Copied:
incubator/beehive/trunk/netui/src/tomcat-webapp/5x/META-INF/services/org.apache.beehive.netui.pageflow.ServletContainerAdapter
(from r125998,
incubator/beehive/trunk/netui/src/tomcat-webapp/5x/META-INF/services/org.apache.beehive.netui.pageflow.ServerAdapter)
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tomcat-webapp/5x/META-INF/services/org.apache.beehive.netui.pageflow.ServletContainerAdapter?view=diff&rev=126271&p1=incubator/beehive/trunk/netui/src/tomcat-webapp/5x/META-INF/services/org.apache.beehive.netui.pageflow.ServerAdapter&r1=125998&p2=incubator/beehive/trunk/netui/src/tomcat-webapp/5x/META-INF/services/org.apache.beehive.netui.pageflow.ServletContainerAdapter&r2=126271
==============================================================================
---
incubator/beehive/trunk/netui/src/tomcat-webapp/5x/META-INF/services/org.apache.beehive.netui.pageflow.ServerAdapter
(original)
+++
incubator/beehive/trunk/netui/src/tomcat-webapp/5x/META-INF/services/org.apache.beehive.netui.pageflow.ServletContainerAdapter
Mon Jan 24 01:03:38 2005
@@ -1 +1 @@
-org.apache.beehive.netui.tomcat.TomcatServerAdapter
+org.apache.beehive.netui.tomcat.TomcatServletContainerAdapter
Modified: incubator/beehive/trunk/netui/src/util/schema/netui-config.xsd
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/util/schema/netui-config.xsd?view=diff&rev=126271&p1=incubator/beehive/trunk/netui/src/util/schema/netui-config.xsd&r1=126270&p2=incubator/beehive/trunk/netui/src/util/schema/netui-config.xsd&r2=126271
==============================================================================
--- incubator/beehive/trunk/netui/src/util/schema/netui-config.xsd
(original)
+++ incubator/beehive/trunk/netui/src/util/schema/netui-config.xsd Mon Jan
24 01:03:38 2005
@@ -22,9 +22,24 @@
</xsd:complexType>
</xsd:element>
+ <xsd:complexType name="custom-property">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string" minOccurs="1"
maxOccurs="1"/>
+ <xsd:element name="value" type="xsd:string" minOccurs="1"
maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
<xsd:complexType name="action-interceptor">
<xsd:sequence>
<xsd:element name="interceptor-class" type="xsd:string"
minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="custom-property" type="netui:custom-property"
minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="simple-action-interceptor">
+ <xsd:sequence>
+ <xsd:element name="intercept-path" type="xsd:string" minOccurs="1"
maxOccurs="1"/>
+ <xsd:element name="after-action" type="xsd:boolean" minOccurs="0"
maxOccurs="1" default="false"/>
</xsd:sequence>
</xsd:complexType>
@@ -33,17 +48,23 @@
<xsd:element name="global" minOccurs="0" maxOccurs="1">
<xsd:complexType>
<xsd:sequence>
- <xsd:element name="before-action" minOccurs="0"
maxOccurs="1">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="action-interceptor"
type="netui:action-interceptor" minOccurs="1" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="after-action" minOccurs="0"
maxOccurs="1">
+ <xsd:element name="simple-action-interceptor"
type="netui:simple-action-interceptor" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="action-interceptor"
type="netui:action-interceptor" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="per-pageflow" minOccurs="0"
maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="pageflow-uri" type="xsd:string"
minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="simple-action-interceptor"
type="netui:simple-action-interceptor" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="action-interceptor"
type="netui:action-interceptor" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="per-action" minOccurs="0"
maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
- <xsd:element name="action-interceptor"
type="netui:action-interceptor" minOccurs="1" maxOccurs="unbounded"/>
+ <xsd:element name="action-name"
type="xsd:string" minOccurs="1" maxOccurs="1"/>
+ <xsd:element
name="simple-action-interceptor" type="netui:simple-action-interceptor"
minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="action-interceptor"
type="netui:action-interceptor" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
Modified:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/local-netui-config.xml
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/local-netui-config.xml?view=diff&rev=126271&p1=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/local-netui-config.xml&r1=126270&p2=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/local-netui-config.xml&r2=126271
==============================================================================
---
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/local-netui-config.xml
(original)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/local-netui-config.xml
Mon Jan 24 01:03:38 2005
@@ -13,24 +13,104 @@
</expression-languages>
<pageflow-action-interceptors>
+ <!-- for the ActionInterceptorsGlobal test -->
<global>
- <before-action>
+ <action-interceptor>
+
<interceptor-class>miniTests.actionInterceptors.GlobalInterceptor</interceptor-class>
+ <custom-property>
+ <name>prop1</name>
+ <value>value1</value>
+ </custom-property>
+ <custom-property>
+ <name>prop2</name>
+ <value>value2</value>
+ </custom-property>
+ </action-interceptor>
+ </global>
+
+ <!-- for the ActionInterceptorsSimple test -->
+ <per-pageflow>
+
<pageflow-uri>/miniTests/actionInterceptors/interceptedBeforeAction/Controller.jpf</pageflow-uri>
+ <simple-action-interceptor>
+
<intercept-path>/miniTests/actionInterceptors/nested/Controller.jpf</intercept-path>
+ </simple-action-interceptor>
+ </per-pageflow>
+ <per-pageflow>
+
<pageflow-uri>/miniTests/actionInterceptors/interceptedAfterAction/Controller.jpf</pageflow-uri>
+ <simple-action-interceptor>
+
<intercept-path>/miniTests/actionInterceptors/nested/Controller.jpf</intercept-path>
+ <after-action>true</after-action>
+ </simple-action-interceptor>
+ </per-pageflow>
+ <per-pageflow>
+
<pageflow-uri>/miniTests/actionInterceptors/someFlow/Controller.jpf</pageflow-uri>
+ <per-action>
+ <action-name>action1</action-name>
+ <simple-action-interceptor>
+
<intercept-path>/miniTests/actionInterceptors/nonNested/Controller.jpf</intercept-path>
+ <after-action>true</after-action>
+ </simple-action-interceptor>
+ </per-action>
+ </per-pageflow>
+
+
+ <!-- for the ActionInterceptorsChain test -->
+ <per-pageflow>
+
<pageflow-uri>/miniTests/actionInterceptors/interruptChain/Controller.jpf</pageflow-uri>
+ <per-action>
+ <action-name>interruptChainBeforeAction</action-name>
<action-interceptor>
-
<interceptor-class>miniTests.interceptors.InterceptorsController$BeforeInterceptor</interceptor-class>
+
<interceptor-class>miniTests.actionInterceptors.BaseInterceptor</interceptor-class>
</action-interceptor>
<action-interceptor>
-
<interceptor-class>miniTests.interceptors.InterceptorsController$BeforeInterceptor2</interceptor-class>
+
<interceptor-class>miniTests.actionInterceptors.InterruptBeforeActionInterceptor</interceptor-class>
</action-interceptor>
- </before-action>
- <after-action>
<action-interceptor>
-
<interceptor-class>miniTests.interceptors.InterceptorsController$AfterInterceptor</interceptor-class>
+
<interceptor-class>miniTests.actionInterceptors.BaseInterceptor</interceptor-class>
</action-interceptor>
+ </per-action>
+ <per-action>
+ <action-name>interruptChainAfterAction</action-name>
<action-interceptor>
-
<interceptor-class>miniTests.interceptors.InterceptorsController$AfterInterceptor2</interceptor-class>
+
<interceptor-class>miniTests.actionInterceptors.BaseInterceptor</interceptor-class>
</action-interceptor>
- </after-action>
- </global>
+ <action-interceptor>
+
<interceptor-class>miniTests.actionInterceptors.InterruptAfterActionInterceptor</interceptor-class>
+ </action-interceptor>
+ <action-interceptor>
+
<interceptor-class>miniTests.actionInterceptors.BaseInterceptor</interceptor-class>
+ </action-interceptor>
+ </per-action>
+ </per-pageflow>
+
+ <!-- for the ActionInterceptorsOverrideForwards test -->
+ <per-pageflow>
+
<pageflow-uri>/miniTests/actionInterceptors/overrideForwards/Controller.jpf</pageflow-uri>
+ <per-action>
+ <action-name>forwardAway</action-name>
+ <action-interceptor>
+
<interceptor-class>miniTests.actionInterceptors.ForwardAwayInterceptor</interceptor-class>
+ </action-interceptor>
+ </per-action>
+ <per-action>
+ <action-name>forwardToNested</action-name>
+ <action-interceptor>
+
<interceptor-class>miniTests.actionInterceptors.ForwardToNestedInterceptor</interceptor-class>
+ </action-interceptor>
+ </per-action>
+ <per-action>
+ <action-name>forwardToNestedThenAway</action-name>
+ <action-interceptor>
+
<interceptor-class>miniTests.actionInterceptors.ForwardToNestedThenAwayInterceptor</interceptor-class>
+ </action-interceptor>
+ </per-action>
+ <per-action>
+ <action-name>forwardToNull</action-name>
+ <action-interceptor>
+
<interceptor-class>miniTests.actionInterceptors.ForwardToNullInterceptor</interceptor-class>
+ </action-interceptor>
+ </per-action>
+ </per-pageflow>
</pageflow-action-interceptors>
<pageflow-handlers>
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/BaseInterceptor.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/BaseInterceptor.java?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/BaseInterceptor.java
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,39 @@
+package miniTests.actionInterceptors;
+
+import org.apache.beehive.netui.pageflow.actioninterceptor.*;
+import org.apache.beehive.netui.pageflow.internal.interceptor.*;
+import java.net.*;
+import java.util.*;
+
+public class BaseInterceptor extends ActionInterceptor
+{
+ public void preAction( ActionInterceptorContext context, InterceptorChain
chain )
+ throws InterceptorException
+ {
+ addMessage( context, "in preAction() in " + getClass().getName() );
+ chain.continueChain();
+ }
+
+ public void postAction( ActionInterceptorContext context, InterceptorChain
chain )
+ throws InterceptorException
+ {
+ addMessage( context, "in postAction() in " + getClass().getName() );
+ chain.continueChain();
+ }
+
+ public void afterNestedIntercept( AfterNestedInterceptContext context )
throws InterceptorException
+ {
+ addMessage( context, "in afterNestedIntercept() in " +
getClass().getName() );
+ }
+
+ protected static void addMessage( ActionInterceptorContext context, String
msg )
+ {
+ ArrayList< String > messages = ( ArrayList< String > )
context.getRequest().getAttribute( "messages" );
+ if ( messages == null )
+ {
+ messages = new ArrayList< String >();
+ context.getRequest().setAttribute( "messages", messages );
+ }
+ messages.add( msg );
+ }
+}
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/ForwardAwayInterceptor.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/ForwardAwayInterceptor.java?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/ForwardAwayInterceptor.java
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,32 @@
+package miniTests.actionInterceptors;
+
+import org.apache.beehive.netui.pageflow.actioninterceptor.*;
+import org.apache.beehive.netui.pageflow.internal.interceptor.*;
+import java.net.*;
+import java.util.*;
+
+public class ForwardAwayInterceptor extends ActionInterceptor
+{
+ public void preAction( ActionInterceptorContext context, InterceptorChain
chain )
+ throws InterceptorException
+ {
+ try
+ {
+ setInterceptorForward( new InterceptorForward( new URI(
"/miniTests/actionInterceptors/overrideForwards/alternate.jsp" ) ), context );
+ }
+ catch ( URISyntaxException e )
+ {
+ throw new InterceptorException( e );
+ }
+ }
+
+ public void postAction( ActionInterceptorContext context, InterceptorChain
chain )
+ throws InterceptorException
+ {
+ chain.continueChain();
+ }
+
+ public void afterNestedIntercept( AfterNestedInterceptContext context )
throws InterceptorException
+ {
+ }
+}
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/ForwardToNestedInterceptor.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/ForwardToNestedInterceptor.java?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/ForwardToNestedInterceptor.java
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,32 @@
+package miniTests.actionInterceptors;
+
+import org.apache.beehive.netui.pageflow.actioninterceptor.*;
+import org.apache.beehive.netui.pageflow.internal.interceptor.*;
+import java.net.*;
+import java.util.*;
+
+public class ForwardToNestedInterceptor extends ActionInterceptor
+{
+ public void preAction( ActionInterceptorContext context, InterceptorChain
chain )
+ throws InterceptorException
+ {
+ try
+ {
+ setInterceptorForward( new InterceptorForward( new URI(
"/miniTests/actionInterceptors/nested/Controller.jpf" ) ), context );
+ }
+ catch ( URISyntaxException e )
+ {
+ throw new InterceptorException( e );
+ }
+ }
+
+ public void postAction( ActionInterceptorContext context, InterceptorChain
chain )
+ throws InterceptorException
+ {
+ chain.continueChain();
+ }
+
+ public void afterNestedIntercept( AfterNestedInterceptContext context )
throws InterceptorException
+ {
+ }
+}
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/ForwardToNestedThenAwayInterceptor.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/ForwardToNestedThenAwayInterceptor.java?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/ForwardToNestedThenAwayInterceptor.java
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,40 @@
+package miniTests.actionInterceptors;
+
+import org.apache.beehive.netui.pageflow.actioninterceptor.*;
+import org.apache.beehive.netui.pageflow.internal.interceptor.*;
+import java.net.*;
+import java.util.*;
+
+public class ForwardToNestedThenAwayInterceptor extends ActionInterceptor
+{
+ public void preAction( ActionInterceptorContext context, InterceptorChain
chain )
+ throws InterceptorException
+ {
+ try
+ {
+ setInterceptorForward( new InterceptorForward( new URI(
"/miniTests/actionInterceptors/nested/Controller.jpf" ) ), context );
+ }
+ catch ( URISyntaxException e )
+ {
+ throw new InterceptorException( e );
+ }
+ }
+
+ public void postAction( ActionInterceptorContext context, InterceptorChain
chain )
+ throws InterceptorException
+ {
+ chain.continueChain();
+ }
+
+ public void afterNestedIntercept( AfterNestedInterceptContext context )
throws InterceptorException
+ {
+ try
+ {
+ setInterceptorForward( new InterceptorForward( new URI(
"/miniTests/actionInterceptors/overrideForwards/alternate.jsp" ) ), context );
+ }
+ catch ( URISyntaxException e )
+ {
+ throw new InterceptorException( e );
+ }
+ }
+}
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/ForwardToNullInterceptor.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/ForwardToNullInterceptor.java?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/ForwardToNullInterceptor.java
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,35 @@
+package miniTests.actionInterceptors;
+
+import org.apache.beehive.netui.pageflow.actioninterceptor.*;
+import org.apache.beehive.netui.pageflow.internal.interceptor.*;
+import java.net.*;
+import java.util.*;
+import java.io.IOException;
+
+public class ForwardToNullInterceptor extends ActionInterceptor
+{
+ public void preAction( ActionInterceptorContext context, InterceptorChain
chain )
+ throws InterceptorException
+ {
+ setInterceptorForward( null, context );
+
+ try
+ {
+ context.getResponse().getWriter().println( "Action interceptor " +
getClass().getName() + " overrode the forward to null, then wrote this message
to the response." );
+ }
+ catch ( IOException e )
+ {
+ throw new InterceptorException( e );
+ }
+ }
+
+ public void postAction( ActionInterceptorContext context, InterceptorChain
chain )
+ throws InterceptorException
+ {
+ chain.continueChain();
+ }
+
+ public void afterNestedIntercept( AfterNestedInterceptContext context )
throws InterceptorException
+ {
+ }
+}
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/GlobalInterceptor.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/GlobalInterceptor.java?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/GlobalInterceptor.java
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,62 @@
+package miniTests.actionInterceptors;
+
+import org.apache.beehive.netui.pageflow.actioninterceptor.*;
+import org.apache.beehive.netui.pageflow.internal.interceptor.*;
+import java.net.*;
+import java.util.*;
+
+public class GlobalInterceptor extends BaseInterceptor
+{
+ private String _prop1;
+ private String _prop2;
+
+ public void init( ActionInterceptorConfig config )
+ {
+ _prop1 = config.getCustomProperty( "prop1" );
+ _prop2 = config.getCustomProperty( "prop2" );
+ }
+
+ public void preAction( ActionInterceptorContext context, InterceptorChain
chain )
+ throws InterceptorException
+ {
+ if ( context.getPageFlow().getURI().equals(
"/miniTests/actionInterceptors/globalInterceptors/Controller.jpf" ) )
+ {
+ addMessage( context, "in preAction()" );
+
+ if ( context.getActionName().equals( "interceptAndNest" ) )
+ {
+ try
+ {
+ setInterceptorForward( new InterceptorForward( new URI(
"/miniTests/actionInterceptors/nested/Controller.jpf" ) ), context );
+ }
+ catch ( URISyntaxException e )
+ {
+ throw new InterceptorException( e );
+ }
+ }
+ }
+
+ chain.continueChain();
+ }
+
+ public void postAction( ActionInterceptorContext context, InterceptorChain
chain )
+ throws InterceptorException
+ {
+ if ( context.getPageFlow().getURI().equals(
"/miniTests/actionInterceptors/globalInterceptors/Controller.jpf" ) )
+ {
+ addMessage( context, "in postAction()" );
+ addMessage( context, "custom property 'prop1' is " + _prop1 );
+ addMessage( context, "custom property 'prop2' is " + _prop2 );
+ }
+
+ chain.continueChain();
+ }
+
+ public void afterNestedIntercept( AfterNestedInterceptContext context )
throws InterceptorException
+ {
+ if ( context.getPageFlow().getURI().equals(
"/miniTests/actionInterceptors/globalInterceptors/Controller.jpf" ) )
+ {
+ addMessage( context, "in afterNestedIntercept()" );
+ }
+ }
+}
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/InterruptAfterActionInterceptor.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/InterruptAfterActionInterceptor.java?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/InterruptAfterActionInterceptor.java
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,16 @@
+package miniTests.actionInterceptors;
+
+import org.apache.beehive.netui.pageflow.actioninterceptor.*;
+import org.apache.beehive.netui.pageflow.internal.interceptor.*;
+import java.net.*;
+import java.util.*;
+
+public class InterruptAfterActionInterceptor extends BaseInterceptor
+{
+ public void postAction( ActionInterceptorContext context, InterceptorChain
chain )
+ throws InterceptorException
+ {
+ addMessage( context, "in postAction() in " + getClass().getName() );
+ addMessage( context, getClass().getName() + ": interrupting chain" );
+ }
+}
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/InterruptBeforeActionInterceptor.java
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/InterruptBeforeActionInterceptor.java?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/actionInterceptors/InterruptBeforeActionInterceptor.java
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,16 @@
+package miniTests.actionInterceptors;
+
+import org.apache.beehive.netui.pageflow.actioninterceptor.*;
+import org.apache.beehive.netui.pageflow.internal.interceptor.*;
+import java.net.*;
+import java.util.*;
+
+public class InterruptBeforeActionInterceptor extends BaseInterceptor
+{
+ public void preAction( ActionInterceptorContext context, InterceptorChain
chain )
+ throws InterceptorException
+ {
+ addMessage( context, "in preAction() in " + getClass().getName() );
+ addMessage( context, getClass().getName() + ": interrupting chain" );
+ }
+}
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/Controller.jpf
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/Controller.jpf?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/Controller.jpf
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,13 @@
+package miniTests.actionInterceptors;
+
+import org.apache.beehive.netui.pageflow.*;
+import org.apache.beehive.netui.pageflow.annotations.*;
+
[EMAIL PROTECTED](
+ simpleActions={
+ @Jpf.SimpleAction(name="begin", path="index.jsp")
+ }
+)
+public class Controller extends PageFlowController
+{
+}
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/globalInterceptors/Controller.jpf
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/globalInterceptors/Controller.jpf?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/globalInterceptors/Controller.jpf
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,14 @@
+package miniTests.actionInterceptors.globalInterceptors;
+
+import org.apache.beehive.netui.pageflow.*;
+import org.apache.beehive.netui.pageflow.annotations.*;
+
[EMAIL PROTECTED](
+ simpleActions={
+ @Jpf.SimpleAction(name="begin", path="index.jsp"),
+ @Jpf.SimpleAction(name="interceptAndNest", path="index.jsp")
+ }
+)
+public class Controller extends PageFlowController
+{
+}
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/globalInterceptors/index.jsp
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/globalInterceptors/index.jsp?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/globalInterceptors/index.jsp
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,26 @@
+<%@ 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>
+
+ Messages:
+ <ul>
+ <netui-data:repeater dataSource="requestScope.messages">
+
<netui-data:repeaterItem><li>${container.item}</li></netui-data:repeaterItem>
+ </netui-data:repeater>
+ </ul>
+ <br/>
+ <netui:anchor action="interceptAndNest">intercept with a nested page
flow</netui:anchor><br/>
+ </netui:body>
+</netui:html>
+
+
+
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/index.jsp
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/index.jsp?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/index.jsp
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,42 @@
+<%@ 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>Action Interceptors</h3>
+
+ <netui:anchor href="interceptedBeforeAction/Controller.jpf">
+ test simple-action-interceptor running before all actions in a
page flow
+ </netui:anchor>
+ <br/>
+ <netui:anchor href="interceptedAfterAction/Controller.jpf">
+ test simple-action-interceptor running after all actions in a page
flow
+ </netui:anchor>
+ <br/>
+ <netui:anchor href="someFlow/Controller.jpf">
+ test simple-action-interceptor running after a specific action
+ </netui:anchor>
+ <br/>
+ <netui:anchor href="globalInterceptors/Controller.jpf">
+ test global (all page flow) interceptors, as well as custom
interceptor properties
+ </netui:anchor>
+ <br/>
+ <netui:anchor href="interruptChain/Controller.jpf">
+ test interrupting the interceptor chain
+ </netui:anchor>
+ <br/>
+ <netui:anchor href="overrideForwards/Controller.jpf">
+ test various ways of overriding the destination of an intercepted
action
+ </netui:anchor>
+ <br/>
+ </netui:body>
+</netui:html>
+
+
+
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interceptedAfterAction/Controller.jpf
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interceptedAfterAction/Controller.jpf?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interceptedAfterAction/Controller.jpf
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,18 @@
+package miniTests.actionInterceptors.interceptedAfterAction;
+
+import org.apache.beehive.netui.pageflow.*;
+import org.apache.beehive.netui.pageflow.annotations.*;
+
[EMAIL PROTECTED](
+ simpleActions={
+ @Jpf.SimpleAction(name="begin", path="index.jsp"),
+ @Jpf.SimpleAction(name="another", path="another.jsp")
+ }
+)
+public class Controller extends PageFlowController
+{
+ protected void beforeAction()
+ {
+ getRequest().setAttribute( "actionRun" , Boolean.TRUE );
+ }
+}
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interceptedAfterAction/another.jsp
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interceptedAfterAction/another.jsp?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interceptedAfterAction/another.jsp
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,19 @@
+<%@ 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>
+
+ Another page...
+ </netui:body>
+</netui:html>
+
+
+
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interceptedAfterAction/index.jsp
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interceptedAfterAction/index.jsp?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interceptedAfterAction/index.jsp
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,21 @@
+<%@ 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>
+
+ We've hit the original page flow we were looking for.
+ <br/>
+ <netui:anchor action="another">hit another action</netui:anchor>
+ </netui:body>
+</netui:html>
+
+
+
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interceptedBeforeAction/Controller.jpf
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interceptedBeforeAction/Controller.jpf?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interceptedBeforeAction/Controller.jpf
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,18 @@
+package miniTests.actionInterceptors.interceptedBeforeAction;
+
+import org.apache.beehive.netui.pageflow.*;
+import org.apache.beehive.netui.pageflow.annotations.*;
+
[EMAIL PROTECTED](
+ simpleActions={
+ @Jpf.SimpleAction(name="begin", path="index.jsp"),
+ @Jpf.SimpleAction(name="another", path="another.jsp")
+ }
+)
+public class Controller extends PageFlowController
+{
+ protected void beforeAction()
+ {
+ getRequest().setAttribute( "actionRun" , Boolean.TRUE );
+ }
+}
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interceptedBeforeAction/another.jsp
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interceptedBeforeAction/another.jsp?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interceptedBeforeAction/another.jsp
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,19 @@
+<%@ 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>
+
+ Another page...
+ </netui:body>
+</netui:html>
+
+
+
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interceptedBeforeAction/index.jsp
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interceptedBeforeAction/index.jsp?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interceptedBeforeAction/index.jsp
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,21 @@
+<%@ 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>
+
+ We've hit the original page flow we were looking for.
+ <br/>
+ <netui:anchor action="another">hit another action</netui:anchor>
+ </netui:body>
+</netui:html>
+
+
+
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interruptChain/Controller.jpf
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interruptChain/Controller.jpf?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interruptChain/Controller.jpf
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,21 @@
+package miniTests.actionInterceptors.interruptChain;
+
+import org.apache.beehive.netui.pageflow.*;
+import org.apache.beehive.netui.pageflow.annotations.*;
+import java.util.*;
+
[EMAIL PROTECTED](
+ simpleActions={
+ @Jpf.SimpleAction(name="begin", path="index.jsp"),
+ @Jpf.SimpleAction(name="interruptChainBeforeAction", path="index.jsp"),
+ @Jpf.SimpleAction(name="interruptChainAfterAction", path="index.jsp")
+ }
+)
+public class Controller extends PageFlowController
+{
+ protected void beforeAction()
+ {
+ ArrayList< String > messages = ( ArrayList< String > )
getRequest().getAttribute( "messages" );
+ if ( messages != null ) messages.add( "in action " +
getCurrentActionName() );
+ }
+}
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interruptChain/index.jsp
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interruptChain/index.jsp?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/interruptChain/index.jsp
Mon Jan 24 01:03:38 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>
+
+ Messages:
+ <ul>
+ <netui-data:repeater dataSource="requestScope.messages">
+
<netui-data:repeaterItem><li>${container.item}</li></netui-data:repeaterItem>
+ </netui-data:repeater>
+ </ul>
+ <br/>
+
+ <netui:anchor
action="interruptChainBeforeAction">interruptChainBeforeAction</netui:anchor>
+ <br/>
+ <netui:anchor
action="interruptChainAfterAction">interruptChainAfterAction</netui:anchor>
+ </netui:body>
+</netui:html>
+
+
+
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/nested/Controller.jpf
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/nested/Controller.jpf?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/nested/Controller.jpf
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,15 @@
+package miniTests.actionInterceptors.nested;
+
+import org.apache.beehive.netui.pageflow.*;
+import org.apache.beehive.netui.pageflow.annotations.*;
+
[EMAIL PROTECTED](
+ nested=true,
+ simpleActions={
+ @Jpf.SimpleAction(name="begin", path="index.jsp"),
+ @Jpf.SimpleAction(name="done", returnAction="nestedDone")
+ }
+)
+public class Controller extends PageFlowController
+{
+}
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/nested/index.jsp
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/nested/index.jsp?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/nested/index.jsp
Mon Jan 24 01:03:38 2005
@@ -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"%>
+<%@ 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 bgcolor="#CCFFFF">
+ <h3>${pageFlow.URI}</h3>
+
+ Now we're in the injected nested page flow. Click
+ <netui:anchor action="done">done</netui:anchor>
+ to return to the original action that was being raised.
+
+ <br/>
+ <br/>
+ Was the original action run yet? <b>${requestScope.actionRun == null ?
"no" : "yes" }</b>
+ </netui:body>
+</netui:html>
+
+
+
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/nonNested/Controller.jpf
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/nonNested/Controller.jpf?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/nonNested/Controller.jpf
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,13 @@
+package miniTests.actionInterceptors.nonNested;
+
+import org.apache.beehive.netui.pageflow.*;
+import org.apache.beehive.netui.pageflow.annotations.*;
+
[EMAIL PROTECTED](
+ simpleActions={
+ @Jpf.SimpleAction(name="begin", path="index.jsp")
+ }
+)
+public class Controller extends PageFlowController
+{
+}
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/nonNested/error.jsp
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/nonNested/error.jsp?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/nonNested/error.jsp
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,19 @@
+<%@ 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>
+
+ We should never end up at this page; if we do, it means an interceptor
isn't working or isn't configured correctly.
+ </netui:body>
+</netui:html>
+
+
+
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/nonNested/index.jsp
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/nonNested/index.jsp?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/nonNested/index.jsp
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,23 @@
+<%@ 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 bgcolor="#CCFFFF">
+ <h3>${pageFlow.URI}</h3>
+
+ Now we're in the injected non-nested page flow.
+
+ <br/>
+ <br/>
+ Was the original action run yet? <b>${requestScope.actionRun == null ?
"no" : "yes" }</b>
+ </netui:body>
+</netui:html>
+
+
+
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/overrideForwards/Controller.jpf
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/overrideForwards/Controller.jpf?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/overrideForwards/Controller.jpf
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,17 @@
+package miniTests.actionInterceptors.overrideForwards;
+
+import org.apache.beehive.netui.pageflow.*;
+import org.apache.beehive.netui.pageflow.annotations.*;
+
[EMAIL PROTECTED](
+ simpleActions={
+ @Jpf.SimpleAction(name="begin", path="index.jsp"),
+ @Jpf.SimpleAction(name="forwardAway", path="error.jsp"),
+ @Jpf.SimpleAction(name="forwardToNested", path="index.jsp"),
+ @Jpf.SimpleAction(name="forwardToNestedThenAway", path="error.jsp"),
+ @Jpf.SimpleAction(name="forwardToNull", path="error.jsp")
+ }
+)
+public class Controller extends PageFlowController
+{
+}
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/overrideForwards/alternate.jsp
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/overrideForwards/alternate.jsp?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/overrideForwards/alternate.jsp
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,21 @@
+<%@ 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>
+
+ Got to the alternate (forward-away) page.
+ <br/>
+ <netui:anchor action="begin">go back</netui:anchor>
+ </netui:body>
+</netui:html>
+
+
+
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/overrideForwards/error.jsp
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/overrideForwards/error.jsp?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/overrideForwards/error.jsp
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,19 @@
+<%@ 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>
+
+ We should never end up at this page; if we do, it means an interceptor
isn't working or isn't configured correctly.
+ </netui:body>
+</netui:html>
+
+
+
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/overrideForwards/index.jsp
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/overrideForwards/index.jsp?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/overrideForwards/index.jsp
Mon Jan 24 01:03:38 2005
@@ -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"%>
+<%@ 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>
+
+ <netui:anchor action="forwardAway">forwardAway</netui:anchor>
+ <br/>
+ <netui:anchor action="forwardToNested">forwardToNested</netui:anchor>
+ <br/>
+ <netui:anchor
action="forwardToNestedThenAway">forwardToNestedThenAway</netui:anchor>
+ <br/>
+ <netui:anchor action="forwardToNull">forwardToNull</netui:anchor>
+ </netui:body>
+</netui:html>
+
+
+
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/someFlow/Controller.jpf
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/someFlow/Controller.jpf?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/someFlow/Controller.jpf
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,18 @@
+package miniTests.actionInterceptors.someFlow;
+
+import org.apache.beehive.netui.pageflow.*;
+import org.apache.beehive.netui.pageflow.annotations.*;
+
[EMAIL PROTECTED](
+ simpleActions={
+ @Jpf.SimpleAction(name="begin", path="index.jsp"),
+ @Jpf.SimpleAction(name="action1", path="error.jsp")
+ }
+)
+public class Controller extends PageFlowController
+{
+ protected void beforeAction()
+ {
+ getRequest().setAttribute( "actionRun" , Boolean.TRUE );
+ }
+}
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/someFlow/another.jsp
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/someFlow/another.jsp?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/someFlow/another.jsp
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,21 @@
+<%@ 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>
+
+ Another page...
+ <br/>
+ <netui:anchor action="begin">start over</netui:anchor>
+ </netui:body>
+</netui:html>
+
+
+
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/someFlow/index.jsp
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/someFlow/index.jsp?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/actionInterceptors/someFlow/index.jsp
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,19 @@
+<%@ 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>
+
+ <netui:anchor action="action1">hit an action, which will be
intercepted</netui:anchor>
+ </netui:body>
+</netui:html>
+
+
+
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&rev=126271&p1=incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml&r1=126270&p2=incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml&r2=126271
==============================================================================
---
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 Jan 24 01:03:38 2005
@@ -113,8 +113,8 @@
</features>
</test>
<test>
- <name>ActionInterceptors</name>
- <description>Test of the action-interceptors feature.</description>
+ <name>ActionInterceptorsChain</name>
+ <description>Test of action interceptor chains, including
interrupting them in the middle.</description>
<webapp>coreWeb</webapp>
<categories>
<category>bvt</category>
@@ -125,6 +125,54 @@
<feature>PageFlow</feature>
<feature>Action</feature>
<feature>Interceptors</feature>
+ </features>
+ </test>
+ <test>
+ <name>ActionInterceptorsGlobal</name>
+ <description>Test of global action interceptors, which apply to all
actions in all page flows. Also tests custom properties configured within the
action-interceptor element.</description>
+ <webapp>coreWeb</webapp>
+ <categories>
+ <category>bvt</category>
+ <category>bvt.struts11</category>
+ <category>corePageFlow</category>
+ </categories>
+ <features>
+ <feature>PageFlow</feature>
+ <feature>Action</feature>
+ <feature>Interceptors</feature>
+ <feature>Nesting</feature>
+ </features>
+ </test>
+ <test>
+ <name>ActionInterceptorsOverrideForwards</name>
+ <description>Test of various ways to override the original action's
Forward in an action interceptor.</description>
+ <webapp>coreWeb</webapp>
+ <categories>
+ <category>bvt</category>
+ <category>bvt.struts11</category>
+ <category>corePageFlow</category>
+ </categories>
+ <features>
+ <feature>PageFlow</feature>
+ <feature>Action</feature>
+ <feature>Interceptors</feature>
+ <feature>Nesting</feature>
+ </features>
+ </test>
+ <test>
+ <name>ActionInterceptorsSimple</name>
+ <description>Test of "simple" action interceptors, which are
configured wholly in netui-config.xml (they don't require user
ActionInterceptor classes).</description>
+ <webapp>coreWeb</webapp>
+ <categories>
+ <category>bvt</category>
+ <category>bvt.struts11</category>
+ <category>corePageFlow</category>
+ </categories>
+ <features>
+ <feature>PageFlow</feature>
+ <feature>Action</feature>
+ <feature>Interceptors</feature>
+ <feature>Nesting</feature>
</features>
</test>
<test>
Deleted:
/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ActionInterceptors.xml
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ActionInterceptors.xml?view=auto&rev=126270
==============================================================================
Added:
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ActionInterceptorsChain.xml
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ActionInterceptorsChain.xml?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ActionInterceptorsChain.xml
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,354 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ses:recorderSession
xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session">
+ <ses:sessionName>ActionInterceptorsChain</ses:sessionName>
+ <ses:tester>rich</ses:tester>
+ <ses:startDate>24 Jan 2005, 12:48:47.046 AM MST</ses:startDate>
+ <ses:description>Test of action interceptor chains, including interrupting
them in the middle.</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/actionInterceptors/Controller.jpf</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/actionInterceptors/index.jsp">
+ </head>
+ <body>
+ <h3>Action Interceptors</h3>
+
+ <a
href="/coreWeb/miniTests/actionInterceptors/interceptedBeforeAction/Controller.jpf">test
simple-action-interceptor running before all actions in a page flow</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/interceptedAfterAction/Controller.jpf">test
simple-action-interceptor running after all actions in a page flow</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/someFlow/Controller.jpf">test
simple-action-interceptor running after a specific action</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/globalInterceptors/Controller.jpf">test
global (all page flow) interceptors, as well as custom interceptor
properties</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/interruptChain/Controller.jpf">test
interrupting the interceptor chain</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/overrideForwards/Controller.jpf">test
various ways of overriding the destination of an intercepted action</a>
+ <br/>
+ </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/miniTests/actionInterceptors/interruptChain/Controller.jpf</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/miniTests/actionInterceptors/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.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/actionInterceptors/interruptChain/index.jsp">
+ </head>
+ <body>
+ <h3>/miniTests/actionInterceptors/interruptChain/Controller.jpf</h3>
+
+ Messages:
+ <ul>
+
+ </ul>
+ <br/>
+
+ <a
href="/coreWeb/miniTests/actionInterceptors/interruptChain/interruptChainBeforeAction.do">interruptChainBeforeAction</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/interruptChain/interruptChainAfterAction.do">interruptChainAfterAction</a>
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>3</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/actionInterceptors/interruptChain/interruptChainBeforeAction.do</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/miniTests/actionInterceptors/interruptChain/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.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/actionInterceptors/interruptChain/index.jsp">
+ </head>
+ <body>
+ <h3>/miniTests/actionInterceptors/interruptChain/Controller.jpf</h3>
+
+ Messages:
+ <ul>
+ <li>in preAction() in
miniTests.actionInterceptors.BaseInterceptor</li><li>in preAction() in
miniTests.actionInterceptors.InterruptBeforeActionInterceptor</li><li>miniTests.actionInterceptors.InterruptBeforeActionInterceptor:
interrupting chain</li><li>in action interruptChainBeforeAction</li><li>in
postAction() in miniTests.actionInterceptors.BaseInterceptor</li><li>in
postAction() in
miniTests.actionInterceptors.InterruptBeforeActionInterceptor</li><li>in
postAction() in miniTests.actionInterceptors.BaseInterceptor</li>
+ </ul>
+ <br/>
+
+ <a
href="/coreWeb/miniTests/actionInterceptors/interruptChain/interruptChainBeforeAction.do">interruptChainBeforeAction</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/interruptChain/interruptChainAfterAction.do">interruptChainAfterAction</a>
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>4</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/actionInterceptors/interruptChain/interruptChainAfterAction.do</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/miniTests/actionInterceptors/interruptChain/interruptChainBeforeAction.do</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/actionInterceptors/interruptChain/index.jsp">
+ </head>
+ <body>
+ <h3>/miniTests/actionInterceptors/interruptChain/Controller.jpf</h3>
+
+ Messages:
+ <ul>
+ <li>in preAction() in
miniTests.actionInterceptors.BaseInterceptor</li><li>in preAction() in
miniTests.actionInterceptors.InterruptAfterActionInterceptor</li><li>in
preAction() in miniTests.actionInterceptors.BaseInterceptor</li><li>in action
interruptChainAfterAction</li><li>in postAction() in
miniTests.actionInterceptors.BaseInterceptor</li><li>in postAction() in
miniTests.actionInterceptors.InterruptAfterActionInterceptor</li><li>miniTests.actionInterceptors.InterruptAfterActionInterceptor:
interrupting chain</li>
+ </ul>
+ <br/>
+
+ <a
href="/coreWeb/miniTests/actionInterceptors/interruptChain/interruptChainBeforeAction.do">interruptChainBeforeAction</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/interruptChain/interruptChainAfterAction.do">interruptChainAfterAction</a>
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ </ses:tests>
+ <ses:endDate>24 Jan 2005, 12:49:19.602 AM MST</ses:endDate>
+ <ses:testCount>4</ses:testCount>
+</ses:recorderSession>
Added:
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ActionInterceptorsGlobal.xml
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ActionInterceptorsGlobal.xml?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ActionInterceptorsGlobal.xml
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,346 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ses:recorderSession
xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session">
+ <ses:sessionName>ActionInterceptorsGlobal</ses:sessionName>
+ <ses:tester>rich</ses:tester>
+ <ses:startDate>24 Jan 2005, 12:47:04.788 AM MST</ses:startDate>
+ <ses:description>Test of global action interceptors, which apply to all
actions in all page flows. Also tests custom properties configured within the
action-interceptor element.</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/actionInterceptors/Controller.jpf</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/actionInterceptors/index.jsp">
+ </head>
+ <body>
+ <h3>Action Interceptors</h3>
+
+ <a
href="/coreWeb/miniTests/actionInterceptors/interceptedBeforeAction/Controller.jpf">test
simple-action-interceptor running before all actions in a page flow</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/interceptedAfterAction/Controller.jpf">test
simple-action-interceptor running after all actions in a page flow</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/someFlow/Controller.jpf">test
simple-action-interceptor running after a specific action</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/globalInterceptors/Controller.jpf">test
global (all page flow) interceptors, as well as custom interceptor
properties</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/interruptChain/Controller.jpf">test
interrupting the interceptor chain</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/overrideForwards/Controller.jpf">test
various ways of overriding the destination of an intercepted action</a>
+ <br/>
+ </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/miniTests/actionInterceptors/globalInterceptors/Controller.jpf</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/miniTests/actionInterceptors/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.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/actionInterceptors/globalInterceptors/index.jsp">
+ </head>
+ <body>
+
<h3>/miniTests/actionInterceptors/globalInterceptors/Controller.jpf</h3>
+
+ Messages:
+ <ul>
+ <li>in preAction()</li><li>in postAction()</li><li>custom property
'prop1' is value1</li><li>custom property 'prop2' is value2</li>
+ </ul>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/globalInterceptors/interceptAndNest.do">intercept
with a nested page flow</a><br/>
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>3</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/actionInterceptors/globalInterceptors/interceptAndNest.do</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/miniTests/actionInterceptors/globalInterceptors/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.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/actionInterceptors/nested/index.jsp">
+ </head>
+ <body bgcolor="#CCFFFF">
+ <h3>/miniTests/actionInterceptors/nested/Controller.jpf</h3>
+
+ Now we're in the injected nested page flow. Click
+ <a href="/coreWeb/miniTests/actionInterceptors/nested/done.do">done</a>
+ to return to the original action that was being raised.
+
+ <br/>
+ <br/>
+ Was the original action run yet? <b>no</b>
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>4</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/actionInterceptors/nested/done.do</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/miniTests/actionInterceptors/globalInterceptors/interceptAndNest.do</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/actionInterceptors/globalInterceptors/index.jsp">
+ </head>
+ <body>
+
<h3>/miniTests/actionInterceptors/globalInterceptors/Controller.jpf</h3>
+
+ Messages:
+ <ul>
+ <li>in afterNestedIntercept()</li><li>in postAction()</li><li>custom
property 'prop1' is value1</li><li>custom property 'prop2' is value2</li>
+ </ul>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/globalInterceptors/interceptAndNest.do">intercept
with a nested page flow</a><br/>
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ </ses:tests>
+ <ses:endDate>24 Jan 2005, 12:47:44.255 AM MST</ses:endDate>
+ <ses:testCount>4</ses:testCount>
+</ses:recorderSession>
Added:
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ActionInterceptorsOverrideForwards.xml
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ActionInterceptorsOverrideForwards.xml?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ActionInterceptorsOverrideForwards.xml
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,910 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ses:recorderSession
xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session">
+ <ses:sessionName>ActionInterceptorsOverrideForwards</ses:sessionName>
+ <ses:tester>rich</ses:tester>
+ <ses:startDate>24 Jan 2005, 12:50:19.799 AM MST</ses:startDate>
+ <ses:description>Test of various ways to override the original action's
Forward in an action interceptor.</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/actionInterceptors/Controller.jpf</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/actionInterceptors/index.jsp">
+ </head>
+ <body>
+ <h3>Action Interceptors</h3>
+
+ <a
href="/coreWeb/miniTests/actionInterceptors/interceptedBeforeAction/Controller.jpf">test
simple-action-interceptor running before all actions in a page flow</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/interceptedAfterAction/Controller.jpf">test
simple-action-interceptor running after all actions in a page flow</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/someFlow/Controller.jpf">test
simple-action-interceptor running after a specific action</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/globalInterceptors/Controller.jpf">test
global (all page flow) interceptors, as well as custom interceptor
properties</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/interruptChain/Controller.jpf">test
interrupting the interceptor chain</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/overrideForwards/Controller.jpf">test
various ways of overriding the destination of an intercepted action</a>
+ <br/>
+ </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/miniTests/actionInterceptors/overrideForwards/Controller.jpf</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/miniTests/actionInterceptors/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.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/actionInterceptors/overrideForwards/index.jsp">
+ </head>
+ <body>
+ <h3>/miniTests/actionInterceptors/overrideForwards/Controller.jpf</h3>
+
+ <a
href="/coreWeb/miniTests/actionInterceptors/overrideForwards/forwardAway.do">forwardAway</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/overrideForwards/forwardToNested.do">forwardToNested</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/overrideForwards/forwardToNestedThenAway.do">forwardToNestedThenAway</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/overrideForwards/forwardToNull.do">forwardToNull</a>
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>3</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/actionInterceptors/overrideForwards/forwardAway.do</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/miniTests/actionInterceptors/overrideForwards/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.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/actionInterceptors/overrideForwards/alternate.jsp">
+ </head>
+ <body>
+ <h3>/miniTests/actionInterceptors/overrideForwards/Controller.jpf</h3>
+
+ Got to the alternate (forward-away) page.
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/overrideForwards/begin.do">go
back</a>
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>4</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/actionInterceptors/overrideForwards/begin.do</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/miniTests/actionInterceptors/overrideForwards/forwardAway.do</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/actionInterceptors/overrideForwards/index.jsp">
+ </head>
+ <body>
+ <h3>/miniTests/actionInterceptors/overrideForwards/Controller.jpf</h3>
+
+ <a
href="/coreWeb/miniTests/actionInterceptors/overrideForwards/forwardAway.do">forwardAway</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/overrideForwards/forwardToNested.do">forwardToNested</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/overrideForwards/forwardToNestedThenAway.do">forwardToNestedThenAway</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/overrideForwards/forwardToNull.do">forwardToNull</a>
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>5</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/actionInterceptors/overrideForwards/forwardToNested.do</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/miniTests/actionInterceptors/overrideForwards/begin.do</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/actionInterceptors/nested/index.jsp">
+ </head>
+ <body bgcolor="#CCFFFF">
+ <h3>/miniTests/actionInterceptors/nested/Controller.jpf</h3>
+
+ Now we're in the injected nested page flow. Click
+ <a href="/coreWeb/miniTests/actionInterceptors/nested/done.do">done</a>
+ to return to the original action that was being raised.
+
+ <br/>
+ <br/>
+ Was the original action run yet? <b>no</b>
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>6</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/actionInterceptors/nested/done.do</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/miniTests/actionInterceptors/overrideForwards/forwardToNested.do</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/actionInterceptors/overrideForwards/index.jsp">
+ </head>
+ <body>
+ <h3>/miniTests/actionInterceptors/overrideForwards/Controller.jpf</h3>
+
+ <a
href="/coreWeb/miniTests/actionInterceptors/overrideForwards/forwardAway.do">forwardAway</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/overrideForwards/forwardToNested.do">forwardToNested</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/overrideForwards/forwardToNestedThenAway.do">forwardToNestedThenAway</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/overrideForwards/forwardToNull.do">forwardToNull</a>
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>7</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/actionInterceptors/overrideForwards/forwardToNestedThenAway.do</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/miniTests/actionInterceptors/nested/done.do</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/actionInterceptors/nested/index.jsp">
+ </head>
+ <body bgcolor="#CCFFFF">
+ <h3>/miniTests/actionInterceptors/nested/Controller.jpf</h3>
+
+ Now we're in the injected nested page flow. Click
+ <a href="/coreWeb/miniTests/actionInterceptors/nested/done.do">done</a>
+ to return to the original action that was being raised.
+
+ <br/>
+ <br/>
+ Was the original action run yet? <b>no</b>
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>8</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/actionInterceptors/nested/done.do</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/miniTests/actionInterceptors/overrideForwards/forwardToNestedThenAway.do</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/actionInterceptors/overrideForwards/alternate.jsp">
+ </head>
+ <body>
+ <h3>/miniTests/actionInterceptors/overrideForwards/Controller.jpf</h3>
+
+ Got to the alternate (forward-away) page.
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/overrideForwards/begin.do">go
back</a>
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>9</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/actionInterceptors/overrideForwards/begin.do</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/miniTests/actionInterceptors/nested/done.do</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/actionInterceptors/overrideForwards/index.jsp">
+ </head>
+ <body>
+ <h3>/miniTests/actionInterceptors/overrideForwards/Controller.jpf</h3>
+
+ <a
href="/coreWeb/miniTests/actionInterceptors/overrideForwards/forwardAway.do">forwardAway</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/overrideForwards/forwardToNested.do">forwardToNested</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/overrideForwards/forwardToNestedThenAway.do">forwardToNestedThenAway</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/overrideForwards/forwardToNull.do">forwardToNull</a>
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>10</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/actionInterceptors/overrideForwards/forwardToNull.do</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/miniTests/actionInterceptors/overrideForwards/begin.do</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>Action interceptor
miniTests.actionInterceptors.ForwardToNullInterceptor overrode the forward to
null, then wrote this message to the response.</ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>11</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/actionInterceptors/Controller.jpf</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/actionInterceptors/index.jsp">
+ </head>
+ <body>
+ <h3>Action Interceptors</h3>
+
+ <a
href="/coreWeb/miniTests/actionInterceptors/interceptedBeforeAction/Controller.jpf">test
simple-action-interceptor running before all actions in a page flow</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/interceptedAfterAction/Controller.jpf">test
simple-action-interceptor running after all actions in a page flow</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/someFlow/Controller.jpf">test
simple-action-interceptor running after a specific action</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/globalInterceptors/Controller.jpf">test
global (all page flow) interceptors, as well as custom interceptor
properties</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/interruptChain/Controller.jpf">test
interrupting the interceptor chain</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/overrideForwards/Controller.jpf">test
various ways of overriding the destination of an intercepted action</a>
+ <br/>
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ </ses:tests>
+ <ses:endDate>24 Jan 2005, 12:51:05.445 AM MST</ses:endDate>
+ <ses:testCount>11</ses:testCount>
+</ses:recorderSession>
Added:
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ActionInterceptorsSimple.xml
Url:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ActionInterceptorsSimple.xml?view=auto&rev=126271
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ActionInterceptorsSimple.xml
Mon Jan 24 01:03:38 2005
@@ -0,0 +1,1163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ses:recorderSession
xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session">
+ <ses:sessionName>ActionInterceptorsSimple</ses:sessionName>
+ <ses:tester>rich</ses:tester>
+ <ses:startDate>24 Jan 2005, 12:43:15.178 AM MST</ses:startDate>
+ <ses:description>Test of "simple" action interceptors, which are configured
wholly in netui-config.xml (they don't require user ActionInterceptor
classes).</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/actionInterceptors/Controller.jpf</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/actionInterceptors/index.jsp">
+ </head>
+ <body>
+ <h3>Action Interceptors</h3>
+
+ <a
href="/coreWeb/miniTests/actionInterceptors/interceptedBeforeAction/Controller.jpf">test
simple-action-interceptor running before all actions in a page flow</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/interceptedAfterAction/Controller.jpf">test
simple-action-interceptor running after all actions in a page flow</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/someFlow/Controller.jpf">test
simple-action-interceptor running after a specific action</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/globalInterceptors/Controller.jpf">test
global (all page flow) interceptors, as well as custom interceptor
properties</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/interruptChain/Controller.jpf">test
interrupting the interceptor chain</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/overrideForwards/Controller.jpf">test
various ways of overriding the destination of an intercepted action</a>
+ <br/>
+ </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/miniTests/actionInterceptors/interceptedBeforeAction/Controller.jpf</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/miniTests/actionInterceptors/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.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/actionInterceptors/nested/index.jsp">
+ </head>
+ <body bgcolor="#CCFFFF">
+ <h3>/miniTests/actionInterceptors/nested/Controller.jpf</h3>
+
+ Now we're in the injected nested page flow. Click
+ <a href="/coreWeb/miniTests/actionInterceptors/nested/done.do">done</a>
+ to return to the original action that was being raised.
+
+ <br/>
+ <br/>
+ Was the original action run yet? <b>no</b>
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>3</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/actionInterceptors/nested/done.do</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/miniTests/actionInterceptors/interceptedBeforeAction/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.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/actionInterceptors/interceptedBeforeAction/index.jsp">
+ </head>
+ <body>
+
<h3>/miniTests/actionInterceptors/interceptedBeforeAction/Controller.jpf</h3>
+
+ We've hit the original page flow we were looking for.
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/interceptedBeforeAction/another.do">hit
another action</a>
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>4</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/actionInterceptors/interceptedBeforeAction/another.do</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/miniTests/actionInterceptors/nested/done.do</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/actionInterceptors/nested/index.jsp">
+ </head>
+ <body bgcolor="#CCFFFF">
+ <h3>/miniTests/actionInterceptors/nested/Controller.jpf</h3>
+
+ Now we're in the injected nested page flow. Click
+ <a href="/coreWeb/miniTests/actionInterceptors/nested/done.do">done</a>
+ to return to the original action that was being raised.
+
+ <br/>
+ <br/>
+ Was the original action run yet? <b>no</b>
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>5</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/actionInterceptors/nested/done.do</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/miniTests/actionInterceptors/interceptedBeforeAction/another.do</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/actionInterceptors/interceptedBeforeAction/another.jsp">
+ </head>
+ <body>
+
<h3>/miniTests/actionInterceptors/interceptedBeforeAction/Controller.jpf</h3>
+
+ Another page...
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>6</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/actionInterceptors/Controller.jpf</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/actionInterceptors/index.jsp">
+ </head>
+ <body>
+ <h3>Action Interceptors</h3>
+
+ <a
href="/coreWeb/miniTests/actionInterceptors/interceptedBeforeAction/Controller.jpf">test
simple-action-interceptor running before all actions in a page flow</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/interceptedAfterAction/Controller.jpf">test
simple-action-interceptor running after all actions in a page flow</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/someFlow/Controller.jpf">test
simple-action-interceptor running after a specific action</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/globalInterceptors/Controller.jpf">test
global (all page flow) interceptors, as well as custom interceptor
properties</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/interruptChain/Controller.jpf">test
interrupting the interceptor chain</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/overrideForwards/Controller.jpf">test
various ways of overriding the destination of an intercepted action</a>
+ <br/>
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>7</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/actionInterceptors/interceptedAfterAction/Controller.jpf</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/miniTests/actionInterceptors/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.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/actionInterceptors/nested/index.jsp">
+ </head>
+ <body bgcolor="#CCFFFF">
+ <h3>/miniTests/actionInterceptors/nested/Controller.jpf</h3>
+
+ Now we're in the injected nested page flow. Click
+ <a href="/coreWeb/miniTests/actionInterceptors/nested/done.do">done</a>
+ to return to the original action that was being raised.
+
+ <br/>
+ <br/>
+ Was the original action run yet? <b>yes</b>
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>8</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/actionInterceptors/nested/done.do</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/miniTests/actionInterceptors/interceptedAfterAction/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.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/actionInterceptors/interceptedAfterAction/index.jsp">
+ </head>
+ <body>
+
<h3>/miniTests/actionInterceptors/interceptedAfterAction/Controller.jpf</h3>
+
+ We've hit the original page flow we were looking for.
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/interceptedAfterAction/another.do">hit
another action</a>
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>9</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/actionInterceptors/interceptedAfterAction/another.do</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/miniTests/actionInterceptors/nested/done.do</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/actionInterceptors/nested/index.jsp">
+ </head>
+ <body bgcolor="#CCFFFF">
+ <h3>/miniTests/actionInterceptors/nested/Controller.jpf</h3>
+
+ Now we're in the injected nested page flow. Click
+ <a href="/coreWeb/miniTests/actionInterceptors/nested/done.do">done</a>
+ to return to the original action that was being raised.
+
+ <br/>
+ <br/>
+ Was the original action run yet? <b>yes</b>
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>10</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/actionInterceptors/nested/done.do</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/miniTests/actionInterceptors/interceptedAfterAction/another.do</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/actionInterceptors/interceptedAfterAction/another.jsp">
+ </head>
+ <body>
+
<h3>/miniTests/actionInterceptors/interceptedAfterAction/Controller.jpf</h3>
+
+ Another page...
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>11</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/actionInterceptors/Controller.jpf</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/actionInterceptors/index.jsp">
+ </head>
+ <body>
+ <h3>Action Interceptors</h3>
+
+ <a
href="/coreWeb/miniTests/actionInterceptors/interceptedBeforeAction/Controller.jpf">test
simple-action-interceptor running before all actions in a page flow</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/interceptedAfterAction/Controller.jpf">test
simple-action-interceptor running after all actions in a page flow</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/someFlow/Controller.jpf">test
simple-action-interceptor running after a specific action</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/globalInterceptors/Controller.jpf">test
global (all page flow) interceptors, as well as custom interceptor
properties</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/interruptChain/Controller.jpf">test
interrupting the interceptor chain</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/overrideForwards/Controller.jpf">test
various ways of overriding the destination of an intercepted action</a>
+ <br/>
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>12</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/actionInterceptors/someFlow/Controller.jpf</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/miniTests/actionInterceptors/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.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/actionInterceptors/someFlow/index.jsp">
+ </head>
+ <body>
+ <h3>/miniTests/actionInterceptors/someFlow/Controller.jpf</h3>
+
+ <a
href="/coreWeb/miniTests/actionInterceptors/someFlow/action1.do">hit an action,
which will be intercepted</a>
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>13</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/actionInterceptors/someFlow/action1.do</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/miniTests/actionInterceptors/someFlow/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.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/actionInterceptors/nonNested/index.jsp">
+ </head>
+ <body bgcolor="#CCFFFF">
+ <h3>/miniTests/actionInterceptors/nonNested/Controller.jpf</h3>
+
+ Now we're in the injected non-nested page flow.
+
+ <br/>
+ <br/>
+ Was the original action run yet? <b>yes</b>
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>14</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/actionInterceptors/Controller.jpf</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>82DDA199D98CDA4213724D007C45B38A</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=82DDA199D98CDA4213724D007C45B38A</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/actionInterceptors/index.jsp">
+ </head>
+ <body>
+ <h3>Action Interceptors</h3>
+
+ <a
href="/coreWeb/miniTests/actionInterceptors/interceptedBeforeAction/Controller.jpf">test
simple-action-interceptor running before all actions in a page flow</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/interceptedAfterAction/Controller.jpf">test
simple-action-interceptor running after all actions in a page flow</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/someFlow/Controller.jpf">test
simple-action-interceptor running after a specific action</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/globalInterceptors/Controller.jpf">test
global (all page flow) interceptors, as well as custom interceptor
properties</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/interruptChain/Controller.jpf">test
interrupting the interceptor chain</a>
+ <br/>
+ <a
href="/coreWeb/miniTests/actionInterceptors/overrideForwards/Controller.jpf">test
various ways of overriding the destination of an intercepted action</a>
+ <br/>
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ </ses:tests>
+ <ses:endDate>24 Jan 2005, 12:44:09.907 AM MST</ses:endDate>
+ <ses:testCount>14</ses:testCount>
+</ses:recorderSession>