package fUML.Semantics.Actions.CompleteActions; import fUML.Debug; import fUML.Semantics.Actions.BasicActions.ActionActivation; import fUML.Semantics.Classes.Kernel.ValueList; import fUML.Semantics.CommonBehaviors.BasicBehaviors.ParameterValue; import fUML.Semantics.CommonBehaviors.BasicBehaviors.ParameterValueList; import fUML.Syntax.Actions.BasicActions.InputPin; import fUML.Syntax.Actions.BasicActions.InputPinList; import fUML.Syntax.Actions.CompleteActions.ReplyAction; import fUML.Syntax.CommonBehaviors.Communications.CallEvent; import fUML.Syntax.CommonBehaviors.Communications.Trigger; public class ReplyActionActivation extends ActionActivation { @Override public void doAction() { // Reply to the call represented by the return information on // the return information pin using the reply values given // on the reply value pins. ReplyAction action = (ReplyAction) this.node; Trigger replyToCall = action.replyToCall; InputPinList replyValuePins = action.replyValue; InputPin returnInformationPin = action.returnInformation; ValueList values = this.takeTokens(returnInformationPin); ReturnInformation returnInformation = (ReturnInformation) values.getValue(0); Debug.println("[doAction] action = " + action.name + " returnInformation = " + returnInformation); if (replyToCall.event instanceof CallEvent & ((CallEvent)replyToCall.event).operation == returnInformation.getOperation()) { ParameterValueList parameterValues = new ParameterValueList(); int i = 1; while (i <= replyValuePins.size()) { ParameterValue parameterValue = new ParameterValue(); parameterValue.values = this.takeTokens(replyValuePins.getValue(i - 1)); parameterValues.addValue(parameterValue); i = i + 1; } returnInformation.reply(parameterValues); } } }