Skip to content

Commit 82f3b01

Browse files
committed
Adapt code to switch to the new opsemantics metamodel
1 parent b6c6b53 commit 82f3b01

File tree

19 files changed

+274
-425
lines changed

19 files changed

+274
-425
lines changed

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ Require-Bundle: com.google.guava,
2222
fr.inria.diverse.melange.metamodel,
2323
org.eclipse.xtext.ui,
2424
org.eclipse.jdt.ui,
25-
org.gemoc.xdsmlframework.api
25+
org.gemoc.xdsmlframework.api,
26+
fr.inria.diverse.opsemanticsview.model;bundle-version="0.1.0",
27+
fr.inria.diverse.opsemanticsview.gen;bundle-version="1.0.0"
2628
Export-Package: fr.inria.diverse.trace.gemoc.generator
2729
Bundle-ClassPath: .
2830
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<?eclipse version="3.4"?>
33
<plugin>
4-
<extension-point id="fr.inria.diverse.trace.gemoc.generator.integration" name="Trace addon generator integration" schema="schema/fr.inria.diverse.trace.gemoc.generator.integration.exsd"/>
54

65
</plugin>

trace/generator/plugins/fr.inria.diverse.trace.gemoc.generator/schema/fr.inria.diverse.trace.gemoc.generator.integration.exsd

Lines changed: 0 additions & 107 deletions
This file was deleted.

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

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,37 +10,35 @@
1010
*******************************************************************************/
1111
package fr.inria.diverse.trace.gemoc.generator
1212

13-
import ecorext.Ecorext
14-
import ecorext.Rule
1513
import fr.inria.diverse.trace.commons.CodeGenUtil
1614
import fr.inria.diverse.trace.commons.EcoreCraftingUtil
1715
import fr.inria.diverse.trace.commons.ManifestUtil
1816
import fr.inria.diverse.trace.commons.PluginXMLHelper
1917
import fr.inria.diverse.trace.metamodel.generator.TraceMMGenerationTraceability
2018
import fr.inria.diverse.trace.plugin.generator.GenericTracePluginGenerator
19+
import java.util.HashSet
2120
import java.util.List
2221
import java.util.Set
22+
import opsemanticsview.OperationalSemanticsView
23+
import opsemanticsview.Rule
2324
import org.eclipse.core.resources.IFile
2425
import org.eclipse.core.resources.IProject
2526
import org.eclipse.core.runtime.IProgressMonitor
2627
import org.eclipse.emf.codegen.ecore.genmodel.GenPackage
2728
import org.eclipse.emf.ecore.EClass
2829
import org.eclipse.emf.ecore.EClassifier
2930
import org.eclipse.emf.ecore.EOperation
30-
import org.eclipse.emf.ecore.EPackage
3131
import org.eclipse.jdt.core.IPackageFragment
3232
import org.eclipse.ui.PlatformUI
3333
import org.eclipse.xtend.lib.annotations.Accessors
3434
import org.gemoc.xdsmlframework.api.extensions.engine_addon.EngineAddonSpecificationExtensionPoint
3535
import org.jdom2.Element
3636
import org.jdom2.filter.ElementFilter
37-
import java.util.HashSet
3837

3938
class GenericEngineTraceAddonGenerator {
4039

4140
// Inputs
42-
private val EPackage abstractSyntax // URI
43-
private val Ecorext executionEcorExt // URI
41+
private val OperationalSemanticsView executionEcorExt // URI
4442
private val String pluginName
4543

4644
// Transient
@@ -56,8 +54,7 @@ class GenericEngineTraceAddonGenerator {
5654
@Accessors(PUBLIC_GETTER, PROTECTED_SETTER)
5755
IProject project
5856

59-
new(EPackage abstractSyntax, Ecorext executionEcorExt, String pluginName) {
60-
this.abstractSyntax = abstractSyntax
57+
new(OperationalSemanticsView executionEcorExt, String pluginName) {
6158
this.executionEcorExt = executionEcorExt
6259
this.pluginName = pluginName
6360
}
@@ -85,7 +82,7 @@ class GenericEngineTraceAddonGenerator {
8582
public def void generateCompleteAddon(IProgressMonitor m) {
8683

8784
// Generate trace plugin
88-
val GenericTracePluginGenerator GenericTracePluginGenerator = new GenericTracePluginGenerator(abstractSyntax, executionEcorExt,
85+
val GenericTracePluginGenerator GenericTracePluginGenerator = new GenericTracePluginGenerator(executionEcorExt,
8986
pluginName, true)
9087
GenericTracePluginGenerator.generate(m)
9188

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

223220
private def Set<EClass> potentialCallerClasses(EClass stepCallerClass) {
224221
val possibleCallerClasses = new HashSet<EClass>
225-
possibleCallerClasses.addAll(abstractSyntax.EClassifiers.filter(EClass))
222+
possibleCallerClasses.addAll(executionEcorExt.executionMetamodel.EClassifiers.filter(EClass))
226223
possibleCallerClasses.addAll(traceability.allMutableClasses)
227224
val filtered = possibleCallerClasses.filter(EClass)
228225
.filter[c|c.equals(stepCallerClass)||c.EAllSuperTypes.contains(stepCallerClass)]

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

Lines changed: 56 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -10,30 +10,27 @@
1010
*******************************************************************************/
1111
package fr.inria.diverse.trace.gemoc.generator
1212

13-
import ecorext.Ecorext
1413
import fr.inria.diverse.melange.metamodel.melange.Language
1514
import fr.inria.diverse.melange.metamodel.melange.ModelTypingSpace
1615
import fr.inria.diverse.melange.ui.internal.MelangeActivator
17-
import fr.inria.diverse.trace.commons.EMFUtil
18-
import java.util.Set
16+
import fr.inria.diverse.opsemanticsview.gen.OperationalSemanticsViewGenerator
17+
import java.io.IOException
18+
import opsemanticsview.OperationalSemanticsView
1919
import org.eclipse.core.resources.IFile
20+
import org.eclipse.core.resources.IProject
21+
import org.eclipse.core.resources.IResource
22+
import org.eclipse.core.resources.ResourcesPlugin
23+
import org.eclipse.core.resources.WorkspaceJob
24+
import org.eclipse.core.runtime.CoreException
2025
import org.eclipse.core.runtime.IProgressMonitor
26+
import org.eclipse.core.runtime.IStatus
27+
import org.eclipse.core.runtime.Platform
28+
import org.eclipse.core.runtime.Status
2129
import org.eclipse.emf.common.util.URI
22-
import org.eclipse.emf.ecore.EPackage
2330
import org.eclipse.emf.ecore.resource.Resource
2431
import org.eclipse.emf.ecore.resource.ResourceSet
25-
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl
2632
import org.eclipse.xtext.ui.resource.IResourceSetProvider
2733
import org.gemoc.xdsmlframework.ide.ui.xdsml.wizards.MelangeXDSMLProjectHelper
28-
import org.eclipse.core.runtime.Platform
29-
import org.eclipse.core.resources.IProject
30-
import org.eclipse.core.resources.ResourcesPlugin
31-
import org.eclipse.core.resources.WorkspaceJob
32-
import org.eclipse.core.runtime.IStatus
33-
import org.eclipse.core.resources.IResource
34-
import org.eclipse.core.runtime.Status
35-
import org.eclipse.core.runtime.CoreException
36-
import java.io.IOException
3734

3835
/**
3936
* Plenty of ways to call the generator in an eclipse context.
@@ -61,37 +58,58 @@ class TraceAddonGeneratorIntegration {
6158
val ModelTypingSpace root = resource.getContents().get(0) as ModelTypingSpace
6259
val Language selection = root.elements.filter(Language).findFirst[name == selectedLanguage]
6360

64-
// Get syntax
65-
val ResourceSet rs = new ResourceSetImpl
66-
val URI mmUri = URI.createURI(selection.syntax.ecoreUri)
67-
//val URI mmUri = URI.createURI("platform:/resource/"+ root.name + "." + selection.name.toLowerCase + "/model/" + selection.name + ".ecore")
68-
val Resource syntaxResource = EMFUtil.loadModelURI(mmUri, rs);
69-
val Set<EPackage> syntax = syntaxResource.getContents().filter(EPackage).toSet
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
7067

7168
// Register all packages in registry
7269
// TODO remove them afterwards?
73-
for (EPackage p : syntaxResource.allContents.filter(EPackage).toSet)
74-
EPackage.Registry.INSTANCE.put(p.getNsURI(), p);
70+
// for (EPackage p : syntaxResource.allContents.filter(EPackage).toSet)
71+
// EPackage.Registry.INSTANCE.put(p.getNsURI(), p);
72+
7573

76-
// We find all extension points providing fr.inria.diverse.trace.gemoc.generator.integration
77-
val config = Platform.getExtensionRegistry().getConfigurationElementsFor(
78-
"fr.inria.diverse.trace.gemoc.generator.integration");
74+
// We find all extension points providing fr.inria.diverse.trace.gemoc.generator.integration
75+
val configNew = Platform.getExtensionRegistry().getConfigurationElementsFor(
76+
"fr.inria.diverse.opsemanticsview.gen");
7977

8078
// Using them, we instantiate TraceAddonGeneratorIntegrationConfiguration objects and look for one that can work with the current selected language
81-
val TraceAddonGeneratorIntegrationConfiguration validIntegration = config.map [ e |
79+
val OperationalSemanticsViewGenerator validViewGenerator = configNew.map [ e |
8280
e.createExecutableExtension("class")
83-
].filter(TraceAddonGeneratorIntegrationConfiguration).findFirst [ conf |
84-
conf.canWorkWith(selection, melangeFile.project)
81+
].filter(OperationalSemanticsViewGenerator).findFirst [ conf |
82+
conf.canHandle(selection, melangeFile.project)
8583
]
86-
87-
// If we find one, we generate
88-
if (validIntegration != null) {
89-
validIntegration.compute(selection, selectedLanguage, melangeFile.project, syntax, rs);
90-
val Set<EPackage> executionMetamodel = validIntegration.executionMetamodel
91-
val Ecorext mmextension = validIntegration.getExecutionExtension();
92-
generateAddon(selectedLanguage, pluginName, executionMetamodel, replace, monitor, mmextension)
84+
85+
// If we find one, we generate
86+
if (validViewGenerator != null) {
87+
val OperationalSemanticsView mmextension = validViewGenerator.generate(selection, melangeFile.project);
88+
generateAddon(selectedLanguage, pluginName, replace, monitor, mmextension)
9389

9490
} // 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
95113
else {
96114
throw new CoreException(
97115
new Status(
@@ -107,8 +125,8 @@ class TraceAddonGeneratorIntegration {
107125
/**
108126
* Central operation of the class, that calls business operations
109127
*/
110-
public static def void generateAddon(String mmName, String pluginName, Set<EPackage> inputMetamodel,
111-
boolean replace, IProgressMonitor monitor, Ecorext executionExtension) throws CoreException {
128+
public static def void generateAddon(String mmName, String pluginName,
129+
boolean replace, IProgressMonitor monitor, OperationalSemanticsView executionExtension) throws CoreException {
112130

113131
// We look for an existing project with this name
114132
val IProject existingProject = ResourcesPlugin.getWorkspace().getRoot().getProject(pluginName);
@@ -142,10 +160,7 @@ class TraceAddonGeneratorIntegration {
142160

143161
// Then we call all our business operations
144162
// TODO handle languages defined with multiple ecores
145-
val EPackage extendedMetamodel = inputMetamodel.iterator().next();
146-
147-
val GenericEngineTraceAddonGenerator traceaddgen = new GenericEngineTraceAddonGenerator(extendedMetamodel,
148-
executionExtension, pluginName);
163+
val GenericEngineTraceAddonGenerator traceaddgen = new GenericEngineTraceAddonGenerator(executionExtension, pluginName);
149164
traceaddgen.generateCompleteAddon(monitor);
150165
} catch (IOException e) {
151166

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

Lines changed: 0 additions & 31 deletions
This file was deleted.

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ Require-Bundle: org.eclipse.xtend.lib,
77
org.eclipse.xtend.lib.macro,
88
com.google.guava,
99
org.eclipse.xtext.xbase.lib,
10-
fr.inria.diverse.ecorext;bundle-version="0.1.0",
1110
org.eclipse.emf.ecore.xmi;bundle-version="2.10.1",
1211
fr.inria.diverse.trace.commons;bundle-version="1.0.0",
1312
org.eclipse.emf.codegen.ecore;bundle-version="2.10.2",
1413
org.eclipse.core.runtime,
1514
org.eclipse.emf.ecore;visibility:=reexport,
16-
fr.inria.diverse.trace.commons.model;bundle-version="0.1.0";visibility:=reexport
15+
fr.inria.diverse.trace.commons.model;bundle-version="0.1.0";visibility:=reexport,
16+
fr.inria.diverse.opsemanticsview.model;bundle-version="0.1.0"
1717
Bundle-ActivationPolicy: lazy
1818
Export-Package: fr.inria.diverse.trace.metamodel.generator,
1919
base,

0 commit comments

Comments
 (0)