org.apache.myfaces.flow
Class FlowHandlerImpl

java.lang.Object
  extended by javax.faces.flow.FlowHandler
      extended by org.apache.myfaces.flow.FlowHandlerImpl

public class FlowHandlerImpl
extends FlowHandler

Since:
2.2
Author:
Leonardo Uribe

Field Summary
 
Fields inherited from class javax.faces.flow.FlowHandler
FLOW_ID_REQUEST_PARAM_NAME, NULL_FLOW, TO_FLOW_DOCUMENT_ID_REQUEST_PARAM_NAME
 
Constructor Summary
FlowHandlerImpl()
           
 
Method Summary
 void addFlow(FacesContext context, Flow toAdd)
           
 void clientWindowTransition(FacesContext context)
          The interpretation done for this issue is this: There are two basic cases: Enter into a flow and return from a flow.
 List<Flow> getActiveFlows(FacesContext context)
           
static List<Flow> getActiveFlows(FacesContext facesContext, FlowHandler fh)
           
 Flow getCurrentFlow(FacesContext context)
           
 Map<Object,Object> getCurrentFlowScope()
           
 FacesFlowProvider getFacesFlowProvider(FacesContext facesContext)
           
 Flow getFlow(FacesContext context, String definingDocumentId, String id)
           
 String getLastDisplayedViewId(FacesContext context)
           
 boolean isActive(FacesContext context, String definingDocumentId, String id)
           
 void popReturnMode(FacesContext context)
           
 void pushReturnMode(FacesContext context)
           
 void transition(FacesContext context, Flow sourceFlow, Flow targetFlow, FlowCallNode outboundCallNode, String toViewId)
           
 
Methods inherited from class javax.faces.flow.FlowHandler
getCurrentFlow
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FlowHandlerImpl

public FlowHandlerImpl()
Method Detail

getFlow

public Flow getFlow(FacesContext context,
                    String definingDocumentId,
                    String id)
Specified by:
getFlow in class FlowHandler

addFlow

public void addFlow(FacesContext context,
                    Flow toAdd)
Specified by:
addFlow in class FlowHandler

getCurrentFlow

public Flow getCurrentFlow(FacesContext context)
Specified by:
getCurrentFlow in class FlowHandler

transition

public void transition(FacesContext context,
                       Flow sourceFlow,
                       Flow targetFlow,
                       FlowCallNode outboundCallNode,
                       String toViewId)
Specified by:
transition in class FlowHandler

getFacesFlowProvider

public FacesFlowProvider getFacesFlowProvider(FacesContext facesContext)

isActive

public boolean isActive(FacesContext context,
                        String definingDocumentId,
                        String id)
Specified by:
isActive in class FlowHandler

getCurrentFlowScope

public Map<Object,Object> getCurrentFlowScope()
Specified by:
getCurrentFlowScope in class FlowHandler

clientWindowTransition

public void clientWindowTransition(FacesContext context)
The interpretation done for this issue is this: There are two basic cases: Enter into a flow and return from a flow. - FlowHandler.TO_FLOW_DOCUMENT_ID_REQUEST_PARAM_NAME : value of the toFlowDocumentId property of the navigation case when enter into a flow OR FlowHandler.NULL_FLOW when return from a flow. - FlowHandler.FLOW_ID_REQUEST_PARAM_NAME : value of the fromOutcome property of the navigation case. According to the intention it has multiple options: 1. It can be a flowId, which means enter into a flow. 2. It can be a flow call id, which means enter into a flow. 3. It can be a flow return id, which means return from a flow. - The javadoc of NavigationCase.getToFlowDocumentId() says this: "... If this navigation case represents a flow invocation, this property is the documentId in which the flow whose id is given by the return from getFromOutcome() is defined. Implementations must override this method to return the value defined in the corresponding application configuration resources element. The base implementation returns the empty string. ..." This is consistent with the previous interpretation, but we need to include the case where toFlowDocumentId is FlowHandler.NULL_FLOW too, which is derived implicitly. The key of the trick is override fromOutcome / toFlowDocumentId in the navigation algorithm to indicate when the navigation case is entering into a flow or return from a flow. In that way, it is possible to use ConfigurableNavigationHandler.getNavigationCase(...) to know the "route" using the initial fromOutcome given in FLOW_ID_REQUEST_PARAM_NAME.

Specified by:
clientWindowTransition in class FlowHandler
Parameters:
context -

getLastDisplayedViewId

public String getLastDisplayedViewId(FacesContext context)
Specified by:
getLastDisplayedViewId in class FlowHandler

pushReturnMode

public void pushReturnMode(FacesContext context)
Specified by:
pushReturnMode in class FlowHandler

popReturnMode

public void popReturnMode(FacesContext context)
Specified by:
popReturnMode in class FlowHandler

getActiveFlows

public List<Flow> getActiveFlows(FacesContext context)

getActiveFlows

public static List<Flow> getActiveFlows(FacesContext facesContext,
                                        FlowHandler fh)


Copyright © 2014 The Apache Software Foundation. All rights reserved.