Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## com.opensymphony.xwork2.interceptor.annotations
Class AnnotationWorkflowInterceptor

    java.lang.Object
      com.opensymphony.xwork2.interceptor.annotations.AnnotationWorkflowInterceptor

All Implemented Interfaces:
  Interceptor, PreResultListener, java.io.Serializable

    public class AnnotationWorkflowInterceptor

extends java.lang.Object
implements Interceptor, PreResultListener

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

- @`Before` - will be invoked before the action method. If the returned value is not null, it is returned as the action result code
- @`BeforeResult` - will be invoked after the action method but before the result execution
- @`After` - will be invoked after the action method and result execution

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, java.lang.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.
`java.lang.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 java.lang.String intercept(ActionInvocation invocation)
                               throws java.lang.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:
    `java.lang.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,
                             java.lang.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)`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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