Spring Web Flow

org.springframework.webflow.test
Class MockRequestContext

java.lang.Object
  extended by org.springframework.webflow.test.MockRequestContext
All Implemented Interfaces:
RequestContext
Direct Known Subclasses:
MockRequestControlContext

public class MockRequestContext
extends java.lang.Object
implements RequestContext

Mock implementation of the RequestContext interface to facilitate standalone flow artifact (e.g. action) unit tests.

Author:
Keith Donald, Erwin Vervaet
See Also:
RequestContext, Action

Constructor Summary
MockRequestContext()
          Convenience constructor that creates a new mock request context with the following defaults: A mock flow execution context with a active session of flow "mockFlow" in state "mockState".
MockRequestContext(Flow flow)
          Convenience constructor that creates a new mock request context with the following defaults: A mock flow execution context with an active session for the specified flow.
MockRequestContext(FlowExecutionContext flowExecutionContext)
          Creates a new mock request context with the provided flow execution context.
MockRequestContext(ParameterMap requestParameterMap)
          Convenience constructor that creates a new mock request context with the following defaults: A mock flow execution context with a active session of flow "mockFlow" in state "mockState".
 
Method Summary
 FlowDefinition getActiveFlow()
          Returns the definition of the flow that is currently executing.
 MutableAttributeMap<java.lang.Object> getAttributeMap()
          Returns the contained mutable context attribute map allowing setting of mock context attributes.
 MutableAttributeMap<java.lang.Object> getAttributes()
          Returns a context map for accessing attributes about the state of the current request.
 MutableAttributeMap<java.lang.Object> getConversationScope()
          Returns a mutable accessor for accessing and/or setting attributes in conversation scope.
 Event getCurrentEvent()
          Returns the current event being processed by this flow.
 StateDefinition getCurrentState()
          Returns the current state of the executing flow.
 TransitionDefinition getCurrentTransition()
          Returns the current transition executing in this request.
 View getCurrentView()
          Returns the current view in use; if not null, the view returned is about to be rendered, is rendering, is processing a user event, or has finished user event processing and the current ViewState is exiting due to a state transition.
 ExternalContext getExternalContext()
          Returns the external client context that originated (or triggered) this request.
 MutableAttributeMap<java.lang.Object> getFlashScope()
          Returns a mutable map for accessing and/or setting attributes in flash scope.
 FlowExecutionContext getFlowExecutionContext()
          Returns contextual information about the flow execution itself.
 java.lang.String getFlowExecutionUrl()
          Returns the URL of this flow execution.
 MutableAttributeMap<java.lang.Object> getFlowScope()
          Returns a mutable map for accessing and/or setting attributes in flow scope.
 TransitionDefinition getMatchingTransition(java.lang.String eventId)
          Returns the transition that would execute on the occurrence of the given event.
 MessageContext getMessageContext()
          Returns the message context of this request.
 MockExternalContext getMockExternalContext()
          Returns the external context as a MockExternalContext.
 MockFlowExecutionContext getMockFlowExecutionContext()
          Returns the flow execution context as a MockFlowExecutionContext.
 ParameterMap getRequestParameters()
          Returns the immutable input parameters associated with this request into Spring Web Flow.
 MutableAttributeMap<java.lang.Object> getRequestScope()
          Returns a mutable map for accessing and/or setting attributes in request scope.
 Flow getRootFlow()
          Returns the root flow definition for this request context.
 MutableAttributeMap<java.lang.Object> getViewScope()
          Returns a mutable map for accessing and/or setting attributes in view scope.
 boolean inViewState()
          Returns true if the flow is currently active and in a view state.
 void putRequestParameter(java.lang.String parameterName, org.springframework.web.multipart.MultipartFile parameterValue)
          Puts a MultipartFile request parameter into the mock parameter map.
 void putRequestParameter(java.lang.String parameterName, java.lang.String parameterValue)
          Adds a request parameter to the configured external context.
 void putRequestParameter(java.lang.String parameterName, java.lang.String[] parameterValues)
          Adds a multi-valued request parameter to the configured external context.
 void removeAttribute(java.lang.String attributeName)
          Remove a request context attribute.
 void sendFlowExecutionRedirect()
           
 void setActiveSession(FlowSession flowSession)
          Sets the active flow session of the executing flow associated with this request.
 void setAttribute(java.lang.String attributeName, java.lang.Object attributeValue)
          Set a request context attribute.
 void setCurrentEvent(Event event)
          Set the current event being processed by this flow.
 void setCurrentTransition(Transition transition)
          Set the current transition executing in this request context.
 void setCurrentView(View currentView)
          Set the current view in this request context.
 void setExternalContext(ExternalContext externalContext)
          Sets the external context.
 void setFlowExecutionContext(FlowExecutionContext flowExecutionContext)
          Sets the flow execution context.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MockRequestContext

public MockRequestContext()
Convenience constructor that creates a new mock request context with the following defaults: To add request parameters to this request, use the putRequestParameter(String, String) method.


MockRequestContext

public MockRequestContext(Flow flow)
Convenience constructor that creates a new mock request context with the following defaults: To add request parameters to this request, use the putRequestParameter(String, String) method.

Parameters:
flow - the flow definition

MockRequestContext

public MockRequestContext(ParameterMap requestParameterMap)
Convenience constructor that creates a new mock request context with the following defaults:


MockRequestContext

public MockRequestContext(FlowExecutionContext flowExecutionContext)
Creates a new mock request context with the provided flow execution context. To add request parameters to this request, use the putRequestParameter(String, String) method.

Parameters:
flowExecutionContext - the flow execution context
Method Detail

getActiveFlow

public FlowDefinition getActiveFlow()
Description copied from interface: RequestContext
Returns the definition of the flow that is currently executing.

Specified by:
getActiveFlow in interface RequestContext
Returns:
the flow definition for the active session
See Also:
FlowExecutionContext.isActive()

getCurrentState

public StateDefinition getCurrentState()
Description copied from interface: RequestContext
Returns the current state of the executing flow. Returns null if the active flow's start state has not yet been entered.

Specified by:
getCurrentState in interface RequestContext
Returns:
the current state, or null if in the process of starting
See Also:
FlowExecutionContext.isActive()

getMatchingTransition

public TransitionDefinition getMatchingTransition(java.lang.String eventId)
                                           throws java.lang.IllegalStateException
Description copied from interface: RequestContext
Returns the transition that would execute on the occurrence of the given event.

Specified by:
getMatchingTransition in interface RequestContext
Parameters:
eventId - the id of the user event
Returns:
the transition that would trigger, or null if no transition matches
Throws:
java.lang.IllegalStateException - if this flow execution is not active
See Also:
FlowExecutionContext.isActive()

inViewState

public boolean inViewState()
Description copied from interface: RequestContext
Returns true if the flow is currently active and in a view state. When in a view state RequestContext.getViewScope(), can be safely called.

Specified by:
inViewState in interface RequestContext
Returns:
true if in a view state, false if not
See Also:
RequestContext.getViewScope()

getRequestScope

public MutableAttributeMap<java.lang.Object> getRequestScope()
Description copied from interface: RequestContext
Returns a mutable map for accessing and/or setting attributes in request scope. Request scoped attributes exist for the duration of this request only.

Specified by:
getRequestScope in interface RequestContext
Returns:
the request scope

getFlashScope

public MutableAttributeMap<java.lang.Object> getFlashScope()
Description copied from interface: RequestContext
Returns a mutable map for accessing and/or setting attributes in flash scope. Flash scoped attributes exist until the next event is signaled in the flow execution.

Specified by:
getFlashScope in interface RequestContext
Returns:
the flash scope

getViewScope

public MutableAttributeMap<java.lang.Object> getViewScope()
                                                   throws java.lang.IllegalStateException
Description copied from interface: RequestContext
Returns a mutable map for accessing and/or setting attributes in view scope. View scoped attributes exist for the life of the current view state.

Specified by:
getViewScope in interface RequestContext
Returns:
the view scope
Throws:
java.lang.IllegalStateException - if this flow is not in a view-state or the flow execution is not active
See Also:
RequestContext.inViewState(), FlowExecutionContext.isActive()

getFlowScope

public MutableAttributeMap<java.lang.Object> getFlowScope()
Description copied from interface: RequestContext
Returns a mutable map for accessing and/or setting attributes in flow scope. Flow scoped attributes exist for the life of the active flow session.

Specified by:
getFlowScope in interface RequestContext
Returns:
the flow scope
See Also:
FlowSession, FlowExecutionContext.isActive()

getConversationScope

public MutableAttributeMap<java.lang.Object> getConversationScope()
Description copied from interface: RequestContext
Returns a mutable accessor for accessing and/or setting attributes in conversation scope. Conversation scoped attributes exist for the life of the executing flow and are shared across all flow sessions.

Specified by:
getConversationScope in interface RequestContext
Returns:
the conversation scope
See Also:
FlowExecutionContext

getRequestParameters

public ParameterMap getRequestParameters()
Description copied from interface: RequestContext
Returns the immutable input parameters associated with this request into Spring Web Flow. The map returned is immutable and cannot be changed.

This is typically a convenient shortcut for accessing the ExternalContext.getRequestParameterMap() directly.

Specified by:
getRequestParameters in interface RequestContext
See Also:
RequestContext.getExternalContext()

getMessageContext

public MessageContext getMessageContext()
Description copied from interface: RequestContext
Returns the message context of this request. Useful for recording messages during the course of flow execution for display to the client.

Specified by:
getMessageContext in interface RequestContext
Returns:
the message context

getExternalContext

public ExternalContext getExternalContext()
Description copied from interface: RequestContext
Returns the external client context that originated (or triggered) this request.

Acting as a facade, the returned context object provides a single point of access to the calling client's environment. It provides normalized access to attributes of the client environment without tying you to specific constructs within that environment.

In addition, this context may be downcastable to a specific context type for a specific client environment, such as Servlets or Portlets. Such downcasting will give you full access to a native HttpServletRequest, for example. With that said, for portability reasons you should avoid coupling your flow artifacts to a specific deployment environment when possible.

Specified by:
getExternalContext in interface RequestContext
Returns:
the originating external context, the one that triggered the current execution request

getFlowExecutionContext

public FlowExecutionContext getFlowExecutionContext()
Description copied from interface: RequestContext
Returns contextual information about the flow execution itself. Information in this context typically spans more than one request.

Specified by:
getFlowExecutionContext in interface RequestContext
Returns:
the flow execution context

getCurrentEvent

public Event getCurrentEvent()
Description copied from interface: RequestContext
Returns the current event being processed by this flow. The event may or may not have caused a state transition to happen.

Specified by:
getCurrentEvent in interface RequestContext
Returns:
the current event, or null if no event has been signaled yet

getCurrentTransition

public TransitionDefinition getCurrentTransition()
Description copied from interface: RequestContext
Returns the current transition executing in this request.

Specified by:
getCurrentTransition in interface RequestContext
Returns:
the current transition, or null if no transition has occurred yet

getCurrentView

public View getCurrentView()
Description copied from interface: RequestContext
Returns the current view in use; if not null, the view returned is about to be rendered, is rendering, is processing a user event, or has finished user event processing and the current ViewState is exiting due to a state transition. Returns null if the flow is not in a view state.

Specified by:
getCurrentView in interface RequestContext
Returns:
the current view, or null if the flow is not in a view state

getAttributes

public MutableAttributeMap<java.lang.Object> getAttributes()
Description copied from interface: RequestContext
Returns a context map for accessing attributes about the state of the current request. These attributes may be used to influence flow execution behavior.

Specified by:
getAttributes in interface RequestContext
Returns:
the current attributes of this request, or empty if none are set

getFlowExecutionUrl

public java.lang.String getFlowExecutionUrl()
Description copied from interface: RequestContext
Returns the URL of this flow execution. Needed by response writers that write out the URL of this flow execution to allow calling back this execution in a subsequent request.

Specified by:
getFlowExecutionUrl in interface RequestContext
Returns:
the flow execution URL

sendFlowExecutionRedirect

public void sendFlowExecutionRedirect()

setActiveSession

public void setActiveSession(FlowSession flowSession)
Sets the active flow session of the executing flow associated with this request. This will influence getActiveFlow() and getCurrentState(), as well as getFlowScope() and getFlashScope().


setExternalContext

public void setExternalContext(ExternalContext externalContext)
Sets the external context.


setFlowExecutionContext

public void setFlowExecutionContext(FlowExecutionContext flowExecutionContext)
Sets the flow execution context.


setCurrentEvent

public void setCurrentEvent(Event event)
Set the current event being processed by this flow.

Parameters:
event - the current event

setCurrentTransition

public void setCurrentTransition(Transition transition)
Set the current transition executing in this request context.

Parameters:
transition - the current transition to set

setCurrentView

public void setCurrentView(View currentView)
Set the current view in this request context.

Parameters:
currentView - the current view

setAttribute

public void setAttribute(java.lang.String attributeName,
                         java.lang.Object attributeValue)
Set a request context attribute.

Parameters:
attributeName - the attribute name
attributeValue - the attribute value

removeAttribute

public void removeAttribute(java.lang.String attributeName)
Remove a request context attribute.

Parameters:
attributeName - the attribute name

putRequestParameter

public void putRequestParameter(java.lang.String parameterName,
                                java.lang.String parameterValue)
Adds a request parameter to the configured external context.

Parameters:
parameterName - the parameter name
parameterValue - the parameter value

putRequestParameter

public void putRequestParameter(java.lang.String parameterName,
                                java.lang.String[] parameterValues)
Adds a multi-valued request parameter to the configured external context.

Parameters:
parameterName - the parameter name
parameterValues - the parameter values

putRequestParameter

public void putRequestParameter(java.lang.String parameterName,
                                org.springframework.web.multipart.MultipartFile parameterValue)
Puts a MultipartFile request parameter into the mock parameter map.

Parameters:
parameterName - the parameter name
parameterValue - the parameter value

getRootFlow

public Flow getRootFlow()
Returns the root flow definition for this request context. Assumes a Flow implementation.


getAttributeMap

public MutableAttributeMap<java.lang.Object> getAttributeMap()
Returns the contained mutable context attribute map allowing setting of mock context attributes.

Returns:
the attribute map

getMockFlowExecutionContext

public MockFlowExecutionContext getMockFlowExecutionContext()
Returns the flow execution context as a MockFlowExecutionContext.


getMockExternalContext

public MockExternalContext getMockExternalContext()
Returns the external context as a MockExternalContext.


Spring Web Flow