org.jboss.seam.core
Class Conversation

java.lang.Object
  extended by org.jboss.seam.core.Conversation
All Implemented Interfaces:
Serializable

@Scope(value=CONVERSATION)
@Name(value="org.jboss.seam.core.conversation")
@Install(precedence=0)
@BypassInterceptors
public class Conversation
extends Object
implements Serializable

Allows the conversation timeout to be set per-conversation, and the conversation description and switchable outcome to be set when the application requires workspace management functionality.

Author:
Gavin King
See Also:
Serialized Form

Constructor Summary
Conversation()
           
 
Method Summary
 boolean begin()
          Start a long-running conversation, if no long-running conversation is active.
 boolean begin(boolean join, boolean nested)
          Begin or join a conversation, or begin a new nested conversation.
 void beginNested()
          Start a nested conversation.
 void changeFlushMode(FlushModeType flushMode)
          Change the flush mode of all Seam-managed persistence contexts in this conversation.
 void end()
          End a long-runnning conversation.
 void end(boolean beforeRedirect)
          End a long-runnning conversation.
 boolean endAndRedirect()
          End a child conversation and redirect to the last defined view-id for the parent conversation.
 boolean endAndRedirect(boolean endBeforeRedirect)
          End a child conversation and redirect to the last defined view-id for the parent conversation.
 void endBeforeRedirect()
          End a long-runnning conversation and destroy it before a redirect.
 Integer getConcurrentRequestTimeout()
           
 String getDescription()
           
 String getId()
          Get the conversation id.
 String getParentId()
          Get the id of the immediate parent of a nested conversation
 String getRootId()
          Get the id of root conversation of a nested conversation
 Integer getTimeout()
          Get the timeout for this conversation instance.
 String getViewId()
           
static Conversation instance()
           
 boolean isLongRunning()
          Is this conversation long-running? Note that this method returns false even when the conversation has been temporarily promoted to long-running for the course of a redirect, so it does what the user really expects.
 boolean isNested()
          Is this conversation a nested conversation?
 void killAllOthers()
          Kills all conversations except the current one
 void leave()
          Leave the scope of the current conversation
 void pop()
          "Pop" the conversation stack, switching to the parent conversation
 boolean redirect()
          Switch back to the last defined view-id for the current conversation.
 boolean redirectToParent()
          Pop the conversation stack and redirect to the last defined view-id for the parent conversation.
 boolean redirectToRoot()
          Switch to the root conversation and redirect to the last defined view-id for the root conversation.
 void root()
          Switch to the root conversation
 void setConcurrentRequestTimeout(Integer concurrentRequestTimeout)
           
 void setDescription(String description)
          Sets the description of this conversation, for use in the conversation list, breadcrumbs, or conversation switcher.
 void setTimeout(Integer timeout)
          Set the timeout for this converstaion instance.
 void setViewId(String outcome)
          Sets the JSF outcome to be used when we switch back to this conversation from the conversation list, breadcrumbs, or conversation switcher.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Conversation

public Conversation()
Method Detail

killAllOthers

public void killAllOthers()
Kills all conversations except the current one


getTimeout

public Integer getTimeout()
Get the timeout for this conversation instance.

Returns:
the timeout in millis

setTimeout

public void setTimeout(Integer timeout)
Set the timeout for this converstaion instance.

Parameters:
timeout - the timeout in millis

getConcurrentRequestTimeout

public Integer getConcurrentRequestTimeout()

setConcurrentRequestTimeout

public void setConcurrentRequestTimeout(Integer concurrentRequestTimeout)

getId

public String getId()
Get the conversation id.


getDescription

public String getDescription()

getViewId

public String getViewId()

setDescription

public void setDescription(String description)
Sets the description of this conversation, for use in the conversation list, breadcrumbs, or conversation switcher.


setViewId

public void setViewId(String outcome)
Sets the JSF outcome to be used when we switch back to this conversation from the conversation list, breadcrumbs, or conversation switcher.


instance

public static Conversation instance()

redirect

public boolean redirect()
Switch back to the last defined view-id for the current conversation.

Returns:
true if a redirect occurred

endAndRedirect

public boolean endAndRedirect()
End a child conversation and redirect to the last defined view-id for the parent conversation.

Returns:
true if a redirect occurred

endAndRedirect

public boolean endAndRedirect(boolean endBeforeRedirect)
End a child conversation and redirect to the last defined view-id for the parent conversation.

Parameters:
endBeforeRedirect - should the conversation be destroyed before the redirect?
Returns:
true if a redirect occurred

leave

public void leave()
Leave the scope of the current conversation


begin

public boolean begin()
Start a long-running conversation, if no long-running conversation is active.

Returns:
true if a new long-running conversation was begun

beginNested

public void beginNested()
Start a nested conversation.

Throws:
IllegalStateException - if no long-running conversation was active

begin

public boolean begin(boolean join,
                     boolean nested)
Begin or join a conversation, or begin a new nested conversation.

Parameters:
join - if a conversation is active, should we join it?
nested - if a conversation is active, should we start a new nested conversation?
Returns:
true if a new long-running conversation was begun

end

public void end()
End a long-runnning conversation.


endBeforeRedirect

public void endBeforeRedirect()
End a long-runnning conversation and destroy it before a redirect.


end

public void end(boolean beforeRedirect)
End a long-runnning conversation.

Parameters:
beforeRedirect - should the conversation be destroyed before any redirect?

isLongRunning

public boolean isLongRunning()
Is this conversation long-running? Note that this method returns false even when the conversation has been temporarily promoted to long-running for the course of a redirect, so it does what the user really expects.


isNested

public boolean isNested()
Is this conversation a nested conversation?


getParentId

public String getParentId()
Get the id of the immediate parent of a nested conversation


getRootId

public String getRootId()
Get the id of root conversation of a nested conversation


pop

public void pop()
"Pop" the conversation stack, switching to the parent conversation


redirectToParent

public boolean redirectToParent()
Pop the conversation stack and redirect to the last defined view-id for the parent conversation.

Returns:
true if a redirect occurred

root

public void root()
Switch to the root conversation


redirectToRoot

public boolean redirectToRoot()
Switch to the root conversation and redirect to the last defined view-id for the root conversation.

Returns:
true if a redirect occurred

changeFlushMode

public void changeFlushMode(FlushModeType flushMode)
Change the flush mode of all Seam-managed persistence contexts in this conversation.



Copyright © 2011 Seam Framework. All Rights Reserved.