PSCS11-6: Any EventOccurrence should be associatable as an
interaction point.
Change-Id: I9e31366b3a87ddb33e34b5dee88e8579a05e0f88
Signed-off-by: jeremie.tatibouet <jeremie.tatibouet@cea.fr>
diff --git a/bundles/core/engines/org.eclipse.papyrus.moka.composites.interfaces/src/org/eclipse/papyrus/moka/composites/interfaces/Semantics/CompositeStructures/StructuredClasses/ICS_Object.java b/bundles/core/engines/org.eclipse.papyrus.moka.composites.interfaces/src/org/eclipse/papyrus/moka/composites/interfaces/Semantics/CompositeStructures/StructuredClasses/ICS_Object.java
index 752744e..4901bb1 100644
--- a/bundles/core/engines/org.eclipse.papyrus.moka.composites.interfaces/src/org/eclipse/papyrus/moka/composites/interfaces/Semantics/CompositeStructures/StructuredClasses/ICS_Object.java
+++ b/bundles/core/engines/org.eclipse.papyrus.moka.composites.interfaces/src/org/eclipse/papyrus/moka/composites/interfaces/Semantics/CompositeStructures/StructuredClasses/ICS_Object.java
@@ -19,11 +19,10 @@
import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.IReference;
import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.IValue;
import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.IExecution;
-import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.Communications.ISignalInstance;
+import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.Communications.IEventOccurrence;
import org.eclipse.uml2.uml.ConnectorKind;
import org.eclipse.uml2.uml.Operation;
import org.eclipse.uml2.uml.Port;
-import org.eclipse.uml2.uml.Signal;
public interface ICS_Object extends IObject_ {
@@ -35,15 +34,15 @@
public IExecution dispatchOut(Operation operation, Port onPort);
- public void sendIn(ISignalInstance signalInstance, ICS_InteractionPoint interactionPoint);
+ public void sendIn(IEventOccurrence eventOccurrence, ICS_InteractionPoint interactionPoint);
- public void sendIn(ISignalInstance signalInstance, Port onPort);
+ public void sendIn(IEventOccurrence eventOccurrence, Port onPort);
- public void sendOut(ISignalInstance signalInstance, ICS_InteractionPoint interactionPoint);
+ public void sendOut(IEventOccurrence eventOccurrence, ICS_InteractionPoint interactionPoint);
- public void sendOut(ISignalInstance signalInstance, Port onPort);
+ public void sendOut(IEventOccurrence eventOccurrence, Port onPort);
- public List<IReference> selectTargetsForSending(ICS_Link link, ICS_InteractionPoint interactionPoint, ConnectorKind connectorKind, Signal signal, Boolean toInternal);
+ public List<IReference> selectTargetsForSending(ICS_Link link, ICS_InteractionPoint interactionPoint, ConnectorKind connectorKind, Boolean toInternal);
public List<IReference> selectTargetsForDispatching(ICS_Link link, ICS_InteractionPoint interactionPoint, ConnectorKind connectorKind, Operation operation, Boolean toInternal);
diff --git a/bundles/core/engines/org.eclipse.papyrus.moka.composites.interfaces/src/org/eclipse/papyrus/moka/composites/interfaces/Semantics/CompositeStructures/StructuredClasses/ICS_Reference.java b/bundles/core/engines/org.eclipse.papyrus.moka.composites.interfaces/src/org/eclipse/papyrus/moka/composites/interfaces/Semantics/CompositeStructures/StructuredClasses/ICS_Reference.java
index 055342d..1ef670c 100644
--- a/bundles/core/engines/org.eclipse.papyrus.moka.composites.interfaces/src/org/eclipse/papyrus/moka/composites/interfaces/Semantics/CompositeStructures/StructuredClasses/ICS_Reference.java
+++ b/bundles/core/engines/org.eclipse.papyrus.moka.composites.interfaces/src/org/eclipse/papyrus/moka/composites/interfaces/Semantics/CompositeStructures/StructuredClasses/ICS_Reference.java
@@ -15,7 +15,7 @@
import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.IReference;
import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.IExecution;
-import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.Communications.ISignalInstance;
+import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.Communications.IEventOccurrence;
import org.eclipse.uml2.uml.Operation;
import org.eclipse.uml2.uml.Port;
@@ -29,13 +29,13 @@
public IExecution dispatchOut(Operation operation, ICS_InteractionPoint interactionPoint);
- public void sendIn(ISignalInstance signalInstance, ICS_InteractionPoint interactionPoint);
+ public void sendIn(IEventOccurrence eventOccurrence, ICS_InteractionPoint interactionPoint);
- public void sendIn(ISignalInstance signalInstance, Port onPort);
+ public void sendIn(IEventOccurrence eventOccurrence, Port onPort);
- public void sendOut(ISignalInstance signalInstance, Port onPort);
+ public void sendOut(IEventOccurrence eventOccurrence, Port onPort);
- public void sendOut(ISignalInstance signalInstance, ICS_InteractionPoint interactionPoint);
+ public void sendOut(IEventOccurrence eventOccurrence, ICS_InteractionPoint interactionPoint);
public ICS_Object getCompositeReferent();
diff --git a/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/Actions/CompleteActions/CS_ReadIsClassifiedObjectActionActivation.java b/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/Actions/CompleteActions/CS_ReadIsClassifiedObjectActionActivation.java
deleted file mode 100644
index f35c8e5..0000000
--- a/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/Actions/CompleteActions/CS_ReadIsClassifiedObjectActionActivation.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*****************************************************************************
- * Copyright (c) 2013 CEA LIST.
- *
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * CEA LIST - Initial API and implementation
- *
- *****************************************************************************/
-package org.eclipse.papyrus.moka.composites.Semantics.impl.Actions.CompleteActions;
-
-import java.util.List;
-
-import org.eclipse.papyrus.moka.fuml.Semantics.impl.Actions.CompleteActions.ReadIsClassifiedObjectActionActivation;
-import org.eclipse.uml2.uml.Class;
-import org.eclipse.uml2.uml.Classifier;
-import org.eclipse.uml2.uml.Interface;
-import org.eclipse.uml2.uml.InterfaceRealization;
-
-public class CS_ReadIsClassifiedObjectActionActivation extends ReadIsClassifiedObjectActionActivation {
-
- @Override
- public boolean checkAllParents(Classifier type, Classifier classifier) {
- // If the given classifier is not an Interface, behaves like in fUML.
- // Otherwise, check if the given type (or one of its direct or indirect ancestors)
- // has an InterfaceRealization relationships with the given classifier.
- boolean matched = false;
- if (!(classifier instanceof Interface)) {
- matched = super.checkAllParents(type, classifier);
- } else if (!(type instanceof Class)) {
- matched = false;
- } else if (this.realizesInterface((Class) type, (Interface) classifier)) {
- matched = true;
- } else {
- List<Classifier> directParents = type.getGenerals();
- int i = 1;
- while (!matched & i <= directParents.size()) {
- Classifier directParent = directParents.get(i - 1);
- matched = this.checkAllParents(directParent, classifier);
- i = i + 1;
- }
- }
- return matched;
- }
-
- public Boolean realizesInterface(Class type, Interface interface_) {
- // Checks if the given type has an InterfaceRealization relationship
- // with the given interface or a descendant of the interface.
- List<InterfaceRealization> realizations = type.getInterfaceRealizations();
- boolean realized = false;
- int i = 1;
- while (i <= realizations.size() && !realized) {
- InterfaceRealization realization = realizations.get(i - 1);
- Interface contract = realization.getContract();
- if (contract == interface_) {
- realized = true;
- } else if (this.isDescendant(contract, interface_)) {
- realized = true;
- }
- i = i + 1;
- }
- return realized;
- }
-
- public Boolean isDescendant(Interface contract, Interface interface_) {
- // Checks if the given contract is a descendant of the given interface_
- boolean matched = false;
- List<Classifier> descendants = contract.getGenerals();
- int i = 1;
- while (i <= descendants.size() && !matched) {
- if (descendants.get(i - 1) instanceof Interface) {
- Interface descendant = (Interface) descendants.get(i - 1);
- if (descendant == interface_) {
- matched = true;
- } else {
- matched = this.isDescendant(descendant, interface_);
- }
- }
- i = i + 1;
- }
- return matched;
- }
-}
diff --git a/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/CompositeStructures/InvocationActions/CS_AcceptEventActionActivation.java b/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/CompositeStructures/InvocationActions/CS_AcceptEventActionActivation.java
index 9f2b4ce..c6509fa 100644
--- a/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/CompositeStructures/InvocationActions/CS_AcceptEventActionActivation.java
+++ b/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/CompositeStructures/InvocationActions/CS_AcceptEventActionActivation.java
@@ -13,54 +13,20 @@
*****************************************************************************/
package org.eclipse.papyrus.moka.composites.Semantics.impl.CompositeStructures.InvocationActions;
-// Imports
-import java.util.List;
-
-import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.Communications.ISignalInstance;
+import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.Communications.IEventOccurrence;
import org.eclipse.papyrus.moka.fuml.Semantics.impl.Actions.CompleteActions.AcceptEventActionActivation;
-import org.eclipse.uml2.uml.AcceptEventAction;
-import org.eclipse.uml2.uml.Port;
-import org.eclipse.uml2.uml.Signal;
-import org.eclipse.uml2.uml.SignalEvent;
-import org.eclipse.uml2.uml.Trigger;
-
public class CS_AcceptEventActionActivation extends AcceptEventActionActivation {
@Override
- public Boolean match(ISignalInstance signalInstance) {
- // Return true if the given signal instance matches a trigger of the accept
- // event action of this activation.
- // Matching implies that the type of the signalInstance matches the Signal
- // of one of the triggers.
- // When the type matches with the Signal, and if the trigger specifies a
- // list of ports,
- // the signalInstance matches the trigger only if it occurred on a port
- // identified in the list.
-
- AcceptEventAction action = (AcceptEventAction) (this.node);
- List<Trigger> triggers = action.getTriggers();
- Signal signal = signalInstance.getType();
-
- Boolean matches = false;
- Integer i = 1;
- while (!matches & i <= triggers.size()) {
- Trigger t = triggers.get(i - 1);
- matches = ((SignalEvent) t.getEvent()).getSignal() == signal;
- if (matches && t.getPorts().size() > 0) {
- List<Port> portsOfTrigger = t.getPorts();
- Port onPort = ((CS_SignalInstance) signalInstance).interactionPoint.getDefiningPort();
- Boolean portMatches = false;
- Integer j = 1;
- while (!portMatches & j <= portsOfTrigger.size()) {
- portMatches = onPort == portsOfTrigger.get(j - 1);
- j = j + 1;
- }
- matches = portMatches;
- }
- i = i + 1;
+ public void accept(IEventOccurrence eventOccurrence) {
+ // If the accepted event occurrence is a CS_EventOccurrence then the wrapped
+ // event occurrence is extracted. The acceptance process is the one define
+ // by AcceptEventActionActivation defined in fUML.
+ if (eventOccurrence instanceof CS_EventOccurrence) {
+ super.accept(((CS_EventOccurrence) eventOccurrence).wrappedEventOccurrence);
+ } else {
+ super.accept(eventOccurrence);
}
-
- return matches;
}
}
diff --git a/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/CompositeStructures/InvocationActions/CS_SendSignalActionActivation.java b/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/CompositeStructures/InvocationActions/CS_SendSignalActionActivation.java
index cd52651..64bd501 100644
--- a/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/CompositeStructures/InvocationActions/CS_SendSignalActionActivation.java
+++ b/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/CompositeStructures/InvocationActions/CS_SendSignalActionActivation.java
@@ -18,9 +18,11 @@
import org.eclipse.papyrus.moka.composites.Semantics.impl.CompositeStructures.StructuredClasses.CS_Reference;
import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.IObject_;
-import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.IReference;
import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.IValue;
+import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.Communications.ISignalInstance;
import org.eclipse.papyrus.moka.fuml.Semantics.impl.Actions.BasicActions.SendSignalActionActivation;
+import org.eclipse.papyrus.moka.fuml.Semantics.impl.CommonBehaviors.Communications.SignalEventOccurrence;
+import org.eclipse.papyrus.moka.fuml.Semantics.impl.CommonBehaviors.Communications.SignalInstance;
import org.eclipse.uml2.uml.InputPin;
import org.eclipse.uml2.uml.Property;
import org.eclipse.uml2.uml.SendSignalAction;
@@ -51,15 +53,15 @@
if (action.getOnPort() == null) {
// Behaves like in fUML
- this.doActionDefault();
+ super.doAction();
} else {
IValue target = this.takeTokens(action.getTarget()).get(0);
if (target instanceof CS_Reference) {
// Constructs the signal instance
Signal signal = action.getSignal();
- CS_SignalInstance signalInstance = new CS_SignalInstance();
- signalInstance.type = signal;
+ ISignalInstance signalInstance = new SignalInstance();
+ signalInstance.setType(signal);
List<Property> attributes = signal.getOwnedAttributes();
List<InputPin> argumentPins = action.getArguments();
@@ -71,7 +73,9 @@
signalInstance.setFeatureValue(attribute, values, 0);
i = i + 1;
}
-
+ // Construct the signal event occurrence
+ SignalEventOccurrence signalEventOccurrence = new SignalEventOccurrence();
+ signalEventOccurrence.signalInstance = (SignalInstance) signalInstance.copy();
// Tries to determine if the signal has to be
// sent to the environment or to the internals of
// target, through onPort
@@ -79,42 +83,12 @@
// Port onPort = action.onPort ;
IObject_ executionContext = this.group.getActivityExecution().getContext();
if (executionContext == targetReference.referent || targetReference.compositeReferent.contains(executionContext)) {
- targetReference.sendOut(signalInstance, action.getOnPort());
+ targetReference.sendOut(signalEventOccurrence, action.getOnPort());
} else {
- targetReference.sendIn(signalInstance, action.getOnPort());
+ targetReference.sendIn(signalEventOccurrence, action.getOnPort());
}
}
}
}
-
- public void doActionDefault() {
- // Get the value from the target pin. If the value is not a reference,
- // then do nothing.
- // Otherwise, construct a signal using the values from the argument pins
- // and send it to the referent object.
- // This operation captures same semantics as fUML
- // SendSignalActionActivation.doAction() except that it constructs
- // a CS_SignalInstance instead of a SignalInstance
-
- SendSignalAction action = (SendSignalAction) (this.node);
- IValue target = this.takeTokens(action.getTarget()).get(0);
-
- if (target instanceof IReference) {
- Signal signal = action.getSignal();
-
- CS_SignalInstance signalInstance = new CS_SignalInstance();
- signalInstance.type = signal;
-
- List<Property> attributes = signal.getOwnedAttributes();
- List<InputPin> argumentPins = action.getArguments();
- for (int i = 0; i < attributes.size(); i++) {
- Property attribute = attributes.get(i);
- InputPin argumentPin = argumentPins.get(i);
- List<IValue> values = this.takeTokens(argumentPin);
- signalInstance.setFeatureValue(attribute, values, 0);
- }
-
- ((IReference) target).send(signalInstance);
- }
- }
+
}
diff --git a/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/CompositeStructures/InvocationActions/CS_SignalInstance.java b/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/CompositeStructures/InvocationActions/CS_SignalInstance.java
deleted file mode 100644
index 24e082e..0000000
--- a/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/CompositeStructures/InvocationActions/CS_SignalInstance.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*****************************************************************************
- * Copyright (c) 2013 CEA LIST.
- *
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * CEA LIST - Initial API and implementation
- *
- *****************************************************************************/
-package org.eclipse.papyrus.moka.composites.Semantics.impl.CompositeStructures.InvocationActions;
-
-import org.eclipse.papyrus.moka.composites.interfaces.Semantics.CompositeStructures.StructuredClasses.ICS_InteractionPoint;
-import org.eclipse.papyrus.moka.fuml.Semantics.impl.Classes.Kernel.Value;
-import org.eclipse.papyrus.moka.fuml.Semantics.impl.CommonBehaviors.Communications.SignalInstance;
-
-
-public class CS_SignalInstance extends SignalInstance {
-
- /*
- * The InteractionPoint on which this signal instance occured.
- */
- public ICS_InteractionPoint interactionPoint;
-
- @Override
- public Value copy() {
- // Create a new signal instance with the same type, interaction point and feature values as this signal instance.
- CS_SignalInstance newValue = (CS_SignalInstance) (super.copy());
- newValue.type = this.type;
- newValue.interactionPoint = this.interactionPoint;
- return newValue;
- }
-
- @Override
- public Value new_() {
- // Create a new signal instance with no type or feature values.
- return new CS_SignalInstance();
- }
-}
diff --git a/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/CompositeStructures/StructuredClasses/CS_InteractionPoint.java b/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/CompositeStructures/StructuredClasses/CS_InteractionPoint.java
index ce6c98d..f10108e 100644
--- a/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/CompositeStructures/StructuredClasses/CS_InteractionPoint.java
+++ b/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/CompositeStructures/StructuredClasses/CS_InteractionPoint.java
@@ -16,14 +16,17 @@
// Imports
import java.util.List;
+import org.eclipse.papyrus.moka.composites.Semantics.impl.CompositeStructures.InvocationActions.CS_EventOccurrence;
+import org.eclipse.papyrus.moka.composites.interfaces.Semantics.CompositeStructures.InvocationActions.ICS_EventOccurrence;
import org.eclipse.papyrus.moka.composites.interfaces.Semantics.CompositeStructures.StructuredClasses.ICS_InteractionPoint;
import org.eclipse.papyrus.moka.composites.interfaces.Semantics.CompositeStructures.StructuredClasses.ICS_Reference;
import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.IValue;
import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.IExecution;
import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.IParameterValue;
-import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.Communications.ISignalInstance;
+import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.Communications.IEventOccurrence;
import org.eclipse.papyrus.moka.fuml.Semantics.impl.Classes.Kernel.Reference;
import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
import org.eclipse.uml2.uml.Operation;
import org.eclipse.uml2.uml.Port;
@@ -44,7 +47,7 @@
@Override
public void startBehavior(Class classifier, List<IParameterValue> inputs) {
- // Overriden to do nothing
+ // Overridden to do nothing
}
@Override
@@ -54,9 +57,19 @@
}
@Override
- public void send(ISignalInstance signalInstance) {
- // Delegates sending to the owning object
- this.owner.sendIn(signalInstance, this);
+ public void send(IEventOccurrence eventOccurrence) {
+ // An event occurrence that passes through a CS_InteractionPoint is
+ // (if necessary) wrapped in a CS_EventOccurrence. This event occurrence
+ // is then sent to the owning object.
+ ICS_EventOccurrence wrappingEventOccurrence = null;
+ if(eventOccurrence instanceof ICS_EventOccurrence){
+ wrappingEventOccurrence = (ICS_EventOccurrence) eventOccurrence;
+ }else{
+ wrappingEventOccurrence = new CS_EventOccurrence();
+ wrappingEventOccurrence.setWrappedEventOccurrence(eventOccurrence);
+ }
+ wrappingEventOccurrence.setInteractionPoint(this);
+ this.owner.sendIn(wrappingEventOccurrence, this);
}
@Override
@@ -89,4 +102,10 @@
public void setDefiningPort(Port definingPort) {
this.definingPort = definingPort;
}
+
+ @Override
+ public boolean checkAllParents(Classifier type, Classifier classifier) {
+ // Delegates the type checking to the reference
+ return this.referent.checkAllParents(type, classifier);
+ }
}
diff --git a/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/CompositeStructures/StructuredClasses/CS_Object.java b/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/CompositeStructures/StructuredClasses/CS_Object.java
index 2009060..24bd3dd 100644
--- a/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/CompositeStructures/StructuredClasses/CS_Object.java
+++ b/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/CompositeStructures/StructuredClasses/CS_Object.java
@@ -20,7 +20,6 @@
import org.eclipse.papyrus.moka.composites.Semantics.impl.CommonBehaviors.Communications.CS_DispatchOperationOfInterfaceStrategy;
import org.eclipse.papyrus.moka.composites.Semantics.impl.CommonBehaviors.Communications.CS_StructuralFeatureOfInterfaceAccessStrategy;
import org.eclipse.papyrus.moka.composites.Semantics.impl.CompositeStructures.InvocationActions.CS_RequestPropagationStrategy;
-import org.eclipse.papyrus.moka.composites.Semantics.impl.CompositeStructures.InvocationActions.CS_SignalInstance;
import org.eclipse.papyrus.moka.composites.interfaces.Semantics.CompositeStructures.StructuredClasses.CS_LinkKind;
import org.eclipse.papyrus.moka.composites.interfaces.Semantics.CompositeStructures.StructuredClasses.ICS_InteractionPoint;
import org.eclipse.papyrus.moka.composites.interfaces.Semantics.CompositeStructures.StructuredClasses.ICS_Link;
@@ -32,7 +31,7 @@
import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.IReference;
import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.IValue;
import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.IExecution;
-import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.Communications.ISignalInstance;
+import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.Communications.IEventOccurrence;
import org.eclipse.papyrus.moka.fuml.Semantics.impl.Actions.BasicActions.CallOperationActionActivation;
import org.eclipse.papyrus.moka.fuml.Semantics.impl.Actions.BasicActions.SendSignalActionActivation;
import org.eclipse.papyrus.moka.fuml.Semantics.impl.Classes.Kernel.Object_;
@@ -45,7 +44,6 @@
import org.eclipse.uml2.uml.NamedElement;
import org.eclipse.uml2.uml.Operation;
import org.eclipse.uml2.uml.Port;
-import org.eclipse.uml2.uml.Signal;
import org.eclipse.uml2.uml.StructuralFeature;
@@ -88,25 +86,20 @@
}
- public void sendIn(ISignalInstance signalInstance, ICS_InteractionPoint interactionPoint) {
- // If the interaction is a behavior port,
- // creates a CS_SignalInstance from the signal instance,
- // sets its interaction point,
- // and sends it to the target object using operation send
- // If this is not a behavior port,
- // select appropriate delegation targets from interactionPoint,
- // and propagates the signal to these targets
+ public void sendIn(IEventOccurrence eventOccurrence, ICS_InteractionPoint interactionPoint) {
+ // 1] If the interaction is a behavior port then sends the event occurrence to the target
+ // object using operation send.
+ // 2] If this is not a behavior port, select appropriate delegation targets from interactionPoint,
+ // and propagates the event occurrence to these targets
if (interactionPoint.getDefiningPort().isBehavior()) {
- CS_SignalInstance newSignalInstance = (CS_SignalInstance) signalInstance.copy();
- newSignalInstance.interactionPoint = interactionPoint;
- this.send(newSignalInstance);
+ this.send(eventOccurrence);
} else {
boolean toInternal = true;
List<IReference> potentialTargets = new ArrayList<IReference>();
List<ICS_Link> cddLinks = this.getLinks(interactionPoint);
Integer linkIndex = 1;
while (linkIndex <= cddLinks.size()) {
- List<IReference> validTargets = this.selectTargetsForSending(cddLinks.get(linkIndex - 1), interactionPoint, ConnectorKind.DELEGATION_LITERAL, signalInstance.getType(), toInternal);
+ List<IReference> validTargets = this.selectTargetsForSending(cddLinks.get(linkIndex - 1), interactionPoint, ConnectorKind.DELEGATION_LITERAL, toInternal);
Integer targetIndex = 1;
while (targetIndex <= validTargets.size()) {
potentialTargets.add(validTargets.get(targetIndex - 1));
@@ -119,15 +112,13 @@
// Otherwise, do the following concurrently
for (int i = 0; i < potentialTargets.size(); i++) {
IReference target = potentialTargets.get(i);
- CS_SignalInstance newSignalInstance = (CS_SignalInstance) signalInstance.copy();
- newSignalInstance.interactionPoint = interactionPoint;
- target.send(newSignalInstance);
+ target.send(eventOccurrence);
}
}
}
- public List<IReference> selectTargetsForSending(ICS_Link link, ICS_InteractionPoint interactionPoint, ConnectorKind connectorKind, Signal signal, Boolean toInternal) {
+ public List<IReference> selectTargetsForSending(ICS_Link link, ICS_InteractionPoint interactionPoint, ConnectorKind connectorKind, Boolean toInternal) {
// From the given link, signal and interaction point, retrieves potential targets (i.e. end values of link)
// through which request can be propagated
// These targets are attached to interaction point through the given link, and respect the following rules:
@@ -298,15 +289,14 @@
return potentialTargets;
}
- public void sendOut(ISignalInstance signalInstance, ICS_InteractionPoint interactionPoint) {
+ public void sendOut(IEventOccurrence eventOccurrence, ICS_InteractionPoint interactionPoint) {
// Select appropriate delegation links from interactionPoint,
- // and propagates the signal instance through these links
+ // and propagates the event occurrence through these links
// Appropriate links are links which target elements
// in the environment of this CS_Object.
// These can be delegation links (i.e, the targeted elements must
// require a reception for the signal) or assembly links (i.e., the target elements
// must provide a reception for the signal)
-
boolean notToInternal = false; // i.e. to environment
List<IReference> allPotentialTargets = new ArrayList<IReference>();
List<IReference> targetsForSendingIn = new ArrayList<IReference>();
@@ -315,14 +305,14 @@
List<ICS_Link> cddLinks = this.getLinks(interactionPoint);
Integer linkIndex = 1;
while (linkIndex <= cddLinks.size()) {
- List<IReference> validAssemblyTargets = this.selectTargetsForSending(cddLinks.get(linkIndex - 1), interactionPoint, ConnectorKind.ASSEMBLY_LITERAL, signalInstance.getType(), notToInternal);
+ List<IReference> validAssemblyTargets = this.selectTargetsForSending(cddLinks.get(linkIndex - 1), interactionPoint, ConnectorKind.ASSEMBLY_LITERAL, notToInternal);
Integer targetIndex = 1;
while (targetIndex <= validAssemblyTargets.size()) {
allPotentialTargets.add(validAssemblyTargets.get(targetIndex - 1));
targetsForSendingIn.add(validAssemblyTargets.get(targetIndex - 1));
targetIndex = targetIndex + 1;
}
- List<IReference> validDelegationTargets = this.selectTargetsForSending(cddLinks.get(linkIndex - 1), interactionPoint, ConnectorKind.DELEGATION_LITERAL, signalInstance.getType(), notToInternal);
+ List<IReference> validDelegationTargets = this.selectTargetsForSending(cddLinks.get(linkIndex - 1), interactionPoint, ConnectorKind.DELEGATION_LITERAL, notToInternal);
targetIndex = 1;
while (targetIndex <= validDelegationTargets.size()) {
allPotentialTargets.add(validDelegationTargets.get(targetIndex - 1));
@@ -340,7 +330,7 @@
for (int k = 0; k < targetsForSendingIn.size(); k++) {
IReference cddTarget = targetsForSendingIn.get(k);
if (cddTarget == target) {
- target.send(signalInstance);
+ target.send(eventOccurrence);
}
}
for (int k = 0; k < targetsForSendingOut.size(); k++) {
@@ -349,7 +339,7 @@
ICS_InteractionPoint cddTarget = (ICS_InteractionPoint) targetsForSendingOut.get(k);
if (cddTarget == target) {
ICS_Reference owner = cddTarget.getOwner();
- owner.sendOut(signalInstance, cddTarget);
+ owner.sendOut(eventOccurrence, cddTarget);
}
}
}
@@ -658,9 +648,9 @@
return isAValue;
}
- public void sendOut(ISignalInstance signalInstance, Port onPort) {
+ public void sendOut(IEventOccurrence eventOccurrence, Port onPort) {
// Select a CS_InteractionPoint value playing onPort,
- // and send the signal instance to this interaction point
+ // and send the event occurrence to this interaction point
IFeatureValue featureValue = this.getFeatureValue(onPort);
List<IValue> values = featureValue.getValues();
List<IReference> potentialTargets = new ArrayList<IReference>();
@@ -671,7 +661,7 @@
List<IReference> targets = strategy.select(potentialTargets, new SendSignalActionActivation());
for (int i = 0; i < targets.size(); i++) {
CS_InteractionPoint target = (CS_InteractionPoint) targets.get(i);
- this.sendOut(signalInstance, target);
+ this.sendOut(eventOccurrence, target);
}
}
@@ -707,7 +697,7 @@
return interactionPoint.dispatch(operation);
}
- public void sendIn(ISignalInstance signalInstance, Port onPort) {
+ public void sendIn(IEventOccurrence eventOccurrence, Port onPort) {
// Select a Reference value playing onPort,
// and send the signal instance to this interaction point
IFeatureValue featureValue = this.getFeatureValue(onPort);
@@ -720,7 +710,7 @@
List<IReference> targets = strategy.select(potentialTargets, new SendSignalActionActivation());
for (int i = 0; i < targets.size(); i++) {
IReference target = targets.get(i);
- target.send(signalInstance);
+ target.send(eventOccurrence);
}
}
diff --git a/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/CompositeStructures/StructuredClasses/CS_Reference.java b/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/CompositeStructures/StructuredClasses/CS_Reference.java
index 905d211..c0d769e 100644
--- a/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/CompositeStructures/StructuredClasses/CS_Reference.java
+++ b/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/CompositeStructures/StructuredClasses/CS_Reference.java
@@ -18,7 +18,7 @@
import org.eclipse.papyrus.moka.composites.interfaces.Semantics.CompositeStructures.StructuredClasses.ICS_Reference;
import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.IValue;
import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.IExecution;
-import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.Communications.ISignalInstance;
+import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.Communications.IEventOccurrence;
import org.eclipse.papyrus.moka.fuml.Semantics.impl.Classes.Kernel.Reference;
import org.eclipse.uml2.uml.Operation;
import org.eclipse.uml2.uml.Port;
@@ -36,14 +36,14 @@
return this.compositeReferent.dispatchIn(operation, interactionPoint);
}
- public void sendIn(ISignalInstance signalInstance, ICS_InteractionPoint interactionPoint) {
+ public void sendIn(IEventOccurrence eventOccurrence, ICS_InteractionPoint interactionPoint) {
// delegates sending to composite referent
- this.compositeReferent.sendIn(signalInstance, interactionPoint);
+ this.compositeReferent.sendIn(eventOccurrence, interactionPoint);
}
- public void sendOut(ISignalInstance signalInstance, Port onPort) {
+ public void sendOut(IEventOccurrence eventOccurrence, Port onPort) {
// delegates sending to composite referent
- this.compositeReferent.sendOut(signalInstance, onPort);
+ this.compositeReferent.sendOut(eventOccurrence, onPort);
}
public IExecution dispatchOut(Operation operation, Port onPort) {
@@ -56,9 +56,9 @@
return this.compositeReferent.dispatchIn(operation, onPort);
}
- public void sendIn(ISignalInstance signalInstance, Port onPort) {
+ public void sendIn(IEventOccurrence eventOccurrence, Port onPort) {
// delegates sending to composite referent
- this.compositeReferent.sendIn(signalInstance, onPort);
+ this.compositeReferent.sendIn(eventOccurrence, onPort);
}
public IExecution dispatchOut(Operation operation, ICS_InteractionPoint interactionPoint) {
@@ -67,10 +67,10 @@
return this.compositeReferent.dispatchOut(operation, interactionPoint);
}
- public void sendOut(ISignalInstance signalInstance, ICS_InteractionPoint interactionPoint) {
+ public void sendOut(IEventOccurrence eventOccurrence, ICS_InteractionPoint interactionPoint) {
// Delegates sending (through the interaction point, to the environment)
// to compositeReferent
- this.compositeReferent.sendOut(signalInstance, interactionPoint);
+ this.compositeReferent.sendOut(eventOccurrence, interactionPoint);
}
@Override
diff --git a/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/Loci/LociL3/CS_ExecutionFactory.java b/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/Loci/LociL3/CS_ExecutionFactory.java
index 985a95b..f20989b 100644
--- a/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/Loci/LociL3/CS_ExecutionFactory.java
+++ b/bundles/core/engines/org.eclipse.papyrus.moka.composites/generated/org/eclipse/papyrus/moka/composites/Semantics/impl/Loci/LociL3/CS_ExecutionFactory.java
@@ -14,7 +14,6 @@
package org.eclipse.papyrus.moka.composites.Semantics.impl.Loci.LociL3;
import org.eclipse.papyrus.moka.composites.Semantics.impl.Actions.CompleteActions.CS_ReadExtentActionActivation;
-import org.eclipse.papyrus.moka.composites.Semantics.impl.Actions.CompleteActions.CS_ReadIsClassifiedObjectActionActivation;
import org.eclipse.papyrus.moka.composites.Semantics.impl.Actions.IntermediateActions.CS_AddStructuralFeatureValueActionActivation;
import org.eclipse.papyrus.moka.composites.Semantics.impl.Actions.IntermediateActions.CS_ClearStructuralFeatureValueActionActivation;
import org.eclipse.papyrus.moka.composites.Semantics.impl.Actions.IntermediateActions.CS_CreateLinkActionActivation;
@@ -37,7 +36,6 @@
import org.eclipse.uml2.uml.InstanceValue;
import org.eclipse.uml2.uml.OpaqueExpression;
import org.eclipse.uml2.uml.ReadExtentAction;
-import org.eclipse.uml2.uml.ReadIsClassifiedObjectAction;
import org.eclipse.uml2.uml.ReadSelfAction;
import org.eclipse.uml2.uml.SendSignalAction;
@@ -52,8 +50,8 @@
ISemanticVisitor visitor = null;
if (element instanceof ReadExtentAction) {
visitor = new CS_ReadExtentActionActivation();
- } else if (element instanceof ReadIsClassifiedObjectAction) {
- visitor = new CS_ReadIsClassifiedObjectActionActivation();
+ }else if (element instanceof AcceptEventAction) {
+ visitor = new CS_AcceptEventActionActivation();
} else if (element instanceof AddStructuralFeatureValueAction) {
visitor = new CS_AddStructuralFeatureValueActionActivation();
} else if (element instanceof ClearStructuralFeatureAction) {
@@ -66,9 +64,7 @@
visitor = new CS_ReadSelfActionActivation();
} else if (element instanceof InstanceValue) {
visitor = new CS_InstanceValueEvaluation();
- } else if (element instanceof AcceptEventAction) {
- visitor = new CS_AcceptEventActionActivation();
- } else if (element instanceof CallOperationAction) {
+ } else if (element instanceof CallOperationAction) {
visitor = new CS_CallOperationActionActivation();
} else if (element instanceof SendSignalAction) {
visitor = new CS_SendSignalActionActivation();