Skip to content

Commit ef47a3c

Browse files
committed
Move trace.plugin.generator content to trace.gemoc.generator + cleanups
1 parent 01ab1ef commit ef47a3c

24 files changed

+101
-343
lines changed

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ Require-Bundle: com.google.guava,
88
org.eclipse.xtend.lib,
99
org.eclipse.xtend.lib.macro,
1010
org.eclipse.emf.ecore,
11-
fr.inria.diverse.trace.plugin.generator;bundle-version="1.0.0",
1211
fr.inria.diverse.trace.commons;bundle-version="1.0.0",
1312
org.eclipse.jdt.core;bundle-version="3.10.0",
1413
org.eclipse.ui,
@@ -24,6 +23,5 @@ Require-Bundle: com.google.guava,
2423
org.gemoc.xdsmlframework.api,
2524
fr.inria.diverse.opsemanticsview.model;bundle-version="0.1.0",
2625
fr.inria.diverse.opsemanticsview.gen;bundle-version="1.0.0"
27-
Export-Package: fr.inria.diverse.trace.gemoc.generator
2826
Bundle-ClassPath: .
2927
Bundle-RequiredExecutionEnvironment: JavaSE-1.8

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import fr.inria.diverse.trace.commons.EcoreCraftingUtil
1515
import fr.inria.diverse.trace.commons.ManifestUtil
1616
import fr.inria.diverse.trace.commons.PluginXMLHelper
1717
import fr.inria.diverse.trace.metamodel.generator.TraceMMGenerationTraceability
18-
import fr.inria.diverse.trace.plugin.generator.GenericTracePluginGenerator
18+
import fr.inria.diverse.trace.gemoc.generator.GenericTracePluginGenerator
1919
import java.util.HashSet
2020
import java.util.List
2121
import java.util.Set

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

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -8,32 +8,30 @@
88
* Contributors:
99
* Inria - initial API and implementation
1010
*******************************************************************************/
11-
package fr.inria.diverse.trace.plugin.generator
11+
package fr.inria.diverse.trace.gemoc.generator
1212

13-
import opsemanticsview.OperationalSemanticsView
1413
import fr.inria.diverse.trace.commons.EclipseUtil
1514
import fr.inria.diverse.trace.commons.ManifestUtil
15+
import fr.inria.diverse.trace.gemoc.generator.codegen.StateManagerGeneratorJava
16+
import fr.inria.diverse.trace.gemoc.generator.codegen.TraceConstructorGeneratorJava
17+
import fr.inria.diverse.trace.gemoc.generator.util.StandaloneEMFProjectGenerator
1618
import fr.inria.diverse.trace.metamodel.generator.TraceMMGenerationTraceability
1719
import fr.inria.diverse.trace.metamodel.generator.TraceMMGenerator
18-
import fr.inria.diverse.trace.plugin.generator.clean.StandaloneEMFProjectGenerator
19-
import fr.inria.diverse.trace.plugin.generator.codegen.StateManagerGeneratorJava
20-
import fr.inria.diverse.trace.plugin.generator.codegen.TraceConstructorGeneratorJava
21-
import java.util.HashSet
2220
import java.util.Set
21+
import opsemanticsview.OperationalSemanticsView
2322
import org.eclipse.core.resources.IProject
2423
import org.eclipse.core.runtime.IProgressMonitor
2524
import org.eclipse.emf.codegen.ecore.genmodel.GenPackage
26-
import org.eclipse.emf.ecore.EClass
2725
import org.eclipse.emf.ecore.EPackage
28-
import org.eclipse.emf.ecore.EStructuralFeature
29-
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl
3026
import org.eclipse.jdt.core.IJavaProject
3127
import org.eclipse.jdt.core.IPackageFragment
3228
import org.eclipse.jdt.core.IPackageFragmentRoot
3329
import org.eclipse.jdt.core.JavaCore
3430
import org.eclipse.ui.PlatformUI
3531
import org.eclipse.xtend.lib.annotations.Accessors
36-
import tracingannotations.TracingAnnotations
32+
import fr.inria.diverse.trace.gemoc.generator.util.AbstractEMFProjectGenerator
33+
34+
//import tracingannotations.TracingAnnotations
3735

3836
/**
3937
* Glues the generators : trace metamodel, emf project and trace manager
@@ -46,34 +44,34 @@ class GenericTracePluginGenerator {
4644
private val boolean gemoc
4745

4846
// Transient
49-
private var TracingAnnotations tracingAnnotations
47+
//private var TracingAnnotations tracingAnnotations
5048

5149
// Outputs
52-
@Accessors(PUBLIC_GETTER, PROTECTED_SETTER)
50+
@Accessors(#[PUBLIC_GETTER, PROTECTED_SETTER])
5351
var String languageName
54-
@Accessors(PUBLIC_GETTER, PROTECTED_SETTER)
52+
@Accessors(#[PUBLIC_GETTER, PROTECTED_SETTER])
5553
var String tracedLanguageName
56-
@Accessors(PUBLIC_GETTER, PROTECTED_SETTER)
54+
@Accessors(#[PUBLIC_GETTER, PROTECTED_SETTER])
5755
val String packageQN
58-
@Accessors(PUBLIC_GETTER, PROTECTED_SETTER)
56+
@Accessors(#[PUBLIC_GETTER, PROTECTED_SETTER])
5957
var String traceManagerClassName
60-
@Accessors(PUBLIC_GETTER, PROTECTED_SETTER)
58+
@Accessors(#[PUBLIC_GETTER, PROTECTED_SETTER])
6159
var String traceConstructorClassName
62-
@Accessors(PUBLIC_GETTER, PROTECTED_SETTER)
60+
@Accessors(#[PUBLIC_GETTER, PROTECTED_SETTER])
6361
var String traceExplorerClassName
64-
@Accessors(PUBLIC_GETTER, PROTECTED_SETTER)
62+
@Accessors(#[PUBLIC_GETTER, PROTECTED_SETTER])
6563
var String stateManagerClassName
66-
@Accessors(PUBLIC_GETTER, PROTECTED_SETTER)
64+
@Accessors(#[PUBLIC_GETTER, PROTECTED_SETTER])
6765
var String traceExtractorClassName
68-
@Accessors(PUBLIC_GETTER, PROTECTED_SETTER)
66+
@Accessors(#[PUBLIC_GETTER, PROTECTED_SETTER])
6967
var String traceNotifierClassName
70-
@Accessors(PUBLIC_GETTER, PROTECTED_SETTER)
68+
@Accessors(#[PUBLIC_GETTER, PROTECTED_SETTER])
7169
var IPackageFragment packageFragment
72-
@Accessors(PUBLIC_GETTER, PROTECTED_SETTER)
70+
@Accessors(#[PUBLIC_GETTER, PROTECTED_SETTER])
7371
var IProject project
74-
@Accessors(PUBLIC_GETTER, PROTECTED_SETTER)
72+
@Accessors(#[PUBLIC_GETTER, PROTECTED_SETTER])
7573
var TraceMMGenerationTraceability traceability
76-
@Accessors(PUBLIC_GETTER, PROTECTED_SETTER)
74+
@Accessors(#[PUBLIC_GETTER, PROTECTED_SETTER])
7775
var Set<GenPackage> referencedGenPackages
7876

7977
new(OperationalSemanticsView opsemanticsview, String pluginName, boolean gemoc) {

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

Lines changed: 8 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* are made available under the terms of the Eclipse Public License v1.0
55
* which accompanies this distribution, and is available at
66
* http://www.eclipse.org/legal/epl-v10.html
7-
*
7+
*
88
* Contributors:
99
* Inria - initial API and implementation
1010
*******************************************************************************/
@@ -58,20 +58,7 @@ class TraceAddonGeneratorIntegration {
5858
val ModelTypingSpace root = resource.getContents().get(0) as ModelTypingSpace
5959
val Language selection = root.elements.filter(Language).findFirst[name == selectedLanguage]
6060

61-
// // Get syntax
62-
// val ResourceSet rs = new ResourceSetImpl
63-
// val URI mmUri = URI.createURI(selection.syntax.ecoreUri)
64-
// //val URI mmUri = URI.createURI("platform:/resource/"+ root.name + "." + selection.name.toLowerCase + "/model/" + selection.name + ".ecore")
65-
// val Resource syntaxResource = EMFUtil.loadModelURI(mmUri, rs);
66-
// val Set<EPackage> syntax = syntaxResource.getContents().filter(EPackage).toSet
67-
68-
// Register all packages in registry
69-
// TODO remove them afterwards?
70-
// for (EPackage p : syntaxResource.allContents.filter(EPackage).toSet)
71-
// EPackage.Registry.INSTANCE.put(p.getNsURI(), p);
72-
73-
74-
// We find all extension points providing fr.inria.diverse.trace.gemoc.generator.integration
61+
// We find all extension points providing fr.inria.diverse.trace.gemoc.generator.integration
7562
val configNew = Platform.getExtensionRegistry().getConfigurationElementsFor(
7663
"fr.inria.diverse.opsemanticsview.gen");
7764

@@ -81,35 +68,13 @@ class TraceAddonGeneratorIntegration {
8168
].filter(OperationalSemanticsViewGenerator).findFirst [ conf |
8269
conf.canHandle(selection, melangeFile.project)
8370
]
84-
85-
// If we find one, we generate
71+
72+
// If we find one, we generate
8673
if (validViewGenerator != null) {
8774
val OperationalSemanticsView mmextension = validViewGenerator.generate(selection, melangeFile.project);
8875
generateAddon(selectedLanguage, pluginName, replace, monitor, mmextension)
8976

9077
} // Otherwise, we error
91-
92-
// TODO remove what is after
93-
//
94-
// // We find all extension points providing fr.inria.diverse.trace.gemoc.generator.integration
95-
// val config = Platform.getExtensionRegistry().getConfigurationElementsFor(
96-
// "fr.inria.diverse.trace.gemoc.generator.integration");
97-
//
98-
// // Using them, we instantiate TraceAddonGeneratorIntegrationConfiguration objects and look for one that can work with the current selected language
99-
// val TraceAddonGeneratorIntegrationConfiguration validIntegration = config.map [ e |
100-
// e.createExecutableExtension("class")
101-
// ].filter(TraceAddonGeneratorIntegrationConfiguration).findFirst [ conf |
102-
// conf.canWorkWith(selection, melangeFile.project)
103-
// ]
104-
//
105-
// // If we find one, we generate
106-
// if (validIntegration != null) {
107-
// validIntegration.compute(selection, selectedLanguage, melangeFile.project, syntax, rs);
108-
// val Set<EPackage> executionMetamodel = validIntegration.executionMetamodel
109-
// val OperationalSemanticsView mmextension = validIntegration.getExecutionExtension();
110-
// generateAddon(selectedLanguage, pluginName, executionMetamodel, replace, monitor, mmextension)
111-
//
112-
// } // Otherwise, we error
11378
else {
11479
throw new CoreException(
11580
new Status(
@@ -125,8 +90,8 @@ class TraceAddonGeneratorIntegration {
12590
/**
12691
* Central operation of the class, that calls business operations
12792
*/
128-
public static def void generateAddon(String mmName, String pluginName,
129-
boolean replace, IProgressMonitor monitor, OperationalSemanticsView executionExtension) throws CoreException {
93+
public static def void generateAddon(String mmName, String pluginName, boolean replace, IProgressMonitor monitor,
94+
OperationalSemanticsView executionExtension) throws CoreException {
13095

13196
// We look for an existing project with this name
13297
val IProject existingProject = ResourcesPlugin.getWorkspace().getRoot().getProject(pluginName);
@@ -160,7 +125,8 @@ class TraceAddonGeneratorIntegration {
160125

161126
// Then we call all our business operations
162127
// TODO handle languages defined with multiple ecores
163-
val GenericEngineTraceAddonGenerator traceaddgen = new GenericEngineTraceAddonGenerator(executionExtension, pluginName);
128+
val GenericEngineTraceAddonGenerator traceaddgen = new GenericEngineTraceAddonGenerator(executionExtension,
129+
pluginName);
164130
traceaddgen.generateCompleteAddon(monitor);
165131
} catch (IOException e) {
166132

trace/generator/plugins/fr.inria.diverse.trace.plugin.generator/src/fr/inria/diverse/trace/plugin/generator/codegen/GenericTraceConstructorGeneratorJava.xtend renamed to trace/generator/plugins/fr.inria.diverse.trace.gemoc.generator/src/fr/inria/diverse/trace/gemoc/generator/codegen/GenericTraceConstructorGeneratorJava.xtend

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
* Contributors:
99
* Inria - initial API and implementation
1010
*******************************************************************************/
11-
package fr.inria.diverse.trace.plugin.generator.codegen
11+
package fr.inria.diverse.trace.gemoc.generator.codegen
1212

1313
import fr.inria.diverse.trace.commons.CodeGenUtil
1414
import fr.inria.diverse.trace.commons.EcoreCraftingUtil

trace/generator/plugins/fr.inria.diverse.trace.plugin.generator/src/fr/inria/diverse/trace/plugin/generator/codegen/StateManagerGeneratorJava.xtend renamed to trace/generator/plugins/fr.inria.diverse.trace.gemoc.generator/src/fr/inria/diverse/trace/gemoc/generator/codegen/StateManagerGeneratorJava.xtend

Lines changed: 12 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,18 @@
88
* Contributors:
99
* Inria - initial API and implementation
1010
*******************************************************************************/
11-
package fr.inria.diverse.trace.plugin.generator.codegen
11+
package fr.inria.diverse.trace.gemoc.generator.codegen
1212

1313
import fr.inria.diverse.trace.commons.CodeGenUtil
1414
import fr.inria.diverse.trace.commons.EcoreCraftingUtil
1515
import fr.inria.diverse.trace.metamodel.generator.TraceMMGenerationTraceability
16-
import java.util.HashSet
1716
import java.util.Set
1817
import org.eclipse.emf.codegen.ecore.genmodel.GenPackage
1918
import org.eclipse.emf.ecore.EClass
2019
import org.eclipse.emf.ecore.EClassifier
2120
import org.eclipse.emf.ecore.EPackage
2221
import org.eclipse.emf.ecore.EReference
2322
import org.eclipse.emf.ecore.EStructuralFeature
24-
import opsemanticsview.OperationalSemanticsView
2523

2624
class StateManagerGeneratorJava {
2725

@@ -54,7 +52,7 @@ class StateManagerGeneratorJava {
5452
}
5553

5654
private def String getFQN(EStructuralFeature eFeature) {
57-
return EcoreCraftingUtil.getBaseFQN(eFeature.EContainingClass) + "." + eFeature.name
55+
return EcoreCraftingUtil.getBaseFQN(eFeature.getEContainingClass) + "." + eFeature.name
5856
}
5957

6058
private def String getJavaFQN(EClassifier c) {
@@ -76,29 +74,20 @@ class StateManagerGeneratorJava {
7674

7775
private def String stringGetterExeValue(String javaVarName, EStructuralFeature p, EClass typeToCastTo) {
7876
return '''
79-
«IF (p instanceof EReference && traceability.hasTracedClass(p.EType as EClass))»
77+
«IF (p instanceof EReference && traceability.hasTracedClass(p.getEType as EClass))»
8078
8179
««« If many elements are in this fields, we have to cast the element with a collection
8280
«IF p.many»
83-
(Collection<? extends «getJavaFQN(p.EType,true)»>)
81+
(Collection<? extends «getJavaFQN(p.getEType,true)»>)
8482
«ELSE»
85-
(«getJavaFQN(p.EType, true)»)
83+
(«getJavaFQN(p.getEType, true)»)
8684
«ENDIF»
8785
«getTracedToExeMethodName»(((«getJavaFQN(typeToCastTo)») «javaVarName»).«EcoreCraftingUtil.stringGetter(p)»)
8886
«ELSE»
8987
((«getJavaFQN(typeToCastTo)») «javaVarName»).«EcoreCraftingUtil.stringGetter(p)»
9088
«ENDIF»'''
9189
}
9290

93-
private def Set<EClass> getConcreteSubtypesTraceClassOf(EClass tracedClass) {
94-
val Set<EClass> result = new HashSet()
95-
result.addAll(this.traceMM.eAllContents.filter(EClass).filter [ c |
96-
!c.abstract && c.EAllSuperTypes.contains(tracedClass)
97-
].toSet)
98-
if (!tracedClass.abstract)
99-
result.add(tracedClass)
100-
return result
101-
}
10291

10392
private def String getTracedToExeMethodName() {
10493
getTracedToExeUsed = true
@@ -181,7 +170,7 @@ class StateManagerGeneratorJava {
181170
@SuppressWarnings("unchecked")
182171
private void restoreStateExecute(«stateFQN» state) {
183172
for («valueFQN» value : state.getValues()) {
184-
«FOR p : traceability.allMutableProperties.sortBy[FQN] SEPARATOR "else"»
173+
«FOR p : traceability.allMutableProperties.sortBy[getFQN] SEPARATOR "else"»
185174
«val EReference pdimension = traceability.getDimensionRef(p)»
186175
«val EClass tracedObjectClass = pdimension.getEContainingClass»
187176
«val EClass valueClass = traceability.getValueClass(p)»
@@ -194,21 +183,21 @@ class StateManagerGeneratorJava {
194183
originalObject.«EcoreCraftingUtil.stringGetter(p)».clear();
195184
originalObject.«EcoreCraftingUtil.stringGetter(p)».addAll(«stringGetterExeValue("value", p, valueClass)»);
196185
«ELSE»
197-
final «getJavaFQN(p.EType)» toSet = «stringGetterExeValue("value", p, valueClass)»;
198-
final «getJavaFQN(p.EType)» current = originalObject.«EcoreCraftingUtil.stringGetter(p)»;
186+
final «getJavaFQN(p.getEType)» toSet = «stringGetterExeValue("value", p, valueClass)»;
187+
final «getJavaFQN(p.getEType)» current = originalObject.«EcoreCraftingUtil.stringGetter(p)»;
199188
if (current != toSet) {
200189
originalObject.«EcoreCraftingUtil.stringSetter(p, "toSet", refGenPackages)»;
201190
}
202191
«ENDIF»
203192
«ELSEIF p.eContainer instanceof EClass»
204-
«val containingClass = p.EContainingClass»
193+
«val containingClass = p.getEContainingClass»
205194
«getJavaFQN(containingClass)» exeObject = («getJavaFQN(containingClass)») «getTracedToExeMethodName»(tracedObject);
206195
«IF p.many»
207196
exeObject.«EcoreCraftingUtil.stringGetter(p)».clear();
208197
«IF p instanceof EReference»
209-
exeObject.«EcoreCraftingUtil.stringGetter(p)».addAll((Collection<? extends «getJavaFQN(p.EType,true)»>) «getTracedToExeMethodName»(((«getJavaFQN(valueClass)») value).«EcoreCraftingUtil.stringGetter(p)»));
198+
exeObject.«EcoreCraftingUtil.stringGetter(p)».addAll((Collection<? extends «getJavaFQN(p.getEType,true)»>) «getTracedToExeMethodName»(((«getJavaFQN(valueClass)») value).«EcoreCraftingUtil.stringGetter(p)»));
210199
«ELSE»
211-
exeObject.«EcoreCraftingUtil.stringGetter(p)».addAll((Collection<? extends «getJavaFQN(p.EType,true)»>) ((«getJavaFQN(valueClass)») value).«EcoreCraftingUtil.stringGetter(p)»);
200+
exeObject.«EcoreCraftingUtil.stringGetter(p)».addAll((Collection<? extends «getJavaFQN(p.getEType,true)»>) ((«getJavaFQN(valueClass)») value).«EcoreCraftingUtil.stringGetter(p)»);
212201
«ENDIF»
213202
«ELSE»
214203
exeObject.«EcoreCraftingUtil.stringSetter(p, stringGetterExeValue("value", p, valueClass), refGenPackages)»;
@@ -237,4 +226,4 @@ class StateManagerGeneratorJava {
237226
'''
238227
}
239228

240-
}
229+
}

trace/generator/plugins/fr.inria.diverse.trace.plugin.generator/src/fr/inria/diverse/trace/plugin/generator/codegen/TraceConstructorGeneratorJava.xtend renamed to trace/generator/plugins/fr.inria.diverse.trace.gemoc.generator/src/fr/inria/diverse/trace/gemoc/generator/codegen/TraceConstructorGeneratorJava.xtend

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
* Contributors:
99
* Inria - initial API and implementation
1010
*******************************************************************************/
11-
package fr.inria.diverse.trace.plugin.generator.codegen
11+
package fr.inria.diverse.trace.gemoc.generator.codegen
1212

1313
import fr.inria.diverse.trace.commons.CodeGenUtil
1414
import fr.inria.diverse.trace.commons.EcoreCraftingUtil

0 commit comments

Comments
 (0)