/*
* Initial version copyright 2008 Lockheed Martin Corporation, except
* as stated in the file entitled Licensing-Information.
*
* All modifications copyright 2009-2012 Data Access Technologies, Inc.
*
* Licensed under the Academic Free License version 3.0
* (http://www.opensource.org/licenses/afl-3.0.php), except as stated
* in the file entitled Licensing-Information.
*/
package fUML.Semantics.Activities.IntermediateActivities;
import fUML.Debug;
import UMLPrimitiveTypes.*;
import fUML.Syntax.*;
import fUML.Syntax.Classes.Kernel.*;
import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
import fUML.Syntax.CommonBehaviors.Communications.*;
import fUML.Syntax.Activities.IntermediateActivities.*;
import fUML.Syntax.Actions.BasicActions.*;
import fUML.Semantics.*;
import fUML.Semantics.Classes.Kernel.*;
import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
import fUML.Semantics.Actions.BasicActions.*;
import fUML.Semantics.Activities.ExtraStructuredActivities.*;
import fUML.Semantics.Loci.*;
public class ActivityFinalNodeActivation extends
fUML.Semantics.Activities.IntermediateActivities.ControlNodeActivation {
public void fire(
fUML.Semantics.Activities.IntermediateActivities.TokenList incomingTokens) {
// Terminate the activity execution or structured node activation
// containing this activation.
Debug.println("[fire] Activity final node " + this.node.name + "...");
if (incomingTokens.size() > 0 | this.incomingEdges.size() == 0) {
if (this.group.activityExecution != null) {
this.group.activityExecution.terminate();
} else if (this.group.containingNodeActivation != null) {
this.group.containingNodeActivation.terminateAll();
} else if (this.group instanceof ExpansionActivationGroup) {
((ExpansionActivationGroup) this.group).regionActivation
.terminate();
}
}
} // fire
} // ActivityFinalNodeActivation