Package org.apache.myfaces.flow
Class FlowHandlerImpl
java.lang.Object
jakarta.faces.flow.FlowHandler
org.apache.myfaces.flow.FlowHandlerImpl
- All Implemented Interfaces:
- FacesListener,- SystemEventListener,- EventListener
- Since:
- 2.2
- Author:
- Leonardo Uribe
- 
Field SummaryFields inherited from class jakarta.faces.flow.FlowHandlerFLOW_ID_REQUEST_PARAM_NAME, NULL_FLOW, TO_FLOW_DOCUMENT_ID_REQUEST_PARAM_NAME
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionvoidaddFlow(FacesContext context, Flow toAdd) voidclientWindowTransition(FacesContext context) The interpretation done for this issue is this: There are two basic cases: Enter into a flow and return from a flow.getActiveFlows(FacesContext context) getActiveFlows(FacesContext facesContext, FlowHandler fh) getCurrentFlow(FacesContext context) getFacesFlowProvider(FacesContext facesContext) getFlow(FacesContext context, String definingDocumentId, String id) getLastDisplayedViewId(FacesContext context) booleanisActive(FacesContext context, String definingDocumentId, String id) booleanisListenerForSource(Object source) voidpopReturnMode(FacesContext context) voidprocessEvent(SystemEvent event) voidpushReturnMode(FacesContext context) voidtransition(FacesContext context, Flow sourceFlow, Flow targetFlow, FlowCallNode outboundCallNode, String toViewId) Methods inherited from class jakarta.faces.flow.FlowHandlergetCurrentFlow
- 
Constructor Details- 
FlowHandlerImplpublic FlowHandlerImpl()
 
- 
- 
Method Details- 
getFlow- Specified by:
- getFlowin class- FlowHandler
 
- 
addFlow- Specified by:
- addFlowin class- FlowHandler
 
- 
getCurrentFlow- Specified by:
- getCurrentFlowin class- FlowHandler
 
- 
transitionpublic void transition(FacesContext context, Flow sourceFlow, Flow targetFlow, FlowCallNode outboundCallNode, String toViewId) - Specified by:
- transitionin class- FlowHandler
 
- 
getFacesFlowProvider
- 
isActive- Specified by:
- isActivein class- FlowHandler
 
- 
getCurrentFlowScope- Specified by:
- getCurrentFlowScopein class- FlowHandler
 
- 
clientWindowTransitionThe 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:
- clientWindowTransitionin class- FlowHandler
- Parameters:
- context-
 
- 
getLastDisplayedViewId- Specified by:
- getLastDisplayedViewIdin class- FlowHandler
 
- 
pushReturnMode- Specified by:
- pushReturnModein class- FlowHandler
 
- 
popReturnMode- Specified by:
- popReturnModein class- FlowHandler
 
- 
getActiveFlows
- 
getActiveFlows
- 
isListenerForSource- Specified by:
- isListenerForSourcein interface- SystemEventListener
 
- 
processEvent- Specified by:
- processEventin interface- SystemEventListener
 
 
-