org.springframework.webflow.test
Class MockExternalContext

java.lang.Object
  extended by org.springframework.webflow.test.MockExternalContext
All Implemented Interfaces:
ExternalContext

public class MockExternalContext
extends Object
implements ExternalContext

Mock implementation of the ExternalContext interface.

Author:
Keith Donald
See Also:
ExternalContext

Constructor Summary
MockExternalContext()
          Creates a mock external context with an empty request parameter map.
MockExternalContext(ParameterMap requestParameterMap)
          Creates a mock external context with the specified parameters in the request parameter map.
 
Method Summary
 SharedAttributeMap getApplicationMap()
          Provides access to the external application map, providing a storage for data local to the current user application and accessible to both internal and external SWF artifacts.
 String getContextPath()
          Returns the logical path to the application hosting this external context.
 Principal getCurrentUser()
          Provides access to the user's principal security object.
 boolean getExternalRedirectRequested()
          Returns the flag indicating if an external redirect response has been requested by the flow.
 String getExternalRedirectUrl()
          Returns the URL to redirect to.
 boolean getFlowDefinitionRedirectRequested()
          Returns the flag indicating if a flow definition redirect response has been requested by the flow.
 boolean getFlowExecutionRedirectRequested()
          Returns the flag indicating if a flow execution redirect response has been requested by the flow.
 String getFlowExecutionUrl(String flowId, String flowExecutionKey)
          Get a flow execution URL for the execution with the provided key.
 String getFlowRedirectFlowId()
          Returns the id of the flow definition to redirect to.
 MutableAttributeMap getFlowRedirectFlowInput()
          Returns the input to pass the flow definition through the redirect.
 SharedAttributeMap getGlobalSessionMap()
          Provides access to the global external session map, providing a storage for data globally accross the user session and accessible to both internal and external SWF artifacts.
 Locale getLocale()
          Returns the client locale.
 MockParameterMap getMockRequestParameterMap()
          Returns the request parameter map as a MockParameterMap for convenient access in a unit test.
 StringWriter getMockResponseWriter()
          Returns the implementation of this mock context's response writer.
 Object getNativeContext()
          Provides access to the context object for the current environment.
 Object getNativeRequest()
          Provides access to the request object for the current environment.
 Object getNativeResponse()
          Provides access to the response object for the current environment.
 boolean getRedirectInPopup()
          If a redirect response has been requested, indicates if the redirect should be issued from a popup dialog.
 MutableAttributeMap getRequestMap()
          Provides access to the external request attribute map, providing a storage for data local to the current user request and accessible to both internal and external SWF artifacts.
 ParameterMap getRequestParameterMap()
          Provides access to the parameters associated with the user request that led to SWF being called.
 Writer getResponseWriter()
          Get a writer for writing out a response.
 SharedAttributeMap getSessionMap()
          Provides access to the external session map, providing a storage for data local to the current user session and accessible to both internal and external SWF artifacts.
 boolean isAjaxRequest()
          Returns true if the current request is an asynchronous Ajax request.
 boolean isRedirectRequested()
           
 boolean isResponseAllowed()
          Is a render response allowed to be written for this request? Always return false after a response has been completed.
 boolean isResponseComplete()
          Has the response been completed? Response complete status can be achieved by: Writing out the response and calling ExternalContext.recordResponseComplete(), or Calling one of the redirect request methods
 boolean isResponseCompleteFlowExecutionRedirect()
          Returns true if the response has been completed with flow execution redirect request.
 void putRequestParameter(String parameterName, org.springframework.web.multipart.MultipartFile parameterValue)
          Puts a MultipartFile request parameter into the mock parameter map.
 void putRequestParameter(String parameterName, String parameterValue)
          Puts a request parameter into the mock parameter map.
 void putRequestParameter(String parameterName, String[] parameterValues)
          Puts a multi-valued request parameter into the mock parameter map.
 void recordResponseComplete()
          Called by flow artifacts such as View states and end states to indicate they handled the response, typically by writing out content to the response stream.
 void requestExternalRedirect(String uri)
          Request a redirect to an arbitrary resource location.
 void requestFlowDefinitionRedirect(String flowId, MutableAttributeMap input)
          Request that a flow definition redirect be performed by the calling environment.
 void requestFlowExecutionRedirect()
          Request that a flow execution redirect be performed by the calling environment.
 void requestRedirectInPopup()
          Request that the current redirect requested be sent to the client in a manner that causes the client to issue the redirect from a popup dialog.
 void setAjaxRequest(boolean ajaxRequest)
          Set whether this request is an ajax request.
 void setApplicationMap(SharedAttributeMap applicationMap)
          Set the application attribute map.
 void setContextPath(String contextPath)
          Set the context path of the application.
 void setCurrentUser(Principal currentUser)
          Sets the current user principal.
 void setCurrentUser(String currentUser)
          Convenience method that sets the current user principal as a string.
 void setEventId(String eventId)
          Sets the id of the event that should be signaled by this context.
 void setGlobalSessionMap(SharedAttributeMap globalSessionMap)
          Set the global session attribute map.
 void setLocale(Locale locale)
          Sets the client locale.
 void setNativeContext(Object nativeContext)
          Set the native context object.
 void setNativeRequest(Object nativeRequest)
          Set the native request object.
 void setNativeResponse(Object nativeResponse)
          Set the native response object.
 void setRequestMap(MutableAttributeMap requestMap)
          Set the request attribute map.
 void setRequestParameterMap(ParameterMap requestParameterMap)
          Set the request parameter map.
 void setResponseAllowed(boolean responseAllowed)
          Set the response allows flag to a value for testing.
 void setSessionMap(SharedAttributeMap sessionMap)
          Set the session attribute map.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MockExternalContext

public MockExternalContext()
Creates a mock external context with an empty request parameter map. Allows for bean style usage.


MockExternalContext

public MockExternalContext(ParameterMap requestParameterMap)
Creates a mock external context with the specified parameters in the request parameter map. All other properties of the external context can be set using the appropriate setter.

Parameters:
requestParameterMap - the request parameters
Method Detail

getContextPath

public String getContextPath()
Description copied from interface: ExternalContext
Returns the logical path to the application hosting this external context.

Specified by:
getContextPath in interface ExternalContext
Returns:
the context path

getRequestParameterMap

public ParameterMap getRequestParameterMap()
Description copied from interface: ExternalContext
Provides access to the parameters associated with the user request that led to SWF being called. This map is expected to be immutable and cannot be changed.

Specified by:
getRequestParameterMap in interface ExternalContext
Returns:
the immutable request parameter map

getRequestMap

public MutableAttributeMap getRequestMap()
Description copied from interface: ExternalContext
Provides access to the external request attribute map, providing a storage for data local to the current user request and accessible to both internal and external SWF artifacts.

Specified by:
getRequestMap in interface ExternalContext
Returns:
the mutable request attribute map

getSessionMap

public SharedAttributeMap getSessionMap()
Description copied from interface: ExternalContext
Provides access to the external session map, providing a storage for data local to the current user session and accessible to both internal and external SWF artifacts.

Specified by:
getSessionMap in interface ExternalContext
Returns:
the mutable session attribute map

getGlobalSessionMap

public SharedAttributeMap getGlobalSessionMap()
Description copied from interface: ExternalContext
Provides access to the global external session map, providing a storage for data globally accross the user session and accessible to both internal and external SWF artifacts.

Note: most external context implementations do not distinguish between the concept of a "local" user session scope and a "global" session scope. The Portlet world does, but not the Servlet for example. In those cases calling this method returns the same map as calling ExternalContext.getSessionMap().

Specified by:
getGlobalSessionMap in interface ExternalContext
Returns:
the mutable global session attribute map

getApplicationMap

public SharedAttributeMap getApplicationMap()
Description copied from interface: ExternalContext
Provides access to the external application map, providing a storage for data local to the current user application and accessible to both internal and external SWF artifacts.

Specified by:
getApplicationMap in interface ExternalContext
Returns:
the mutable application attribute map

getCurrentUser

public Principal getCurrentUser()
Description copied from interface: ExternalContext
Provides access to the user's principal security object.

Specified by:
getCurrentUser in interface ExternalContext
Returns:
the user principal

getLocale

public Locale getLocale()
Description copied from interface: ExternalContext
Returns the client locale.

Specified by:
getLocale in interface ExternalContext
Returns:
the locale

getNativeContext

public Object getNativeContext()
Description copied from interface: ExternalContext
Provides access to the context object for the current environment.

Specified by:
getNativeContext in interface ExternalContext
Returns:
the environment specific context object

getNativeRequest

public Object getNativeRequest()
Description copied from interface: ExternalContext
Provides access to the request object for the current environment.

Specified by:
getNativeRequest in interface ExternalContext
Returns:
the environment specific request object.

getNativeResponse

public Object getNativeResponse()
Description copied from interface: ExternalContext
Provides access to the response object for the current environment.

Specified by:
getNativeResponse in interface ExternalContext
Returns:
the environment specific response object.

isAjaxRequest

public boolean isAjaxRequest()
Description copied from interface: ExternalContext
Returns true if the current request is an asynchronous Ajax request.

Specified by:
isAjaxRequest in interface ExternalContext
Returns:
true if the current request is an Ajax request

getFlowExecutionUrl

public String getFlowExecutionUrl(String flowId,
                                  String flowExecutionKey)
Description copied from interface: ExternalContext
Get a flow execution URL for the execution with the provided key. Typically used by response writers that write out references to the flow execution to support postback on a subsequent request. The URL returned is encoded.

Specified by:
getFlowExecutionUrl in interface ExternalContext
Parameters:
flowId - the flow definition id
flowExecutionKey - the flow execution key
Returns:
the flow execution URL

getResponseWriter

public Writer getResponseWriter()
Description copied from interface: ExternalContext
Get a writer for writing out a response.

Specified by:
getResponseWriter in interface ExternalContext
Returns:
the writer

isResponseAllowed

public boolean isResponseAllowed()
Description copied from interface: ExternalContext
Is a render response allowed to be written for this request? Always return false after a response has been completed. May return false before that to indicate a response is not allowed to be completed. For example, in a Portlet environment, render responses are only allowed in render requests.

Specified by:
isResponseAllowed in interface ExternalContext
Returns:
true if yes, false otherwise

isResponseComplete

public boolean isResponseComplete()
Description copied from interface: ExternalContext
Has the response been completed? Response complete status can be achieved by:

Specified by:
isResponseComplete in interface ExternalContext
Returns:
true if yes, false otherwise
See Also:
ExternalContext.getResponseWriter(), ExternalContext.recordResponseComplete(), ExternalContext.requestFlowExecutionRedirect(), ExternalContext.requestFlowDefinitionRedirect(String, MutableAttributeMap), ExternalContext.requestExternalRedirect(String)

recordResponseComplete

public void recordResponseComplete()
Description copied from interface: ExternalContext
Called by flow artifacts such as View states and end states to indicate they handled the response, typically by writing out content to the response stream. Setting this flag allows this external context to know the response was handled, and that it not need to take additional response handling action itself.

Specified by:
recordResponseComplete in interface ExternalContext

isResponseCompleteFlowExecutionRedirect

public boolean isResponseCompleteFlowExecutionRedirect()
Description copied from interface: ExternalContext
Returns true if the response has been completed with flow execution redirect request.

Specified by:
isResponseCompleteFlowExecutionRedirect in interface ExternalContext
Returns:
true if a redirect response has been completed
See Also:
ExternalContext.isResponseComplete(), ExternalContext.requestFlowExecutionRedirect()

requestFlowExecutionRedirect

public void requestFlowExecutionRedirect()
                                  throws IllegalStateException
Description copied from interface: ExternalContext
Request that a flow execution redirect be performed by the calling environment. Typically called from within a flow execution to request a refresh operation, usually to support "refresh after event processing" behavior. Calling this method also sets responseComplete status to true.

Specified by:
requestFlowExecutionRedirect in interface ExternalContext
Throws:
IllegalStateException - if the response has completed
See Also:
ExternalContext.isResponseComplete()

requestFlowDefinitionRedirect

public void requestFlowDefinitionRedirect(String flowId,
                                          MutableAttributeMap input)
                                   throws IllegalStateException
Description copied from interface: ExternalContext
Request that a flow definition redirect be performed by the calling environment. Typically called from within a flow execution end state to request starting a new, independent execution of a flow in a chain-like manner. Calling this method also sets responseComplete status to true.

Specified by:
requestFlowDefinitionRedirect in interface ExternalContext
Parameters:
flowId - the id of the flow definition to redirect to
input - input to pass the flow; this input is generally encoded the url to launch the flow
Throws:
IllegalStateException - if the response has completed
See Also:
ExternalContext.isResponseComplete()

requestExternalRedirect

public void requestExternalRedirect(String uri)
                             throws IllegalStateException
Description copied from interface: ExternalContext
Request a redirect to an arbitrary resource location. May not be supported in some environments. Calling this method also sets responseComplete status to true.

Specified by:
requestExternalRedirect in interface ExternalContext
Parameters:
uri - the location of the resource to redirect to
Throws:
IllegalStateException - if the response has completed
See Also:
ExternalContext.isResponseComplete()

requestRedirectInPopup

public void requestRedirectInPopup()
                            throws IllegalStateException
Description copied from interface: ExternalContext
Request that the current redirect requested be sent to the client in a manner that causes the client to issue the redirect from a popup dialog. Only call this method after a redirect has been requested.

Specified by:
requestRedirectInPopup in interface ExternalContext
Throws:
IllegalStateException - if a redirect has not been requested
See Also:
ExternalContext.requestFlowExecutionRedirect(), ExternalContext.requestFlowDefinitionRedirect(String, MutableAttributeMap), ExternalContext.requestExternalRedirect(String)

setContextPath

public void setContextPath(String contextPath)
Set the context path of the application.

Parameters:
contextPath - the context path

setRequestParameterMap

public void setRequestParameterMap(ParameterMap requestParameterMap)
Set the request parameter map.

See Also:
ExternalContext.getRequestParameterMap()

setRequestMap

public void setRequestMap(MutableAttributeMap requestMap)
Set the request attribute map.

See Also:
ExternalContext.getRequestMap()

setSessionMap

public void setSessionMap(SharedAttributeMap sessionMap)
Set the session attribute map.

See Also:
ExternalContext.getSessionMap()

setGlobalSessionMap

public void setGlobalSessionMap(SharedAttributeMap globalSessionMap)
Set the global session attribute map. By default the session attribute map and the global session attribute map are one and the same.

See Also:
ExternalContext.getGlobalSessionMap()

setApplicationMap

public void setApplicationMap(SharedAttributeMap applicationMap)
Set the application attribute map.

See Also:
ExternalContext.getApplicationMap()

setNativeContext

public void setNativeContext(Object nativeContext)
Set the native context object.

Parameters:
nativeContext - the native context

setNativeRequest

public void setNativeRequest(Object nativeRequest)
Set the native request object.

Parameters:
nativeRequest - the native request object

setNativeResponse

public void setNativeResponse(Object nativeResponse)
Set the native response object.

Parameters:
nativeResponse - the native response object

setCurrentUser

public void setCurrentUser(Principal currentUser)
Sets the current user principal.

Parameters:
currentUser - the current user

setCurrentUser

public void setCurrentUser(String currentUser)
Convenience method that sets the current user principal as a string.

Parameters:
currentUser - the current user name

setLocale

public void setLocale(Locale locale)
Sets the client locale.

Parameters:
locale - the locale

getMockRequestParameterMap

public MockParameterMap getMockRequestParameterMap()
Returns the request parameter map as a MockParameterMap for convenient access in a unit test.

See Also:
getRequestParameterMap()

putRequestParameter

public void putRequestParameter(String parameterName,
                                String parameterValue)
Puts a request parameter into the mock parameter map.

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

putRequestParameter

public void putRequestParameter(String parameterName,
                                String[] parameterValues)
Puts a multi-valued request parameter into the mock parameter map.

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

putRequestParameter

public void putRequestParameter(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

setEventId

public void setEventId(String eventId)
Sets the id of the event that should be signaled by this context. For use when resuming a flow. This method depends on a MockViewFactory being configured for parsing the event id on a resume operation.

Parameters:
eventId - the id of the event to signal

setAjaxRequest

public void setAjaxRequest(boolean ajaxRequest)
Set whether this request is an ajax request.

Parameters:
ajaxRequest - true or false

setResponseAllowed

public void setResponseAllowed(boolean responseAllowed)
Set the response allows flag to a value for testing.

Parameters:
responseAllowed - true or false

getMockResponseWriter

public StringWriter getMockResponseWriter()
Returns the implementation of this mock context's response writer.

Returns:
the underlying string writer to use for asserting a specific response was written

getFlowExecutionRedirectRequested

public boolean getFlowExecutionRedirectRequested()
Returns the flag indicating if a flow execution redirect response has been requested by the flow.


getFlowDefinitionRedirectRequested

public boolean getFlowDefinitionRedirectRequested()
Returns the flag indicating if a flow definition redirect response has been requested by the flow.


getFlowRedirectFlowId

public String getFlowRedirectFlowId()
Returns the id of the flow definition to redirect to. Only set when getFlowDefinitionRedirectRequested() returns true.


getFlowRedirectFlowInput

public MutableAttributeMap getFlowRedirectFlowInput()
Returns the input to pass the flow definition through the redirect. Only set when getFlowDefinitionRedirectRequested() returns true.


getExternalRedirectRequested

public boolean getExternalRedirectRequested()
Returns the flag indicating if an external redirect response has been requested by the flow.


getExternalRedirectUrl

public String getExternalRedirectUrl()
Returns the URL to redirect to. Only set if getExternalRedirectRequested() returns true.


getRedirectInPopup

public boolean getRedirectInPopup()
If a redirect response has been requested, indicates if the redirect should be issued from a popup dialog.


isRedirectRequested

public boolean isRedirectRequested()