//$Id: End.java 8990 2008-09-14 16:40:40Z jacob.orshalick $
package org.jboss.seam.annotations;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
/**
* Marks a method as ending a conversation, if the
* method returns a non-null outcome without throwing
* an exception. If a list of outcomes is specified,
* the conversation ends only if the outcome is in
* the list. A null outcome never ends the conversation.
* If the method is of type void, the conversation always
* ends.
*
* @author Gavin King
*/
@Target(METHOD)
@Retention(RUNTIME)
@Documented
public @interface End
{
/**
* An empty outcome list is interpreted to mean any
* outcome except for the null (redisplay) outcome.
*
* @deprecated use Conversation.instance().end()
*/
String[] ifOutcome() default {};
/**
* Should the conversation be destroyed before any
* redirect? (The default behavior is to propagate
* the conversation across the redirect and then
* destroy it at the end of the redirected request.)
*
* @return false by default
*/
boolean beforeRedirect() default false;
/**
* If the conversation is nested, should the root
* of the conversation be destroyed? (The default
* behavior is to simply pop the conversation
* stack.)
*
* @return false by default
*/
boolean root() default false;
}