org.apache.myfaces.flow
Class FlowHandlerImpl
java.lang.Object
javax.faces.flow.FlowHandler
org.apache.myfaces.flow.FlowHandlerImpl
- All Implemented Interfaces:
- EventListener, FacesListener, SystemEventListener
public class FlowHandlerImpl
- extends FlowHandler
- implements SystemEventListener
- Since:
- 2.2
- Author:
- Leonardo Uribe
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)
|
boolean |
isListenerForSource(Object source)
|
void |
popReturnMode(FacesContext context)
|
void |
processEvent(SystemEvent event)
|
void |
pushReturnMode(FacesContext context)
|
void |
transition(FacesContext context,
Flow sourceFlow,
Flow targetFlow,
FlowCallNode outboundCallNode,
String toViewId)
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
FlowHandlerImpl
public FlowHandlerImpl()
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)
isListenerForSource
public boolean isListenerForSource(Object source)
- Specified by:
isListenerForSource
in interface SystemEventListener
processEvent
public void processEvent(SystemEvent event)
- Specified by:
processEvent
in interface SystemEventListener
Copyright © 2015 The Apache Software Foundation. All rights reserved.