/* * 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.ExtraStructuredActivities; 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.Activities.CompleteStructuredActivities.*; import fUML.Syntax.Activities.ExtraStructuredActivities.*; import fUML.Syntax.Actions.BasicActions.*; import fUML.Semantics.*; import fUML.Semantics.Classes.Kernel.*; import fUML.Semantics.CommonBehaviors.BasicBehaviors.*; import fUML.Semantics.CommonBehaviors.Communications.*; import fUML.Semantics.Activities.IntermediateActivities.*; import fUML.Semantics.Activities.CompleteStructuredActivities.*; import fUML.Semantics.Actions.BasicActions.*; import fUML.Semantics.Loci.*; public class ExpansionNodeActivation extends fUML.Semantics.Activities.IntermediateActivities.ObjectNodeActivation { public void fire( fUML.Semantics.Activities.IntermediateActivities.TokenList incomingTokens) { // Take tokens from all incoming edges. Debug.println("[fire] Expansion node " + this.node.name + "..."); this.addTokens(incomingTokens); } // fire public void receiveOffer() { // Forward the offer on to the expansion region. this.getExpansionRegionActivation().receiveOffer(); } // receiveOffer public boolean isReady() { // An expansion node is always fired by its expansion region. return false; } // isReady public fUML.Semantics.Activities.ExtraStructuredActivities.ExpansionRegionActivation getExpansionRegionActivation() { // Return the expansion region activation corresponding to this // expansion node, in the context of the activity node activation group // this expansion node activation is in. ExpansionNode node = (ExpansionNode) (this.node); ExpansionRegion region = node.regionAsInput; if (region == null) { region = node.regionAsOutput; } return (ExpansionRegionActivation) (this.group .getNodeActivation(region)); } // getExpansionRegionActivation } // ExpansionNodeActivation