com.opensymphony.xwork2.interceptor.annotations
Class AnnotationWorkflowInterceptor

java.lang.Object
  extended by com.opensymphony.xwork2.interceptor.annotations.AnnotationWorkflowInterceptor
All Implemented Interfaces:
Interceptor, PreResultListener, Serializable

public class AnnotationWorkflowInterceptor
extends Object
implements Interceptor, PreResultListener

Invokes any annotated methods on the action. Specifically, it supports the following annotations:

There can be multiple methods marked with the same annotations, but the order of their execution is not guaranteed. However, the annotated methods on the superclass chain are guaranteed to be invoked before the annotated method in the current class in the case of a Before annotations and after, if the annotations is After.

 
  public class BaseAnnotatedAction {
        protected String log = "";
 

@Before public String baseBefore() { log = log + "baseBefore-"; return null; } }

public class AnnotatedAction extends BaseAnnotatedAction { @Before public String before() { log = log + "before"; return null; }

public String execute() { log = log + "-execute"; return Action.SUCCESS; }

@BeforeResult public void beforeResult() throws Exception { log = log +"-beforeResult"; }

@After public void after() { log = log + "-after"; } }

With the interceptor applied and the action executed on AnnotatedAction the log instance variable will contain baseBefore-before-execute-beforeResult-after.

Configure a stack in xwork.xml that replaces the PrepareInterceptor with the AnnotationWorkflowInterceptor:

 
 <interceptor-stack name="annotatedStack">
        <interceptor-ref name="staticParams"/>
        <interceptor-ref name="params"/>
        <interceptor-ref name="conversionError"/>
        <interceptor-ref name="annotationWorkflow"/>
 </interceptor-stack>
  
 

Author:
Zsolt Szasz, zsolt at lorecraft dot com, Rainer Hermanns, Dan Oxlade, dan d0t oxlade at gmail d0t c0m
See Also:
Serialized Form

Constructor Summary
AnnotationWorkflowInterceptor()
           
 
Method Summary
 void beforeResult(ActionInvocation invocation, String resultCode)
          Invokes any @BeforeResult annotated methods
protected static int comparePriorities(int val1, int val2)
           
 void destroy()
          Called to let an interceptor clean up any resources it has allocated.
 void init()
          Called after an interceptor is created, but before any requests are processed using intercept , giving the Interceptor a chance to initialize any needed resources.
 String intercept(ActionInvocation invocation)
          Discovers annotated methods on the action and calls them according to the workflow
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AnnotationWorkflowInterceptor

public AnnotationWorkflowInterceptor()
Method Detail

intercept

public String intercept(ActionInvocation invocation)
                 throws Exception
Discovers annotated methods on the action and calls them according to the workflow

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

destroy

public void destroy()
Description copied from interface: Interceptor
Called to let an interceptor clean up any resources it has allocated.

Specified by:
destroy in interface Interceptor

init

public void init()
Description copied from interface: Interceptor
Called after an interceptor is created, but before any requests are processed using intercept , giving the Interceptor a chance to initialize any needed resources.

Specified by:
init in interface Interceptor

comparePriorities

protected static int comparePriorities(int val1,
                                       int val2)

beforeResult

public void beforeResult(ActionInvocation invocation,
                         String resultCode)
Invokes any @BeforeResult annotated methods

Specified by:
beforeResult in interface PreResultListener
Parameters:
invocation - the action invocation
resultCode - the result code returned by the action (eg. success).
See Also:
PreResultListener.beforeResult(com.opensymphony.xwork2.ActionInvocation,String)


Copyright © 2009 OpenSymphony. All Rights Reserved.