Skip to content

Commit 6bffba1

Browse files
committed
Reified launch configuration parameters in the trace for better extensibility, and changed how the relaunch functionnality works accordingly
1 parent 9eb3683 commit 6bffba1

38 files changed

Lines changed: 2095 additions & 776 deletions

File tree

framework/execution_framework/plugins/org.gemoc.executionframework.engine.ui/META-INF/MANIFEST.MF

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ Require-Bundle: org.gemoc.xdsmlframework.api,
1717
org.gemoc.xdsmlframework.commons,
1818
fr.obeo.dsl.debug.ide.sirius.ui;bundle-version="1.0.0",
1919
org.eclipse.sirius;bundle-version="2.0.7",
20-
fr.obeo.dsl.debug,
2120
org.eclipse.xtext,
2221
org.gemoc.executionframework.extensions.sirius,
2322
fr.inria.diverse.commons.eclipse.messagingsystem.api,
2423
fr.obeo.dsl.debug.ide.ui;bundle-version="1.0.0",
25-
fr.inria.diverse.trace.commons.model;bundle-version="0.1.0"
24+
fr.inria.diverse.trace.commons.model;bundle-version="0.1.0",
25+
fr.obeo.dsl.debug
2626
Bundle-ActivationPolicy: lazy
2727
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
2828
Export-Package: org.gemoc.executionframework.engine.ui;

framework/execution_framework/plugins/org.gemoc.executionframework.engine.ui/src/org/gemoc/executionframework/engine/ui/launcher/AbstractGemocLauncher.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,24 @@
1010
*******************************************************************************/
1111
package org.gemoc.executionframework.engine.ui.launcher;
1212

13+
import java.util.Collections;
14+
import java.util.Map;
15+
1316
import org.gemoc.commons.eclipse.ui.ViewHelper;
1417
import org.gemoc.xdsmlframework.api.core.IRunConfiguration;
1518
import org.gemoc.xdsmlframework.api.extensions.engine_addon.EngineAddonSpecificationExtension;
1619

20+
import fr.inria.diverse.trace.commons.model.trace.LaunchConfiguration;
21+
1722

1823
abstract public class AbstractGemocLauncher extends fr.obeo.dsl.debug.ide.sirius.ui.launch.AbstractDSLLaunchConfigurationDelegateUI {
1924

2025
// warning this MODEL_ID must be the same as the one in the ModelLoader in order to enable correctly the breakpoints
2126
public final static String MODEL_ID = org.gemoc.executionframework.engine.ui.Activator.PLUGIN_ID+".debugModel";
2227

23-
28+
public Map<String, Object> parseLaunchConfiguration(LaunchConfiguration launchConfiguration) {
29+
return Collections.emptyMap();
30+
}
2431

2532
protected void openViewsRecommandedByAddons(IRunConfiguration runConfiguration){
2633
for (EngineAddonSpecificationExtension extension : runConfiguration.getEngineAddonExtensions())

framework/execution_framework/plugins/org.gemoc.executionframework.engine/src/org/gemoc/executionframework/engine/core/AbstractExecutionEngine.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.gemoc.xdsmlframework.api.core.IExecutionEngine;
2424
import org.gemoc.xdsmlframework.api.engine_addon.IEngineAddon;
2525

26+
import fr.inria.diverse.trace.commons.model.trace.LaunchConfiguration;
2627
import fr.inria.diverse.trace.commons.model.trace.Step;
2728

2829

framework/execution_framework/plugins/org.gemoc.executionframework.engine/src/org/gemoc/executionframework/engine/core/AbstractSequentialExecutionEngine.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public abstract class AbstractSequentialExecutionEngine extends AbstractExecutio
5858
abstract protected void prepareEntryPoint(IExecutionContext executionContext);
5959

6060
abstract protected void prepareInitializeModel(IExecutionContext executionContext);
61-
61+
6262
@Override
6363
public final void initialize(IExecutionContext executionContext) {
6464
super.initialize(executionContext);

framework/framework_commons/plugins/org.gemoc.xdsmlframework.api/src/org/gemoc/xdsmlframework/api/core/IBasicExecutionEngine.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
import org.gemoc.xdsmlframework.api.core.EngineStatus.RunStatus;
1616
import org.gemoc.xdsmlframework.api.engine_addon.IEngineAddon;
1717

18+
import fr.inria.diverse.trace.commons.model.trace.LaunchConfiguration;
19+
1820
/**
1921
* The interface of the GEMOC Execution Engine. The Execution Engine is an
2022
* entity able to execute models conforming to an xDSML as defined in the GEMOC
@@ -60,6 +62,10 @@ public interface IBasicExecutionEngine extends IDisposable {
6062
<T> Set<T> getAddonsTypedBy(Class<T> type);
6163

6264
void initialize(IExecutionContext executionContext);
65+
66+
default LaunchConfiguration extractLaunchConfiguration() {
67+
return null;
68+
}
6369

6470
/**
6571
*

java_execution/java_engine/plugins/org.gemoc.execution.sequential.javaengine.ui/src/org/gemoc/execution/sequential/javaengine/ui/launcher/Launcher.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111
package org.gemoc.execution.sequential.javaengine.ui.launcher;
1212

1313
import java.util.ArrayList;
14+
import java.util.HashMap;
1415
import java.util.List;
16+
import java.util.Map;
1517
import java.util.Set;
1618
import java.util.function.BiPredicate;
1719

@@ -37,10 +39,14 @@
3739
import org.gemoc.executionframework.ui.views.engine.EnginesStatusView;
3840
import org.gemoc.xdsmlframework.api.core.ExecutionMode;
3941
import org.gemoc.xdsmlframework.api.core.IBasicExecutionEngine;
42+
import org.gemoc.xdsmlframework.api.core.IRunConfiguration;
4043
import org.gemoc.xdsmlframework.api.core.ISequentialExecutionEngine;
4144

4245
import fr.inria.diverse.commons.messagingsystem.api.MessagingSystem;
46+
import fr.inria.diverse.trace.commons.model.trace.LaunchConfiguration;
47+
import fr.inria.diverse.trace.commons.model.trace.LaunchConfigurationParameter;
4348
import fr.inria.diverse.trace.commons.model.trace.MSEOccurrence;
49+
import fr.inria.diverse.trace.commons.model.trace.TracePackage;
4450
import fr.inria.diverse.trace.gemoc.api.IMultiDimensionalTraceAddon;
4551
import fr.obeo.dsl.debug.ide.IDSLDebugger;
4652
import fr.obeo.dsl.debug.ide.event.DSLDebugEventDispatcher;
@@ -155,4 +161,38 @@ protected MessagingSystem getMessagingSystem() {
155161
protected void setDefaultsLaunchConfiguration(ILaunchConfigurationWorkingCopy configuration) {
156162

157163
}
164+
165+
@Override
166+
public Map<String, Object> parseLaunchConfiguration(LaunchConfiguration launchConfiguration) {
167+
Map<String, Object> attributes = new HashMap<>();
168+
for (LaunchConfigurationParameter param : launchConfiguration.getParameters()) {
169+
switch (param.eClass().getClassifierID()) {
170+
case TracePackage.LANGUAGE_NAME_PARAMETER: {
171+
attributes.put(IRunConfiguration.LAUNCH_SELECTED_LANGUAGE, param.getValue());
172+
}
173+
case TracePackage.MODEL_URI_PARAMETER: {
174+
attributes.put("Resource", param.getValue());
175+
}
176+
case TracePackage.ANIMATOR_URI_PARAMETER: {
177+
attributes.put("airdResource", param.getValue());
178+
}
179+
case TracePackage.ENTRY_POINT_PARAMETER: {
180+
attributes.put(IRunConfiguration.LAUNCH_METHOD_ENTRY_POINT, param.getValue());
181+
}
182+
case TracePackage.MODEL_ROOT_PARAMETER: {
183+
attributes.put(IRunConfiguration.LAUNCH_MODEL_ENTRY_POINT, param.getValue());
184+
}
185+
case TracePackage.INITIALIZATION_METHOD_PARAMETER: {
186+
attributes.put(IRunConfiguration.LAUNCH_INITIALIZATION_METHOD, param.getValue());
187+
}
188+
case TracePackage.INITIALIZATION_ARGUMENTS_PARAMETER: {
189+
attributes.put(IRunConfiguration.LAUNCH_INITIALIZATION_ARGUMENTS, param.getValue());
190+
}
191+
case TracePackage.ADDON_EXTENSION_PARAMETER: {
192+
attributes.put(param.getValue(), true);
193+
}
194+
}
195+
}
196+
return attributes;
197+
}
158198
}

java_execution/java_engine/plugins/org.gemoc.execution.sequential.javaengine/src/org/gemoc/execution/sequential/javaengine/PlainK3ExecutionEngine.java

Lines changed: 69 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313
import java.io.IOException;
1414
import java.lang.reflect.Method;
1515
import java.util.ArrayList;
16+
import java.util.HashMap;
1617
import java.util.List;
18+
import java.util.Map;
1719

1820
import org.eclipse.core.resources.IProject;
1921
import org.eclipse.core.resources.ResourcesPlugin;
@@ -42,13 +44,26 @@
4244
import org.gemoc.executionframework.engine.core.AbstractCommandBasedSequentialExecutionEngine;
4345
import org.gemoc.executionframework.engine.core.EngineStoppedException;
4446
import org.gemoc.xdsmlframework.api.core.IExecutionContext;
47+
import org.gemoc.xdsmlframework.api.core.IRunConfiguration;
4548
import org.kermeta.utils.provisionner4eclipse.Provisionner;
4649
import org.osgi.framework.Bundle;
4750

4851
import fr.inria.diverse.k3.al.annotationprocessor.stepmanager.IStepManager;
4952
import fr.inria.diverse.k3.al.annotationprocessor.stepmanager.StepCommand;
5053
import fr.inria.diverse.k3.al.annotationprocessor.stepmanager.StepManagerRegistry;
5154
import fr.inria.diverse.melange.adapters.EObjectAdapter;
55+
import fr.inria.diverse.trace.commons.model.trace.AddonExtensionParameter;
56+
import fr.inria.diverse.trace.commons.model.trace.AnimatorURIParameter;
57+
import fr.inria.diverse.trace.commons.model.trace.EntryPointParameter;
58+
import fr.inria.diverse.trace.commons.model.trace.InitializationArgumentsParameter;
59+
import fr.inria.diverse.trace.commons.model.trace.InitializationMethodParameter;
60+
import fr.inria.diverse.trace.commons.model.trace.LanguageNameParameter;
61+
import fr.inria.diverse.trace.commons.model.trace.LaunchConfiguration;
62+
import fr.inria.diverse.trace.commons.model.trace.LaunchConfigurationParameter;
63+
import fr.inria.diverse.trace.commons.model.trace.ModelRootParameter;
64+
import fr.inria.diverse.trace.commons.model.trace.ModelURIParameter;
65+
import fr.inria.diverse.trace.commons.model.trace.TraceFactory;
66+
import fr.inria.diverse.trace.commons.model.trace.TracePackage;
5267

5368
public class PlainK3ExecutionEngine extends AbstractCommandBasedSequentialExecutionEngine implements IStepManager {
5469

@@ -57,6 +72,8 @@ public class PlainK3ExecutionEngine extends AbstractCommandBasedSequentialExecut
5772
private Method entryPointMethod;
5873
private List<Object> entryPointMethodParameters;
5974
private Class<?> entryPointClass;
75+
76+
private static final String LAUNCH_CONFIGURATION_TYPE = "org.gemoc.execution.sequential.javaengine.ui.launcher";
6077

6178
@Override
6279
public String engineKindName() {
@@ -382,6 +399,56 @@ public static Resource loadModel(URI modelURI) {
382399
}
383400
return resource;
384401
}
385-
386-
402+
403+
@Override
404+
public LaunchConfiguration extractLaunchConfiguration() {
405+
final IRunConfiguration configuration = getExecutionContext().getRunConfiguration();
406+
final LaunchConfiguration launchConfiguration = TraceFactory.eINSTANCE.createLaunchConfiguration();
407+
launchConfiguration.setType(LAUNCH_CONFIGURATION_TYPE);
408+
if (configuration.getLanguageName() != "") {
409+
final LanguageNameParameter languageNameParam = TraceFactory.eINSTANCE.createLanguageNameParameter();
410+
languageNameParam.setValue(configuration.getLanguageName());
411+
launchConfiguration.getParameters().add(languageNameParam);
412+
}
413+
final URI modelURI = configuration.getExecutedModelURI();
414+
if (modelURI != null) {
415+
final String scheme = modelURI.scheme() + ":/resource";
416+
final ModelURIParameter modelURIParam = TraceFactory.eINSTANCE.createModelURIParameter();
417+
modelURIParam.setValue(modelURI.toString().substring(scheme.length()));
418+
launchConfiguration.getParameters().add(modelURIParam);
419+
}
420+
final URI animatorURI = configuration.getAnimatorURI();
421+
if (configuration.getAnimatorURI() != null) {
422+
final String scheme = animatorURI.scheme() + ":/resource";
423+
final AnimatorURIParameter animatorURIParam = TraceFactory.eINSTANCE.createAnimatorURIParameter();
424+
animatorURIParam.setValue(animatorURI.toString().substring(scheme.length()));
425+
launchConfiguration.getParameters().add(animatorURIParam);
426+
}
427+
if (configuration.getExecutionEntryPoint() != null) {
428+
final EntryPointParameter entryPointParam = TraceFactory.eINSTANCE.createEntryPointParameter();
429+
entryPointParam.setValue(configuration.getExecutionEntryPoint());
430+
launchConfiguration.getParameters().add(entryPointParam);
431+
}
432+
if (configuration.getModelEntryPoint() != null) {
433+
final ModelRootParameter modelRootParam = TraceFactory.eINSTANCE.createModelRootParameter();
434+
modelRootParam.setValue(configuration.getModelEntryPoint());
435+
launchConfiguration.getParameters().add(modelRootParam);
436+
}
437+
if (configuration.getModelInitializationMethod() != null) {
438+
final InitializationMethodParameter initializationMethodParam = TraceFactory.eINSTANCE.createInitializationMethodParameter();
439+
initializationMethodParam.setValue(configuration.getModelInitializationMethod());
440+
launchConfiguration.getParameters().add(initializationMethodParam);
441+
}
442+
if (configuration.getModelInitializationArguments() != null) {
443+
final InitializationArgumentsParameter initializationArgumentsParam = TraceFactory.eINSTANCE.createInitializationArgumentsParameter();
444+
initializationArgumentsParam.setValue(configuration.getModelInitializationArguments());
445+
launchConfiguration.getParameters().add(initializationArgumentsParam);
446+
}
447+
configuration.getEngineAddonExtensions().forEach(extensionPoint -> {
448+
final AddonExtensionParameter addonExtensionParam = TraceFactory.eINSTANCE.createAddonExtensionParameter();
449+
addonExtensionParam.setValue(extensionPoint.getName());
450+
launchConfiguration.getParameters().add(addonExtensionParam);
451+
});
452+
return launchConfiguration;
453+
}
387454
}

trace/commons/plugins/fr.inria.diverse.trace.commons.model/model/GenericTrace.ecore

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -83,29 +83,22 @@
8383
<eStructuralFeatures xsi:type="ecore:EReference" name="launchconfiguration" lowerBound="1" eType="//LaunchConfiguration" containment="true"/>
8484
</eClassifiers>
8585
<eClassifiers xsi:type="ecore:EClass" name="LaunchConfiguration">
86-
<eStructuralFeatures xsi:type="ecore:EAttribute" name="languageName">
86+
<eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1" eType="//LaunchConfigurationParameter" containment="true"/>
87+
<eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1" defaultValueLiteral="">
8788
<eType xsi:type="ecore:EDataType" href="../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
8889
</eStructuralFeatures>
89-
<eStructuralFeatures xsi:type="ecore:EAttribute" name="resourceURI">
90-
<eType xsi:type="ecore:EDataType" href="../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
91-
</eStructuralFeatures>
92-
<eStructuralFeatures xsi:type="ecore:EAttribute" name="airdResourceURI">
93-
<eType xsi:type="ecore:EDataType" href="../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
94-
</eStructuralFeatures>
95-
<eStructuralFeatures xsi:type="ecore:EAttribute" name="methodEntryPoint">
96-
<eType xsi:type="ecore:EDataType" href="../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
97-
</eStructuralFeatures>
98-
<eStructuralFeatures xsi:type="ecore:EAttribute" name="modelEntryPoint">
99-
<eType xsi:type="ecore:EDataType" href="../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
100-
</eStructuralFeatures>
101-
<eStructuralFeatures xsi:type="ecore:EAttribute" name="initializationMethod">
102-
<eType xsi:type="ecore:EDataType" href="../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
103-
</eStructuralFeatures>
104-
<eStructuralFeatures xsi:type="ecore:EAttribute" name="initializationArguments">
105-
<eType xsi:type="ecore:EDataType" href="../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
106-
</eStructuralFeatures>
107-
<eStructuralFeatures xsi:type="ecore:EAttribute" name="addonExtensions" upperBound="-1">
90+
</eClassifiers>
91+
<eClassifiers xsi:type="ecore:EClass" name="LaunchConfigurationParameter" abstract="true">
92+
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value">
10893
<eType xsi:type="ecore:EDataType" href="../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
10994
</eStructuralFeatures>
11095
</eClassifiers>
96+
<eClassifiers xsi:type="ecore:EClass" name="LanguageNameParameter" eSuperTypes="//LaunchConfigurationParameter"/>
97+
<eClassifiers xsi:type="ecore:EClass" name="ModelURIParameter" eSuperTypes="//LaunchConfigurationParameter"/>
98+
<eClassifiers xsi:type="ecore:EClass" name="AnimatorURIParameter" eSuperTypes="//LaunchConfigurationParameter"/>
99+
<eClassifiers xsi:type="ecore:EClass" name="EntryPointParameter" eSuperTypes="//LaunchConfigurationParameter"/>
100+
<eClassifiers xsi:type="ecore:EClass" name="ModelRootParameter" eSuperTypes="//LaunchConfigurationParameter"/>
101+
<eClassifiers xsi:type="ecore:EClass" name="InitializationMethodParameter" eSuperTypes="//LaunchConfigurationParameter"/>
102+
<eClassifiers xsi:type="ecore:EClass" name="InitializationArgumentsParameter" eSuperTypes="//LaunchConfigurationParameter"/>
103+
<eClassifiers xsi:type="ecore:EClass" name="AddonExtensionParameter" eSuperTypes="//LaunchConfigurationParameter"/>
111104
</ecore:EPackage>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/**
2+
*/
3+
package fr.inria.diverse.trace.commons.model.trace;
4+
5+
6+
/**
7+
* <!-- begin-user-doc -->
8+
* A representation of the model object '<em><b>Addon Extension Parameter</b></em>'.
9+
* <!-- end-user-doc -->
10+
*
11+
*
12+
* @see fr.inria.diverse.trace.commons.model.trace.TracePackage#getAddonExtensionParameter()
13+
* @model
14+
* @generated
15+
*/
16+
public interface AddonExtensionParameter extends LaunchConfigurationParameter {
17+
} // AddonExtensionParameter
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/**
2+
*/
3+
package fr.inria.diverse.trace.commons.model.trace;
4+
5+
6+
/**
7+
* <!-- begin-user-doc -->
8+
* A representation of the model object '<em><b>Animator URI Parameter</b></em>'.
9+
* <!-- end-user-doc -->
10+
*
11+
*
12+
* @see fr.inria.diverse.trace.commons.model.trace.TracePackage#getAnimatorURIParameter()
13+
* @model
14+
* @generated
15+
*/
16+
public interface AnimatorURIParameter extends LaunchConfigurationParameter {
17+
} // AnimatorURIParameter

0 commit comments

Comments
 (0)