Enum EVirtualFlowGraphNodePurpose
- java.lang.Object
-
- java.lang.Enum<EVirtualFlowGraphNodePurpose>
-
- de.xima.fc.interfaces.workflow.analysis.EVirtualFlowGraphNodePurpose
-
- All Implemented Interfaces:
Serializable
,Comparable<EVirtualFlowGraphNodePurpose>
public enum EVirtualFlowGraphNodePurpose extends Enum<EVirtualFlowGraphNodePurpose>
Enumeration with well-known purposes for having avirtual flow graph node
in a control flow graph. This is used for informative purposes only and does not have an effect on the runtime behavior of the flow graph analysis.- Since:
- 8.2.0
- Author:
- XIMA MEDIA GmbH
-
-
Enum Constant Summary
Enum Constants Enum Constant Description COMPLETION_TYPE_CONVERSION
A virtual node in the flow graph that was introduced for the purpose of modeling a conversion from one type of completion to another type of completion.OTHER
Other purposes, can be used e.g.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static EVirtualFlowGraphNodePurpose
valueOf(String name)
Returns the enum constant of this type with the specified name.static EVirtualFlowGraphNodePurpose[]
values()
Returns an array containing the constants of this enum type, in the order they are declared.
-
-
-
Enum Constant Detail
-
COMPLETION_TYPE_CONVERSION
public static final EVirtualFlowGraphNodePurpose COMPLETION_TYPE_CONVERSION
A virtual node in the flow graph that was introduced for the purpose of modeling a conversion from one type of completion to another type of completion.For example,
pre-test
andpost-test
loop nodes have special handling forbreak statements
. Such statements end abruptly by issuing acontrol transfer
. The loop node catches thatabrupt completion
and converts it to a normal completion. Here, however, we run into a conflict: the outgoing flow graphedge
must be acontrol transfer
edge (since the break node did complete abruptly); while the break node must be anormal
end point with respect to the loop node, implying that outgoing edges would have to be anormal
edge.To resolve this conflict, a virtual
completion type conversion
node is introduced to model the completion type conversion. With the virtual node, the break statement (which is a control-transfer end point) first connects to the virtual node via a control transfer edge, then the virtual node is marked as a normal end point. The normal end point can then be connected to other nodes via normal edges.Another example is a try-catch-finally block. The finally block, when it completes normally, resumes the abrupt completion of the try-catch block, also necessitating a control type conversion. This conversion is modeled with a virtual node in a similar manner to the break statement within loop node: the last child of the finally block first connects to the virtual node via a normal edge. The virtual node is then marked as a
throwing
end point and can be connected to other nodes via athrowing
edge.
-
OTHER
public static final EVirtualFlowGraphNodePurpose OTHER
Other purposes, can be used e.g. by plugins when no other purpose is applicable.
-
-
Method Detail
-
values
public static EVirtualFlowGraphNodePurpose[] values()
Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:for (EVirtualFlowGraphNodePurpose c : EVirtualFlowGraphNodePurpose.values()) System.out.println(c);
- Returns:
- an array containing the constants of this enum type, in the order they are declared
-
valueOf
public static EVirtualFlowGraphNodePurpose valueOf(String name)
Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)- Parameters:
name
- the name of the enum constant to be returned.- Returns:
- the enum constant with the specified name
- Throws:
IllegalArgumentException
- if this enum type has no constant with the specified nameNullPointerException
- if the argument is null
-
-