com.opensymphony.xwork2.interceptor
Class ChainingInterceptor

java.lang.Object
  extended by com.opensymphony.xwork2.interceptor.AbstractInterceptor
      extended by com.opensymphony.xwork2.interceptor.ChainingInterceptor
All Implemented Interfaces:
Interceptor, java.io.Serializable

public class ChainingInterceptor
extends AbstractInterceptor

An interceptor that copies all the properties of every object in the value stack to the currently executing object, except for any object that implements Unchainable. A collection of optional includes and excludes may be provided to control how and which parameters are copied. Only includes or excludes may be specified. Specifying both results in undefined behavior. See the javadocs for ReflectionProvider.copy(Object, Object, java.util.Map, java.util.Collection, java.util.Collection) for more information.

Note: It is important to remember that this interceptor does nothing if there are no objects already on the stack.
This means two things:
One, you can safely apply it to all your actions without any worry of adverse affects.
Two, it is up to you to ensure an object exists in the stack prior to invoking this action. The most typical way this is done is through the use of the chain result type, which combines with this interceptor to make up the action chaining feature.

Note: By default Errors, Field errors and Message aren't copied during chaining, to change the behaviour you can specify the below three constants in struts.properties or struts.xml:

Example:

 <constant name="struts.xwork.chaining.copyErrors" value="true"/>
 

Note: By default actionErrors and actionMessages are excluded when copping object's properties.

Interceptor parameters: Extending the interceptor:

There are no known extension points to this interceptor.

Example code:
 
 

<action name="someAction" class="com.examples.SomeAction"> <interceptor-ref name="basicStack"/> <result name="success" type="chain">otherAction</result> </action>

<action name="otherAction" class="com.examples.OtherAction"> <interceptor-ref name="chain"/> <interceptor-ref name="basicStack"/> <result name="success">good_result.ftl</result> </action>

Author:
mrdon, tm_jee ( tm_jee(at)yahoo.co.uk )
See Also:
ActionChainResult, Serialized Form

Field Summary
protected  java.util.Collection<java.lang.String> excludes
           
protected  java.util.Collection<java.lang.String> includes
           
protected  ReflectionProvider reflectionProvider
           
 
Constructor Summary
ChainingInterceptor()
           
 
Method Summary
 java.util.Collection<java.lang.String> getExcludes()
          Gets list of parameter names to exclude
 java.util.Collection<java.lang.String> getIncludes()
          Gets list of parameter names to include
 java.lang.String intercept(ActionInvocation invocation)
          Override to handle interception
 void setCopyErrors(java.lang.String copyErrors)
           
 void setCopyFieldErrors(java.lang.String copyFieldErrors)
           
 void setCopyMessages(java.lang.String copyMessages)
           
 void setExcludes(java.util.Collection<java.lang.String> excludes)
          Sets the list of parameter names to exclude from copying (all others will be included).
 void setIncludes(java.util.Collection<java.lang.String> includes)
          Sets the list of parameter names to include when copying (all others will be excluded).
 void setReflectionProvider(ReflectionProvider prov)
           
 
Methods inherited from class com.opensymphony.xwork2.interceptor.AbstractInterceptor
destroy, init
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

excludes

protected java.util.Collection<java.lang.String> excludes

includes

protected java.util.Collection<java.lang.String> includes

reflectionProvider

protected ReflectionProvider reflectionProvider
Constructor Detail

ChainingInterceptor

public ChainingInterceptor()
Method Detail

setReflectionProvider

public void setReflectionProvider(ReflectionProvider prov)

setCopyErrors

public void setCopyErrors(java.lang.String copyErrors)

setCopyFieldErrors

public void setCopyFieldErrors(java.lang.String copyFieldErrors)

setCopyMessages

public void setCopyMessages(java.lang.String copyMessages)

intercept

public java.lang.String intercept(ActionInvocation invocation)
                           throws java.lang.Exception
Description copied from class: AbstractInterceptor
Override to handle interception

Specified by:
intercept in interface Interceptor
Specified by:
intercept in class AbstractInterceptor
Parameters:
invocation - the action invocation
Returns:
the return code, either returned from ActionInvocation.invoke(), or from the interceptor itself.
Throws:
java.lang.Exception - any system-level error, as defined in Action.execute().

getExcludes

public java.util.Collection<java.lang.String> getExcludes()
Gets list of parameter names to exclude

Returns:
the exclude list

setExcludes

public void setExcludes(java.util.Collection<java.lang.String> excludes)
Sets the list of parameter names to exclude from copying (all others will be included).

Parameters:
excludes - the excludes list

getIncludes

public java.util.Collection<java.lang.String> getIncludes()
Gets list of parameter names to include

Returns:
the include list

setIncludes

public void setIncludes(java.util.Collection<java.lang.String> includes)
Sets the list of parameter names to include when copying (all others will be excluded).

Parameters:
includes - the includes list


Copyright © 2000-2011 Apache Software Foundation. All Rights Reserved.