View Javadoc

1   /*
2    *
3    *   Copyright 2005-2006 The Apache Software Foundation.
4    *
5    *  Licensed under the Apache License, Version 2.0 (the "License");
6    *  you may not use this file except in compliance with the License.
7    *  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   *  Unless required by applicable law or agreed to in writing, software
12   *  distributed under the License is distributed on an "AS IS" BASIS,
13   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   *  See the License for the specific language governing permissions and
15   *  limitations under the License.
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 &quot;stay&quot; transitions.
108      *  Returns parent (the source node) for &quot;self&quot; 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 &quot;stay&quot; and &quot;self&quot;
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