1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.scxml.model;
19
20 /***
21 * The class in this SCXML object model that corresponds to the
22 * <transition> SCXML element. Transition rules are triggered
23 * by "events" and conditionalized via
24 * "guard-conditions".
25 *
26 */
27 public class Transition extends Executable {
28
29 /***
30 * Property that specifies the trigger for this transition.
31 */
32 private String event;
33
34 /***
35 * Optional guard condition.
36 */
37 private String cond;
38
39 /***
40 * Optional property that specifies the new state or parallel
41 * element to transition to. May be specified by reference or in-line.
42 */
43 private TransitionTarget target;
44
45 /***
46 * The transition target ID (used by XML Digester only).
47 */
48 private String next;
49
50 /***
51 * The path for this transition.
52 * @see Path
53 */
54 private Path path;
55
56 /***
57 * Constructor.
58 */
59 public Transition() {
60 super();
61 this.target = null;
62 this.path = null;
63 }
64
65 /***
66 * Get the guard condition (may be null).
67 *
68 * @return Returns the cond.
69 */
70 public final String getCond() {
71 return cond;
72 }
73
74 /***
75 * Set the guard condition.
76 *
77 * @param cond The cond to set.
78 */
79 public final void setCond(final String cond) {
80 this.cond = cond;
81 }
82
83 /***
84 * Get the event that will trigger this transition (pending
85 * evaluation of the guard condition in favor).
86 *
87 * @return Returns the event.
88 */
89 public final String getEvent() {
90 return event;
91 }
92
93 /***
94 * Set the event that will trigger this transition (pending
95 * evaluation of the guard condition in favor).
96 *
97 * @param event The event to set.
98 */
99 public final void setEvent(final String event) {
100 this.event = event;
101 }
102
103 /***
104 * Get the transition target (may be null).
105 *
106 * @return Returns the target as specified in SCXML markup.
107 * <p>Remarks: Is <code>null</code> for "stay" transitions.
108 * Returns parent (the source node) for "self" transitions.</p>
109 */
110 public final TransitionTarget getTarget() {
111 return target;
112 }
113
114 /***
115 * Get the runtime transition target, which always resolves to
116 * a TransitionTarget instance.
117 *
118 * @return Returns the actual target of a transition at runtime.
119 * <p>Remarks: For both the "stay" and "self"
120 * transitions it returns parent (the source node). This method should
121 * never return <code>null</code>.</p>
122 */
123 public final TransitionTarget getRuntimeTarget() {
124 if (target != null) {
125 return target;
126 }
127 return getParent();
128 }
129
130
131 /***
132 * Set the transition target.
133 *
134 * @param target The target to set.
135 */
136 public final void setTarget(final TransitionTarget target) {
137 this.target = target;
138 }
139
140 /***
141 * Get the ID of the transition target (may be null, if, for example,
142 * the target is specified inline).
143 *
144 * @return String Returns the transition target ID
145 * (used by SCXML Digester only).
146 * @see #getTarget()
147 */
148 public final String getNext() {
149 return next;
150 }
151
152 /***
153 * Set the transition target by specifying its ID.
154 *
155 * @param next The the transition target ID (used by SCXML Digester only).
156 * @see #setTarget(TransitionTarget)
157 */
158 public final void setNext(final String next) {
159 this.next = next;
160 }
161
162 /***
163 * Get the path of this transiton.
164 *
165 * @see Path
166 * @return Path returns the transition path
167 */
168 public final Path getPath() {
169 if (path == null) {
170 path = new Path(getParent(), getTarget());
171 }
172 return path;
173 }
174
175 }
176