Bug 581584 - Fix the UMLTimedExecutionEngine
Fix the UMLTimedExecutionEngine to used the TimedExecutionLoop and the
TimedExecutionFactory;
UMLTimedExecutionEngine now is debuggeable execution engine.
Change-Id: I88ae81ce0885371027382d481855dfdcbaa799f3
diff --git a/plugins/org.eclipse.papyrus.moka.engine.uml.time.scheduling/src/org/eclipse/papyrus/moka/engine/uml/time/scheduling/control/TimedExecutionLoop.java b/plugins/org.eclipse.papyrus.moka.engine.uml.time.scheduling/src/org/eclipse/papyrus/moka/engine/uml/time/scheduling/control/TimedExecutionLoop.java
index bf9062a..367940c 100644
--- a/plugins/org.eclipse.papyrus.moka.engine.uml.time.scheduling/src/org/eclipse/papyrus/moka/engine/uml/time/scheduling/control/TimedExecutionLoop.java
+++ b/plugins/org.eclipse.papyrus.moka.engine.uml.time.scheduling/src/org/eclipse/papyrus/moka/engine/uml/time/scheduling/control/TimedExecutionLoop.java
@@ -19,6 +19,7 @@
import org.eclipse.papyrus.moka.kernel.scheduling.control.ExecutionLoop;
import org.eclipse.papyrus.moka.kernel.scheduling.control.IScheduler;
import org.eclipse.papyrus.moka.kernel.scheduling.execution.ITaskExecution;
+import org.eclipse.papyrus.moka.kernel.scheduling.execution.ITaskExecutionCondition;
public class TimedExecutionLoop extends ExecutionLoop {
@@ -52,6 +53,18 @@
timeScheduler.step();
}
}
+
+ @Override
+ public void terminate() {
+ super.terminate();
+ timeScheduler.setFinished(true);
+ }
+
+ @Override
+ public void terminate(ITaskExecutionCondition condition) {
+ super.terminate(condition);
+ timeScheduler.setFinished(true);
+ }
/**
* If the model is in a state that enables the execution to move forward
diff --git a/plugins/org.eclipse.papyrus.moka.engine.uml.time/META-INF/MANIFEST.MF b/plugins/org.eclipse.papyrus.moka.engine.uml.time/META-INF/MANIFEST.MF
index 6e54e0b..37996ef 100644
--- a/plugins/org.eclipse.papyrus.moka.engine.uml.time/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.papyrus.moka.engine.uml.time/META-INF/MANIFEST.MF
@@ -12,33 +12,35 @@
org.eclipse.papyrus.moka.kernel.animation;bundle-version="[4.0.0,5.0.0)"
Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
-Export-Package: org.eclipse.papyrus.moka.engine.uml.time; uses:="org.osgi.framework,
- org.eclipse.core.runtime,
- org.eclipse.papyrus.moka.fuml.statemachines,
- org.eclipse.papyrus.moka.fuml.Semantics.Loci.LociL1",
- org.eclipse.papyrus.moka.engine.uml.time.actions; uses:="org.eclipse.papyrus.moka.timedfuml.semantics,
- org.eclipse.papyrus.moka.discreteevent.actions,
- org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel,
- org.eclipse.papyrus.moka.fuml.Semantics.Loci.LociL1",
- org.eclipse.papyrus.moka.engine.uml.time.semantics;uses:="org.eclipse.uml2.uml,
- org.eclipse.papyrus.moka.fuml.Semantics.impl.Actions.BasicActions,
- org.eclipse.papyrus.moka.composites.Semantics.impl.CompositeStructures.InvocationActions",
- org.eclipse.papyrus.moka.engine.uml.time.semantics.Actions.CompleteActions;uses:="org.eclipse.papyrus.moka.fuml.Semantics.impl.Actions.CompleteActions,
- org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.Communications",
- org.eclipse.papyrus.moka.engine.uml.time.semantics.CommonBehaviors; uses:="org.eclipse.uml2.uml,
- org.eclipse.papyrus.moka.fuml.Semantics.impl.CommonBehaviors.Communications,
- org.eclipse.papyrus.moka.timedfuml.interfaces.semantics.CommonBehaviors,
- org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel,
- org.eclipse.papyrus.moka.fuml.statemachines.Semantics.CommonBehavior",
- org.eclipse.papyrus.moka.engine.uml.time.semantics.Loci; uses:="org.eclipse.papyrus.moka.fuml.statemachines.Semantics.Loci,
- org.eclipse.uml2.uml,
- org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel,
- org.eclipse.papyrus.moka.fuml.Semantics.Loci.LociL1",
- org.eclipse.papyrus.moka.engine.uml.time.semantics.StateMachines; uses:="org.eclipse.papyrus.moka.fuml.statemachines.interfaces.Semantics.StateMachines,
- org.eclipse.uml2.uml,
- org.eclipse.papyrus.moka.fuml.statemachines.Semantics.StateMachines,
- org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel",
- org.eclipse.papyrus.moka.engine.uml.time.semantics.StructuredClassifiers;uses:="org.eclipse.uml2.uml,
- org.eclipse.papyrus.moka.fuml.statemachines.Semantics.StructuredClassifiers"
+Export-Package: org.eclipse.papyrus.moka.engine.uml.time;
+ uses:="org.osgi.framework,
+ org.eclipse.core.runtime,
+ org.eclipse.papyrus.moka.fuml.statemachines,
+ org.eclipse.papyrus.moka.fuml.Semantics.Loci.LociL1",
+ org.eclipse.papyrus.moka.engine.uml.time.actions;
+ uses:="org.eclipse.papyrus.moka.timedfuml.semantics,
+ org.eclipse.papyrus.moka.discreteevent.actions,
+ org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel,
+ org.eclipse.papyrus.moka.fuml.Semantics.Loci.LociL1",
+ org.eclipse.papyrus.moka.engine.uml.time.activities,
+ org.eclipse.papyrus.moka.engine.uml.time.semantics;uses:="org.eclipse.uml2.uml,org.eclipse.papyrus.moka.fuml.Semantics.impl.Actions.BasicActions,org.eclipse.papyrus.moka.composites.Semantics.impl.CompositeStructures.InvocationActions",
+ org.eclipse.papyrus.moka.engine.uml.time.semantics.Actions.CompleteActions;uses:="org.eclipse.papyrus.moka.fuml.Semantics.impl.Actions.CompleteActions,org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.Communications",
+ org.eclipse.papyrus.moka.engine.uml.time.semantics.CommonBehaviors;
+ uses:="org.eclipse.uml2.uml,
+ org.eclipse.papyrus.moka.fuml.Semantics.impl.CommonBehaviors.Communications,
+ org.eclipse.papyrus.moka.timedfuml.interfaces.semantics.CommonBehaviors,
+ org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel,
+ org.eclipse.papyrus.moka.fuml.statemachines.Semantics.CommonBehavior",
+ org.eclipse.papyrus.moka.engine.uml.time.semantics.Loci;
+ uses:="org.eclipse.papyrus.moka.fuml.statemachines.Semantics.Loci,
+ org.eclipse.uml2.uml,
+ org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel,
+ org.eclipse.papyrus.moka.fuml.Semantics.Loci.LociL1",
+ org.eclipse.papyrus.moka.engine.uml.time.semantics.StateMachines;
+ uses:="org.eclipse.papyrus.moka.fuml.statemachines.interfaces.Semantics.StateMachines,
+ org.eclipse.uml2.uml,
+ org.eclipse.papyrus.moka.fuml.statemachines.Semantics.StateMachines,
+ org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel",
+ org.eclipse.papyrus.moka.engine.uml.time.semantics.StructuredClassifiers;uses:="org.eclipse.uml2.uml,org.eclipse.papyrus.moka.fuml.statemachines.Semantics.StructuredClassifiers"
Bundle-Vendor: Eclipse Modeling Project
Automatic-Module-Name: org.eclipse.papyrus.moka.engine.uml.time
diff --git a/plugins/org.eclipse.papyrus.moka.engine.uml.time/src/org/eclipse/papyrus/moka/engine/uml/time/UMLTimedExecutionEngine.java b/plugins/org.eclipse.papyrus.moka.engine.uml.time/src/org/eclipse/papyrus/moka/engine/uml/time/UMLTimedExecutionEngine.java
index 5d825f2..e828fde 100644
--- a/plugins/org.eclipse.papyrus.moka.engine.uml.time/src/org/eclipse/papyrus/moka/engine/uml/time/UMLTimedExecutionEngine.java
+++ b/plugins/org.eclipse.papyrus.moka.engine.uml.time/src/org/eclipse/papyrus/moka/engine/uml/time/UMLTimedExecutionEngine.java
@@ -17,16 +17,23 @@
import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.emf.ecore.EObject;
-import org.eclipse.papyrus.moka.engine.uml.UMLExecutionEngine;
+import org.eclipse.papyrus.moka.engine.uml.debug.UMLDebugExecutionEngine;
+import org.eclipse.papyrus.moka.engine.uml.time.scheduling.control.TimedExecutionLoop;
import org.eclipse.papyrus.moka.engine.uml.time.scheduling.de.DEScheduler;
import org.eclipse.papyrus.moka.engine.uml.time.scheduling.de.actions.DisplayCurrentTimeAction;
+import org.eclipse.papyrus.moka.engine.uml.time.semantics.Loci.TimedExecutionFactory;
+import org.eclipse.papyrus.moka.engine.uml.time.semantics.Loci.TimedLocus;
import org.eclipse.papyrus.moka.fuml.commonbehavior.IParameterValue;
+import org.eclipse.papyrus.moka.fuml.loci.ILocus;
import org.eclipse.papyrus.moka.fuml.tasks.IUMLRootTaskExecution;
import org.eclipse.papyrus.moka.kernel.engine.ExecutionEngineException;
+import org.eclipse.papyrus.moka.kernel.scheduling.control.ExecutionController;
+import org.eclipse.papyrus.moka.kernel.scheduling.control.IExecutionController;
import org.eclipse.papyrus.moka.kernel.scheduling.control.Scheduler;
+import org.eclipse.papyrus.moka.pscs.loci.CS_Executor;
import org.eclipse.uml2.uml.Element;
-public class UMLTimedExecutionEngine extends UMLExecutionEngine {
+public class UMLTimedExecutionEngine extends UMLDebugExecutionEngine {
protected double getStopTime() {
// Scheduler stop time
@@ -49,7 +56,25 @@
// This method can be overridden to perform post-run finalization that can be
// needed for a given customization.
}
+
+ /**
+ * Create and parameterize the locus
+ */
+ @Override
+ public ILocus createLocus() {
+ ILocus locus = new TimedLocus();
+ locus.setExecutor(new CS_Executor());
+ locus.setFactory(new TimedExecutionFactory());
+ return locus;
+ }
+
+ public IExecutionController createController() {
+ IExecutionController controller = new ExecutionController();
+ controller.setExecutionLoop(new TimedExecutionLoop());
+ return controller;
+ }
+
@Override
public void start(SubMonitor monitor) throws ExecutionEngineException {
EObject executionSource = configuration.getExecutionSource();