Skip to content

Commit 8f5e8aa

Browse files
committed
Removing all references to ecorext
1 parent e741aa6 commit 8f5e8aa

File tree

10 files changed

+22
-27
lines changed

10 files changed

+22
-27
lines changed

trace/generator/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Among others, we consider an xDSML to be composed of:
1212

1313
The generation process is divided in three steps:
1414

15-
1. Because operation semantics can be defined in using any language(s), we first extract the execution extension into an intermediate representation in order to then generically process it with the generator. The intermediate representation is defined using the Ecore metamodel that can be found in the plugin `fr.inria.diverse.ecorext`. An conforming model is composed of new `EStructuralFeature` added to classes of the abstract classes, of new `EClass` objects, and of transformation rules specified as `EOperation` objects. Two extractors are provided for now:
15+
1. Because operation semantics can be defined in using any language(s), we first extract the execution extension into an intermediate representation in order to then generically process it with the generator. The intermediate representation is defined using the Ecore metamodel that can be found in the plugin `fr.inria.diverse.opsemanticsview.model`. An conforming model is composed of new `EStructuralFeature` added to classes of the abstract classes, of new `EClass` objects, and of transformation rules specified as `EOperation` objects. Two extractors are provided for now:
1616

1717
- One for Kermeta in the plugin `fr.inria.diverse.trace.plaink3.tracematerialextractor`.
1818
- One for xMOF in the plugin `fr.inria.diverse.trace.xmof.tracematerialextractor`.
@@ -29,6 +29,6 @@ This part of the GEMOC Studio is based on the paper "A Generative Approach to De
2929

3030
**Abstract:**
3131

32-
> Executable Domain-Specific Modeling Languages (xDSMLs) open many possibilities for performing early verification and validation (V&V) of systems. Dynamic V&V approaches rely on execution traces, which represent the evolution of models during their execution. In order to construct traces, generic trace metamodels can be used. Yet, regarding trace manipulations, they lack both efficiency because of their sequential structure, and usability because of their gap to the xDSML. Our contribution is a generative approach that defines a rich and domain-specific trace metamodel enabling the construction of execution traces for models conforming to a given xDSML. Efficiency is increased by providing a variety of navigation paths within traces, while usability is improved by narrowing the concepts of the trace metamodel to fit the considered xDSML. We evaluated our approach by generating a trace metamodel for fUML and using it for semantic differencing, which is an important V&V activity in the realm of model evolution. Results show a significant performance improvement and simplification of the semantic differencing rules as compared to the usage of a generic trace metamodel.
32+
> Executable Domain-Specific Modeling Languages (xDSMLs) open many possibilities for performing early verification and validation (V&V) of systems. Dynamic V&V approaches rely on execution traces, which represent the evolution of models during their execution. In order to construct traces, generic trace metamodels can be used. Yet, regarding trace manipulations, they lack both efficiency because of their sequential structure, and usability because of their gap to the xDSML. Our contribution is a generative approach that defines a rich and domain-specific trace metamodel enabling the construction of execution traces for models conforming to a given xDSML. Efficiency is increased by providing a variety of navigation paths within traces, while usability is improved by narrowing the concepts of the trace metamodel to fit the considered xDSML. We evaluated our approach by generating a trace metamodel for fUML and using it for semantic differencing, which is an important V&V activity in the realm of model evolution. Results show a significant performance improvement and simplification of the semantic differencing rules as compared to the usage of a generic trace metamodel.
3333

34-
The paper can be downloaded here https://hal.inria.fr/hal-01154225
34+
The paper can be downloaded here https://hal.inria.fr/hal-01154225

trace/generator/plugins/fr.inria.diverse.trace.gemoc.generator/META-INF/MANIFEST.MF

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ Require-Bundle: com.google.guava,
1414
org.eclipse.ui,
1515
org.eclipse.core.runtime;bundle-version="3.10.0",
1616
org.eclipse.core.resources;bundle-version="3.9.1",
17-
fr.inria.diverse.ecorext;bundle-version="0.1.0",
1817
org.gemoc.executionframework.ui;bundle-version="0.1.0",
1918
org.gemoc.xdsmlframework.ide.ui;bundle-version="0.1.0",
2019
fr.inria.diverse.trace.metamodel.generator;bundle-version="1.0.0",

trace/generator/plugins/fr.inria.diverse.trace.gemoc.generator/src/fr/inria/diverse/trace/gemoc/generator/GenericEngineTraceAddonGenerator.xtend

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ import org.jdom2.filter.ElementFilter
3838
class GenericEngineTraceAddonGenerator {
3939

4040
// Inputs
41-
private val OperationalSemanticsView executionEcorExt // URI
41+
private val OperationalSemanticsView opsemanticsview // URI
4242
private val String pluginName
4343

4444
// Transient
@@ -54,8 +54,8 @@ class GenericEngineTraceAddonGenerator {
5454
@Accessors(PUBLIC_GETTER, PROTECTED_SETTER)
5555
IProject project
5656

57-
new(OperationalSemanticsView executionEcorExt, String pluginName) {
58-
this.executionEcorExt = executionEcorExt
57+
new(OperationalSemanticsView opsemanticsview, String pluginName) {
58+
this.opsemanticsview = opsemanticsview
5959
this.pluginName = pluginName
6060
}
6161

@@ -82,7 +82,7 @@ class GenericEngineTraceAddonGenerator {
8282
public def void generateCompleteAddon(IProgressMonitor m) {
8383

8484
// Generate trace plugin
85-
val GenericTracePluginGenerator GenericTracePluginGenerator = new GenericTracePluginGenerator(executionEcorExt,
85+
val GenericTracePluginGenerator GenericTracePluginGenerator = new GenericTracePluginGenerator(opsemanticsview,
8686
pluginName, true)
8787
GenericTracePluginGenerator.generate(m)
8888

@@ -219,7 +219,7 @@ public class «className» extends AbstractTraceAddon {
219219

220220
private def Set<EClass> potentialCallerClasses(EClass stepCallerClass) {
221221
val possibleCallerClasses = new HashSet<EClass>
222-
possibleCallerClasses.addAll(executionEcorExt.executionMetamodel.EClassifiers.filter(EClass))
222+
possibleCallerClasses.addAll(opsemanticsview.executionMetamodel.EClassifiers.filter(EClass))
223223
possibleCallerClasses.addAll(traceability.allMutableClasses)
224224
val filtered = possibleCallerClasses.filter(EClass)
225225
.filter[c|c.equals(stepCallerClass)||c.EAllSuperTypes.contains(stepCallerClass)]
@@ -245,7 +245,7 @@ org.eclipse.emf.ecore.EClass ec = mse.getCaller().eClass();
245245
String stepRule = fr.inria.diverse.trace.commons.EcoreCraftingUtil.getFQN(ec, ".") + "."
246246
+ mse.getAction().getName();
247247
248-
«FOR Rule rule : executionEcorExt.rules.sortBy[baseFQN] SEPARATOR "else" AFTER "else"»
248+
«FOR Rule rule : opsemanticsview.rules.sortBy[baseFQN] SEPARATOR "else" AFTER "else"»
249249
250250
«val stepCallerClass = rule.containingClass»
251251
«val filtered = potentialCallerClasses(stepCallerClass)»

trace/generator/plugins/fr.inria.diverse.trace.plugin.generator/src/fr/inria/diverse/trace/plugin/generator/GenericTracePluginGenerator.xtend

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ import tracingannotations.TracingAnnotations
4141
class GenericTracePluginGenerator {
4242

4343
// Inputs
44-
private val OperationalSemanticsView executionEcorExt // URI
44+
private val OperationalSemanticsView opsemanticsview // URI
4545
private val String pluginName
4646
private val boolean gemoc
4747

@@ -76,9 +76,9 @@ class GenericTracePluginGenerator {
7676
@Accessors(PUBLIC_GETTER, PROTECTED_SETTER)
7777
var Set<GenPackage> referencedGenPackages
7878

79-
new(OperationalSemanticsView executionEcorExt, String pluginName, boolean gemoc) {
79+
new(OperationalSemanticsView opsemanticsview, String pluginName, boolean gemoc) {
8080

81-
this.executionEcorExt = executionEcorExt
81+
this.opsemanticsview = opsemanticsview
8282
this.pluginName = pluginName
8383
this.packageQN = pluginName + ".tracemanager"
8484
this.gemoc = gemoc
@@ -110,7 +110,7 @@ class GenericTracePluginGenerator {
110110
}
111111

112112
def void generate(IProgressMonitor m) {
113-
tracedLanguageName = executionEcorExt.executionMetamodel.name
113+
tracedLanguageName = opsemanticsview.executionMetamodel.name
114114
languageName = tracedLanguageName.replaceAll(" ", "") + "Trace"
115115

116116
var partialTraceManagement = false
@@ -120,13 +120,13 @@ class GenericTracePluginGenerator {
120120
// var Set<EStructuralFeature> propertiesToTrace = new HashSet
121121
// classesToTrace.addAll(tracingAnnotations.classestoTrace)
122122
// propertiesToTrace.addAll(tracingAnnotations.propertiesToTrace)
123-
// val filter = new ExtensionFilter(executionEcorExt, classesToTrace, propertiesToTrace)
123+
// val filter = new ExtensionFilter(opsemanticsview, classesToTrace, propertiesToTrace)
124124
// filter.execute()
125125
// partialTraceManagement = filter.didFilterSomething
126126
// }
127127

128128
// Generate trace metamodel
129-
val TraceMMGenerator tmmgenerator = new TraceMMGenerator(executionEcorExt, gemoc)
129+
val TraceMMGenerator tmmgenerator = new TraceMMGenerator(opsemanticsview, gemoc)
130130
tmmgenerator.computeAllMaterial
131131
tmmgenerator.sortResult
132132
val EPackage tracemm = tmmgenerator.tracemmresult
@@ -173,7 +173,7 @@ class GenericTracePluginGenerator {
173173
// Generate trace constructor
174174
val TraceConstructorGeneratorJava tconstructorgen = new TraceConstructorGeneratorJava(languageName,
175175
pluginName + ".tracemanager", tracemm, tmmgenerator.traceability, referencedGenPackages, gemoc,
176-
executionEcorExt.executionMetamodel, partialTraceManagement)
176+
opsemanticsview.executionMetamodel, partialTraceManagement)
177177
traceConstructorClassName = tconstructorgen.className
178178
packageFragment.createCompilationUnit(traceConstructorClassName + ".java", tconstructorgen.generateCode, true, m)
179179

trace/tests_and_benchmarks/fr.inria.diverse.trace.gemoc.generator.test/src/fr/inria/diverse/trace/gemoc/generator/test/AddonGeneratorTest.xtend

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import org.junit.After
99
import org.junit.AfterClass
1010
import org.eclipse.core.resources.IProject
1111
import org.eclipse.emf.ecore.EPackage
12-
import ecorext.Ecorext
1312
import fr.inria.diverse.trace.commons.EMFUtil
1413
import org.eclipse.emf.ecore.resource.ResourceSet
1514
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl
@@ -33,7 +32,7 @@ class AddonGeneratorTest {
3332
var IProject currentProject
3433

3534
def void genericTest(String name) throws IOException {
36-
35+
/*
3736
val abstractSyntaxEcoreURI = URI.createURI(root + name + ".ecore")
3837
val executionEcorExtURI = URI.createURI(root + name + "ext.xmi")
3938
val eventsMetamodelURI = URI.createURI(root + name + "events.ecore")
@@ -51,6 +50,7 @@ class AddonGeneratorTest {
5150
"awesomeProject" + new Random().nextInt(100))
5251
gen.generateCompleteAddon
5352
currentProject = gen.project
53+
*/
5454

5555
}
5656

trace/tests_and_benchmarks/fr.inria.diverse.trace.metamodel.generator.test/META-INF/MANIFEST.MF

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ Require-Bundle: org.eclipse.xtend.lib,
1111
org.eclipse.emf.ecore;bundle-version="2.10.1",
1212
org.junit;bundle-version="4.11.0",
1313
fr.inria.diverse.trace.metamodel.generator;bundle-version="1.0.0",
14-
fr.inria.diverse.ecorext;bundle-version="0.1.0",
1514
org.eclipse.core.runtime;bundle-version="3.9.100",
1615
fr.inria.diverse.trace.commons;bundle-version="1.0.0"
1716

trace/tests_and_benchmarks/fr.inria.diverse.trace.metamodel.generator.test/src/fr/inria/diverse/trace/metamodel/test/TraceMMGeneratorTest.xtend

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package fr.inria.diverse.trace.metamodel.test
22

3-
import ecorext.Ecorext
43
import fr.inria.diverse.trace.commons.EMFUtil
54
import fr.inria.diverse.trace.metamodel.generator.TraceMMGenerator
65
import java.io.File
@@ -76,7 +75,7 @@ class TraceMMGeneratorTest {
7675
}
7776

7877
def void genericTest(String name, String nsURI) {
79-
78+
/*
8079
println("Testing with input: " + name)
8180
8281
var EPackage ecore
@@ -107,7 +106,7 @@ class TraceMMGeneratorTest {
107106
val results = Diagnostician.INSTANCE.validate(stuff.tracemmresult);
108107
val error = results.children.findFirst[r|r.severity == Diagnostic.ERROR]
109108
assertFalse("There is at least one error in the generated ecore model: " + error, error != null)
110-
109+
*/
111110
}
112111

113112
}

trace/tests_and_benchmarks/fr.inria.diverse.trace.plaink3.tracematerialextractor.test/META-INF/MANIFEST.MF

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ Require-Bundle: com.google.guava,
1717
org.eclipse.jdt.core;bundle-version="3.10.0",
1818
org.eclipse.emf.ecore,
1919
org.eclipse.emf.ecore.xmi,
20-
fr.inria.diverse.ecorext;bundle-version="0.1.0",
2120
org.apache.log4j,
2221
org.eclipse.xtend.core,
2322
com.google.inject;bundle-version="3.0.0",

trace/tests_and_benchmarks/fr.inria.diverse.trace.plugin.generator.test/META-INF/MANIFEST.MF

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,5 @@ Require-Bundle: com.google.guava,
1515
org.eclipse.core.runtime;bundle-version="3.10.0",
1616
org.eclipse.emf.ecore,
1717
fr.inria.diverse.trace.commons;bundle-version="1.0.0",
18-
fr.inria.diverse.ecorext;bundle-version="0.1.0"
1918
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
2019

trace/tests_and_benchmarks/fr.inria.diverse.trace.plugin.generator.test/src/fr/inria/diverse/trace/plugin/generator/test/TestTracePluginGenerator.xtend

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl
1313
import org.eclipse.emf.ecore.resource.Resource
1414
import org.eclipse.emf.ecore.EPackage
1515
import fr.inria.diverse.trace.commons.EMFUtil
16-
import ecorext.Ecorext
1716

1817
/**
1918
* Taken from http://www.informit.com/articles/article.aspx?p=1315271&seqNum=8
@@ -35,7 +34,7 @@ class TestTracePluginGenerator {
3534
var IProject currentProject
3635

3736
def void genericTest(String name) {
38-
37+
/*
3938
val abstractSyntaxEcoreURI = URI.createURI(root + name + ".ecore")
4039
val executionEcorExtURI = URI.createURI(root + name + "ext.xmi")
4140
val eventsMetamodelURI = URI.createURI(root + name + "events.ecore")
@@ -53,6 +52,7 @@ class TestTracePluginGenerator {
5352
"awesomeProject" + new Random().nextInt(100))
5453
gen.generate
5554
currentProject = gen.project
55+
*/
5656

5757
}
5858

0 commit comments

Comments
 (0)