diff --git a/.gitignore b/.gitignore
index ae9784d17..66e9c0268 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,4 +17,7 @@ build.acceleo
.DS_Store
xtend-gen
.polyglot.build.properties
+.polyglot.*
+.META-INF_MANIFEST.MF
+feature.xml.takari_issue_192
diff --git a/commons/plugin.xml b/commons/plugin.xml
deleted file mode 100644
index 5535690d3..000000000
--- a/commons/plugin.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/commons/plugins/org.eclipse.gemoc.commons.eclipse.messagingsystem.api/pomfirst/pom.xml b/commons/plugins/org.eclipse.gemoc.commons.eclipse.messagingsystem.api/pomfirst/pom.xml
new file mode 100644
index 000000000..c04c57607
--- /dev/null
+++ b/commons/plugins/org.eclipse.gemoc.commons.eclipse.messagingsystem.api/pomfirst/pom.xml
@@ -0,0 +1,66 @@
+
+
+ 4.0.0
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.commons.eclipse.messagingsystem.api
+ 3.0.0-SNAPSHOT
+
+ jar
+
+
+ scm:git:https://github.com/eclipse/gemoc-studio-modeldebugging.git
+ UTF-8
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ unpack
+ prepare-package
+
+ unpack
+
+
+
+
+ org.eclipse.gemoc.commons
+ ${project.artifactId}
+ ${project.version}
+ jar
+ true
+ ${project.build.directory}/classes
+ **
+
+
+
+
+
+
+
+
+
+
+
+
+
+ nexus-eclipse-gemoc
+ Nexus Eclipse GEMOC
+
+ true
+
+
+ true
+
+ https://repo.eclipse.org/content/groups/gemoc/
+
+
+
\ No newline at end of file
diff --git a/commons/plugins/org.eclipse.gemoc.commons.eclipse.pde/pomfirst/pom.xml b/commons/plugins/org.eclipse.gemoc.commons.eclipse.pde/pomfirst/pom.xml
new file mode 100644
index 000000000..dacbc96e5
--- /dev/null
+++ b/commons/plugins/org.eclipse.gemoc.commons.eclipse.pde/pomfirst/pom.xml
@@ -0,0 +1,71 @@
+
+
+ 4.0.0
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.commons.eclipse.pde
+ 3.0.0-SNAPSHOT
+
+ jar
+
+
+ scm:git:https://github.com/eclipse/gemoc-studio-modeldebugging.git
+ UTF-8
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ unpack
+ prepare-package
+
+ unpack
+
+
+
+
+ org.eclipse.gemoc.commons
+ ${project.artifactId}
+ ${project.version}
+ jar
+ true
+ ${project.build.directory}/classes
+ **
+
+
+
+
+
+
+
+
+
+
+
+ org.eclipse.jdt
+ org.eclipse.jdt.core
+ [3.6.0,4.0.0)
+
+
+
+
+ nexus-eclipse-gemoc
+ Nexus Eclipse GEMOC
+
+ true
+
+
+ true
+
+ https://repo.eclipse.org/content/groups/gemoc/
+
+
+
\ No newline at end of file
diff --git a/commons/plugins/org.eclipse.gemoc.commons.eclipse/pomfirst/pom.xml b/commons/plugins/org.eclipse.gemoc.commons.eclipse/pomfirst/pom.xml
new file mode 100644
index 000000000..64a77ba13
--- /dev/null
+++ b/commons/plugins/org.eclipse.gemoc.commons.eclipse/pomfirst/pom.xml
@@ -0,0 +1,76 @@
+
+
+ 4.0.0
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.commons.eclipse
+ 3.0.0-SNAPSHOT
+
+ jar
+
+
+ scm:git:https://github.com/eclipse/gemoc-studio-modeldebugging.git
+ UTF-8
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ unpack
+ prepare-package
+
+ unpack
+
+
+
+
+ org.eclipse.gemoc.commons
+ ${project.artifactId}
+ ${project.version}
+ jar
+ true
+ ${project.build.directory}/classes
+ **
+
+
+
+
+
+
+
+
+
+
+
+ org.eclipse.emf
+ org.eclipse.emf.common
+ [2.16.0,3.0.0)
+
+
+ org.eclipse.platform
+ org.eclipse.core.resources
+ [3.6.0,4.0.0)
+
+
+
+
+ nexus-eclipse-gemoc
+ Nexus Eclipse GEMOC
+
+ true
+
+
+ true
+
+ https://repo.eclipse.org/content/groups/gemoc/
+
+
+
\ No newline at end of file
diff --git a/commons/plugins/org.eclipse.gemoc.commons.utils/.classpath b/commons/plugins/org.eclipse.gemoc.commons.utils/.classpath
new file mode 100644
index 000000000..eca7bdba8
--- /dev/null
+++ b/commons/plugins/org.eclipse.gemoc.commons.utils/.classpath
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/commons/plugins/org.eclipse.gemoc.commons.utils/.project b/commons/plugins/org.eclipse.gemoc.commons.utils/.project
new file mode 100644
index 000000000..646222aaa
--- /dev/null
+++ b/commons/plugins/org.eclipse.gemoc.commons.utils/.project
@@ -0,0 +1,28 @@
+
+
+ org.eclipse.gemoc.commons.utils
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+
+ org.eclipse.pde.PluginNature
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/commons/plugins/org.eclipse.gemoc.commons.utils/.settings/org.eclipse.jdt.core.prefs b/commons/plugins/org.eclipse.gemoc.commons.utils/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..0c68a61dc
--- /dev/null
+++ b/commons/plugins/org.eclipse.gemoc.commons.utils/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/commons/plugins/org.eclipse.gemoc.commons.utils/META-INF/MANIFEST.MF b/commons/plugins/org.eclipse.gemoc.commons.utils/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..73ec6afce
--- /dev/null
+++ b/commons/plugins/org.eclipse.gemoc.commons.utils/META-INF/MANIFEST.MF
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: GEMOC Commons Utils
+Bundle-SymbolicName: org.eclipse.gemoc.commons.utils
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: Inria
+Automatic-Module-Name: org.eclipse.gemoc.commons.utils
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/commons/plugins/org.eclipse.gemoc.commons.utils/build.properties b/commons/plugins/org.eclipse.gemoc.commons.utils/build.properties
new file mode 100644
index 000000000..34d2e4d2d
--- /dev/null
+++ b/commons/plugins/org.eclipse.gemoc.commons.utils/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .
diff --git a/commons/plugins/org.eclipse.gemoc.commons.utils/pomfirst/pom.xml b/commons/plugins/org.eclipse.gemoc.commons.utils/pomfirst/pom.xml
new file mode 100644
index 000000000..0013552f8
--- /dev/null
+++ b/commons/plugins/org.eclipse.gemoc.commons.utils/pomfirst/pom.xml
@@ -0,0 +1,66 @@
+
+
+ 4.0.0
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.commons.utils
+ 1.0.0-SNAPSHOT
+
+ jar
+
+
+ scm:git:https://github.com/eclipse/gemoc-studio-modeldebugging.git
+ UTF-8
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ unpack
+ prepare-package
+
+ unpack
+
+
+
+
+ org.eclipse.gemoc.commons
+ ${project.artifactId}
+ ${project.version}
+ jar
+ true
+ ${project.build.directory}/classes
+ **
+
+
+
+
+
+
+
+
+
+
+
+
+
+ nexus-eclipse-gemoc
+ Nexus Eclipse GEMOC
+
+ true
+
+
+ true
+
+ https://repo.eclipse.org/content/groups/gemoc/
+
+
+
\ No newline at end of file
diff --git a/commons/plugins/org.eclipse.gemoc.commons.utils/src/org/eclipse/gemoc/commons/utils/ExtensibleInputStream.java b/commons/plugins/org.eclipse.gemoc.commons.utils/src/org/eclipse/gemoc/commons/utils/ExtensibleInputStream.java
new file mode 100644
index 000000000..52839ccb2
--- /dev/null
+++ b/commons/plugins/org.eclipse.gemoc.commons.utils/src/org/eclipse/gemoc/commons/utils/ExtensibleInputStream.java
@@ -0,0 +1,56 @@
+package org.eclipse.gemoc.commons.utils;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.LinkedList;
+import java.util.concurrent.LinkedBlockingQueue;
+
+public class ExtensibleInputStream extends InputStream {
+
+ LinkedBlockingQueue messages = new LinkedBlockingQueue<>();
+
+ @Override
+ public int read() throws IOException {
+
+// System.out.println("[DEBUG] Read InputStream");
+
+ waitForMessage();
+
+ InputStream current = messages.peek();
+ int c = current.read();
+ if(c != -1) {
+ return c;
+ }
+ else {
+// System.out.println("[DEBUG] End InputStream 2");
+ messages.poll();
+
+ waitForMessage();
+
+ current = messages.peek();
+ return current.read();
+ }
+ }
+
+ public void addMessage(String message) {
+// System.out.println("[DEBUG] Fill InputStream");
+ messages.add(new ByteArrayInputStream(message.getBytes()));
+ synchronized (this) {
+ this.notify();
+ }
+ }
+
+ public void waitForMessage() {
+ if(messages.isEmpty()) {
+ try {
+ synchronized (this) {
+ this.wait();
+ }
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+// System.out.println("[DEBUG] Wait");
+ }
+ }
+}
diff --git a/commons/plugins/org.eclipse.gemoc.commons.utils/src/org/eclipse/gemoc/commons/utils/ModelAwarePrintStream.java b/commons/plugins/org.eclipse.gemoc.commons.utils/src/org/eclipse/gemoc/commons/utils/ModelAwarePrintStream.java
new file mode 100644
index 000000000..923d58d17
--- /dev/null
+++ b/commons/plugins/org.eclipse.gemoc.commons.utils/src/org/eclipse/gemoc/commons/utils/ModelAwarePrintStream.java
@@ -0,0 +1,212 @@
+package org.eclipse.gemoc.commons.utils;
+
+import java.io.OutputStream;
+import java.io.PrintStream;
+import java.util.Locale;
+
+public class ModelAwarePrintStream extends PrintStream {
+
+ private PrintStream baseStream;
+ private Thread modelExecutionThread;
+
+ public ModelAwarePrintStream(OutputStream out, PrintStream baseStream) {
+ super(out);
+ this.baseStream = baseStream;
+ }
+
+ public void registerModelExecutionThread(Thread modelExecutionThread) {
+ this.modelExecutionThread = modelExecutionThread;
+ }
+
+ @Override
+ public void print(boolean b) {
+ if (Thread.currentThread() == this.modelExecutionThread) {
+ super.print(b);
+ } else {
+ this.baseStream.print(b);
+ }
+ }
+
+ @Override
+ public void print(char c) {
+ if (Thread.currentThread() == this.modelExecutionThread) {
+ super.print(c);
+ } else {
+ this.baseStream.print(c);
+ }
+ }
+
+ @Override
+ public void print(int i) {
+ if (Thread.currentThread() == this.modelExecutionThread) {
+ super.print(i);
+ } else {
+ this.baseStream.print(i);
+ }
+ }
+
+ @Override
+ public void print(long l) {
+ if (Thread.currentThread() == this.modelExecutionThread) {
+ super.print(l);
+ } else {
+ this.baseStream.print(l);
+ }
+ }
+
+ @Override
+ public void print(float f) {
+ if (Thread.currentThread() == this.modelExecutionThread) {
+ super.print(f);
+ } else {
+ this.baseStream.print(f);
+ }
+ }
+
+ @Override
+ public void print(double d) {
+ if (Thread.currentThread() == this.modelExecutionThread) {
+ super.print(d);
+ } else {
+ this.baseStream.print(d);
+ }
+ }
+
+ @Override
+ public void print(char[] s) {
+ if (Thread.currentThread() == this.modelExecutionThread) {
+ super.print(s);
+ } else {
+ this.baseStream.print(s);
+ }
+ }
+
+ @Override
+ public void print(String s) {
+ if (Thread.currentThread() == this.modelExecutionThread) {
+ super.print(s);
+ } else {
+ this.baseStream.print(s);
+ }
+ }
+
+ @Override
+ public void print(Object obj) {
+ if (Thread.currentThread() == this.modelExecutionThread) {
+ super.print(obj);
+ } else {
+ this.baseStream.print(obj);
+ }
+ }
+
+ @Override
+ public void println() {
+ if (Thread.currentThread() == this.modelExecutionThread) {
+ super.println();
+ } else {
+ this.baseStream.println();
+ }
+ }
+
+ @Override
+ public void println(boolean x) {
+ if (Thread.currentThread() == this.modelExecutionThread) {
+ super.println(x);
+ } else {
+ this.baseStream.println(x);
+ }
+ }
+
+ @Override
+ public void println(char x) {
+ if (Thread.currentThread() == this.modelExecutionThread) {
+ super.println(x);
+ } else {
+ this.baseStream.println(x);
+ }
+ }
+
+ @Override
+ public void println(int x) {
+ if (Thread.currentThread() == this.modelExecutionThread) {
+ super.println(x);
+ } else {
+ this.baseStream.println(x);
+ }
+ }
+
+ @Override
+ public void println(long x) {
+ if (Thread.currentThread() == this.modelExecutionThread) {
+ super.println(x);
+ } else {
+ this.baseStream.println(x);
+ }
+ }
+
+ @Override
+ public void println(float x) {
+ if (Thread.currentThread() == this.modelExecutionThread) {
+ super.println(x);
+ } else {
+ this.baseStream.println(x);
+ }
+ }
+
+ @Override
+ public void println(double x) {
+ if (Thread.currentThread() == this.modelExecutionThread) {
+ super.println(x);
+ } else {
+ this.baseStream.println(x);
+ }
+ }
+
+ @Override
+ public void println(char[] x) {
+ if (Thread.currentThread() == this.modelExecutionThread) {
+ super.println(x);
+ } else {
+ this.baseStream.println(x);
+ }
+ }
+
+ @Override
+ public void println(String x) {
+ if (Thread.currentThread() == this.modelExecutionThread) {
+ super.println(x);
+ } else {
+ this.baseStream.println(x);
+ }
+ }
+
+ @Override
+ public void println(Object x) {
+ if (Thread.currentThread() == this.modelExecutionThread) {
+ super.println(x);
+ } else {
+ this.baseStream.println(x);
+ }
+ }
+
+ @Override
+ public PrintStream printf(String format, Object... args) {
+ if (Thread.currentThread() == this.modelExecutionThread) {
+ return super.printf(format, args);
+ } else {
+ return this.baseStream.printf(format, args);
+ }
+ }
+
+ @Override
+ public PrintStream printf(Locale l, String format, Object... args) {
+ if (Thread.currentThread() == this.modelExecutionThread) {
+ return super.printf(l, format, args);
+ } else {
+ return this.baseStream.printf(l, format, args);
+ }
+ }
+
+
+
+}
diff --git a/commons/plugins/org.eclipse.gemoc.dsl.model/pomfirst/pom.xml b/commons/plugins/org.eclipse.gemoc.dsl.model/pomfirst/pom.xml
new file mode 100644
index 000000000..94f0e9e56
--- /dev/null
+++ b/commons/plugins/org.eclipse.gemoc.dsl.model/pomfirst/pom.xml
@@ -0,0 +1,66 @@
+
+
+ 4.0.0
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.dsl.model
+ 3.0.0-SNAPSHOT
+
+ jar
+
+
+ scm:git:https://github.com/eclipse/gemoc-studio-modeldebugging.git
+ UTF-8
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ unpack
+ prepare-package
+
+ unpack
+
+
+
+
+ org.eclipse.gemoc.commons
+ ${project.artifactId}
+ ${project.version}
+ jar
+ true
+ ${project.build.directory}/classes
+ **
+
+
+
+
+
+
+
+
+
+
+
+
+
+ nexus-eclipse-gemoc
+ Nexus Eclipse GEMOC
+
+ true
+
+
+ true
+
+ https://repo.eclipse.org/content/groups/gemoc/
+
+
+
\ No newline at end of file
diff --git a/commons/plugins/pom.xml b/commons/plugins/pom.xml
new file mode 100644
index 000000000..66638e9e2
--- /dev/null
+++ b/commons/plugins/pom.xml
@@ -0,0 +1,17 @@
+
+
+ 4.0.0
+ org.eclipse.gemoc.commons
+ org.eclipse.gemoc.commons.plugins.root
+ pom
+
+ org.eclipse.gemoc.commons
+ org.eclipse.gemoc.commons.root
+ 3.0.0-SNAPSHOT
+ ..
+
+
+
+ org.eclipse.gemoc.commons.utils
+
+
diff --git a/commons/pom.xml b/commons/pom.xml
index 2c6fc19dd..6a8d4befb 100644
--- a/commons/pom.xml
+++ b/commons/pom.xml
@@ -34,6 +34,9 @@
plugins/org.jaxen
plugins/org.jdom2
+
+ plugins
+
releng
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.debugger/pomfirst/pom.xml b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.debugger/pomfirst/pom.xml
new file mode 100644
index 000000000..f29417c8d
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.debugger/pomfirst/pom.xml
@@ -0,0 +1,76 @@
+
+
+ 4.0.0
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.executionframework.debugger
+ 4.0.0-SNAPSHOT
+
+ jar
+
+
+ scm:git:https://github.com/eclipse/gemoc-studio-modeldebugging.git
+ UTF-8
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ unpack
+ prepare-package
+
+ unpack
+
+
+
+
+ org.eclipse.gemoc.modeldebugging.executionframework
+ ${project.artifactId}
+ ${project.version}
+ jar
+ true
+ ${project.build.directory}/classes
+ **
+
+
+
+
+
+
+
+
+
+
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.commons.eclipse
+ 3.0.0-SNAPSHOT
+
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.trace.commons.model
+ 3.0.1-SNAPSHOT
+
+
+
+
+ nexus-eclipse-gemoc
+ Nexus Eclipse GEMOC
+
+ true
+
+
+ true
+
+ https://repo.eclipse.org/content/groups/gemoc/
+
+
+
\ No newline at end of file
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.engine/pomfirst/pom.xml b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.engine/pomfirst/pom.xml
new file mode 100644
index 000000000..4c67b74c8
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.engine/pomfirst/pom.xml
@@ -0,0 +1,76 @@
+
+
+ 4.0.0
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.executionframework.engine
+ 4.0.0-SNAPSHOT
+
+ jar
+
+
+ scm:git:https://github.com/eclipse/gemoc-studio-modeldebugging.git
+ UTF-8
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ unpack
+ prepare-package
+
+ unpack
+
+
+
+
+ org.eclipse.gemoc.modeldebugging.executionframework
+ ${project.artifactId}
+ ${project.version}
+ jar
+ true
+ ${project.build.directory}/classes
+ **
+
+
+
+
+
+
+
+
+
+
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.commons.eclipse
+ 3.0.0-SNAPSHOT
+
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.trace.commons.model
+ 3.0.1-SNAPSHOT
+
+
+
+
+ nexus-eclipse-gemoc
+ Nexus Eclipse GEMOC
+
+ true
+
+
+ true
+
+ https://repo.eclipse.org/content/groups/gemoc/
+
+
+
\ No newline at end of file
diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/.classpath b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/.classpath
new file mode 100644
index 000000000..002ad570e
--- /dev/null
+++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/.classpath
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/.project b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/.project
new file mode 100644
index 000000000..c2f06ef95
--- /dev/null
+++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/.project
@@ -0,0 +1,29 @@
+
+
+ org.eclipse.gemoc.executionframework.mep
+
+
+
+
+
+ org.eclipse.xtext.ui.shared.xtextBuilder
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.m2e.core.maven2Builder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+ org.eclipse.m2e.core.maven2Nature
+ org.eclipse.xtext.ui.shared.xtextNature
+
+
diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/.settings/org.eclipse.core.resources.prefs b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 000000000..989609020
--- /dev/null
+++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
+encoding//src/main/resources=UTF-8
+encoding//src/test/resources=UTF-8
+encoding/=UTF-8
diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/.settings/org.eclipse.jdt.core.prefs b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..b8947ec6f
--- /dev/null
+++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/.settings/org.eclipse.xtend.core.Xtend.prefs b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 000000000..9682a4c0a
--- /dev/null
+++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,7 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/main/java.directory=xtend-gen
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/pom.xml b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/pom.xml
new file mode 100644
index 000000000..28acf60e4
--- /dev/null
+++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/pom.xml
@@ -0,0 +1,78 @@
+
+ 4.0.0
+ org.eclipse.gemoc.executionframework
+ org.eclipse.gemoc.executionframework.mep
+ 1.0.0-SNAPSHOT
+
+
+
+ org.eclipse.gemoc.executionframework
+ org.eclipse.gemoc.executionframework.pomfirst
+ 1.0.0-SNAPSHOT
+
+
+
+ 1.8
+ 1.8
+ 2.22.0
+ 0.21.1
+ 2.18.0
+ 0.8.0
+
+
+
+
+
+
+ org.eclipse.xtext
+ org.eclipse.xtext
+ ${xtend.version}
+
+
+
+ org.eclipse.lsp4j
+ org.eclipse.lsp4j.debug
+ ${lsp4j.version}
+
+
+ org.eclipse.lsp4j
+ org.eclipse.lsp4j.jsonrpc
+ ${lsp4j.version}
+
+
+ org.eclipse.emf
+ org.eclipse.emf.edit
+ 2.16.0
+
+
+ org.eclipse.gemoc.commons
+ org.eclipse.gemoc.commons.eclipse.pde
+ 3.0.0-SNAPSHOT
+
+
+ org.eclipse.gemoc.commons
+ org.eclipse.gemoc.commons.eclipse.messagingsystem.api
+ 3.0.0-SNAPSHOT
+
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.xdsmlframework.api
+ 4.0.0-SNAPSHOT
+
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.xdsmlframework.commons
+ 4.0.0-SNAPSHOT
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/launch/GemocMEPServerImpl.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/launch/GemocMEPServerImpl.java
new file mode 100644
index 000000000..20db8bcaf
--- /dev/null
+++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/launch/GemocMEPServerImpl.java
@@ -0,0 +1,510 @@
+package org.eclipse.gemoc.executionframework.mep.launch;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+import java.util.function.Supplier;
+
+import org.apache.log4j.Logger;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.gemoc.executionframework.mep.services.IModelExecutionProtocolClient;
+import org.eclipse.gemoc.executionframework.mep.services.IModelExecutionProtocolServer;
+import org.eclipse.gemoc.executionframework.mep.services.ModelExecutionClientAware;
+import org.eclipse.lsp4j.debug.Breakpoint;
+import org.eclipse.lsp4j.debug.Capabilities;
+import org.eclipse.lsp4j.debug.ContinueArguments;
+import org.eclipse.lsp4j.debug.ContinueResponse;
+import org.eclipse.lsp4j.debug.InitializeRequestArguments;
+import org.eclipse.lsp4j.debug.NextArguments;
+import org.eclipse.lsp4j.debug.OutputEventArguments;
+import org.eclipse.lsp4j.debug.RestartArguments;
+import org.eclipse.lsp4j.debug.SetBreakpointsArguments;
+import org.eclipse.lsp4j.debug.SetBreakpointsResponse;
+import org.eclipse.lsp4j.debug.SourceArguments;
+import org.eclipse.lsp4j.debug.SourceBreakpoint;
+import org.eclipse.lsp4j.debug.SourceResponse;
+import org.eclipse.lsp4j.debug.StackFrame;
+import org.eclipse.lsp4j.debug.StackTraceArguments;
+import org.eclipse.lsp4j.debug.StackTraceResponse;
+import org.eclipse.lsp4j.debug.StepInArguments;
+import org.eclipse.lsp4j.debug.StepOutArguments;
+import org.eclipse.lsp4j.debug.TerminateArguments;
+import org.eclipse.lsp4j.debug.Variable;
+import org.eclipse.lsp4j.debug.VariablesArguments;
+import org.eclipse.lsp4j.debug.VariablesResponse;
+import org.eclipse.lsp4j.jsonrpc.Endpoint;
+import org.eclipse.lsp4j.jsonrpc.ResponseErrorException;
+import org.eclipse.lsp4j.jsonrpc.json.JsonRpcMethod;
+import org.eclipse.lsp4j.jsonrpc.json.JsonRpcMethodProvider;
+import org.eclipse.lsp4j.jsonrpc.messages.ResponseError;
+import org.eclipse.lsp4j.jsonrpc.services.ServiceEndpoints;
+
+abstract public class GemocMEPServerImpl implements IModelExecutionProtocolServer, Endpoint, JsonRpcMethodProvider, ModelExecutionClientAware {
+
+ private static final Logger LOG = Logger.getLogger(GemocMEPServerImpl.class);
+
+ private Map supportedMethods;
+
+ //private final Multimap extensionProviders = LinkedListMultimap.create();
+
+ protected IModelExecutionProtocolClient client;
+
+ protected boolean initialized = false;
+ protected boolean simulationStarted = false;
+ protected MEPLauncherParameters launcherParameters = null;
+ protected Breakpoint[] breakpoints = new Breakpoint[0];
+
+ @Override
+ public Map supportedMethods() {
+ if (supportedMethods != null) {
+ return supportedMethods;
+ }
+ //synchronized (extensionProviders) {
+ Map supportedMethods = new LinkedHashMap<>();
+ supportedMethods.putAll(ServiceEndpoints.getSupportedMethods(getClass()));
+
+ for(JsonRpcMethod supportedMethod : supportedMethods.values()) {
+ LOG.info("supported method "+supportedMethod.getMethodName()+ " "+supportedMethod.getParameterTypes());
+ }
+ /*
+ Map extensions = new LinkedHashMap<>();
+ for (IResourceServiceProvider resourceServiceProvider : getAllLanguages()) {
+ ILanguageServerExtension ext = resourceServiceProvider.get(ILanguageServerExtension.class);
+ if (ext != null) {
+ ext.initialize(access);
+ Map supportedExtensions = ext instanceof JsonRpcMethodProvider
+ ? ((JsonRpcMethodProvider) ext).supportedMethods()
+ : ServiceEndpoints.getSupportedMethods(ext.getClass());
+ for (Map.Entry entry : supportedExtensions.entrySet()) {
+ if (supportedMethods.containsKey(entry.getKey())) {
+ LOG.error("The json rpc method \'" + entry.getKey()
+ + "\' can not be an extension as it is already defined in the LSP standard.");
+ } else {
+ JsonRpcMethod existing = extensions.put(entry.getKey(), entry.getValue());
+ if (existing != null && !Objects.equal(existing, entry.getValue())) {
+ LOG.error("An incompatible LSP extension \'" + entry.getKey()
+ + "\' has already been registered. Using 1 ignoring 2. \n1 : " + existing
+ + " \n2 : " + entry.getValue());
+ extensions.put(entry.getKey(), existing);
+ } else {
+ Endpoint endpoint = ServiceEndpoints.toEndpoint(ext);
+ extensionProviders.put(entry.getKey(), endpoint);
+ supportedMethods.put(entry.getKey(), entry.getValue());
+ }
+ }
+ }
+ }
+ }
+ */
+ this.supportedMethods = supportedMethods;
+ return supportedMethods;
+ //}
+ }
+
+ @Override
+ public void notify(String method, Object parameter) {
+ /* for (Endpoint endpoint : extensionProviders.get(method)) {
+ try {
+ endpoint.notify(method, parameter);
+ } catch (UnsupportedOperationException e) {
+ if (e != ILanguageServerExtension.NOT_HANDLED_EXCEPTION) {
+ throw e;
+ }
+ }
+ }*/
+ LOG.info("notify "+method);
+ }
+
+ @Override
+ public CompletableFuture> request(String method, Object parameter) {
+ /* if (!extensionProviders.containsKey(method)) {
+ throw new UnsupportedOperationException("The json request \'" + method + "\' is unknown.");
+ }
+ for (Endpoint endpoint : extensionProviders.get(method)) {
+ try {
+ return endpoint.request(method, parameter);
+ } catch (UnsupportedOperationException e) {
+ if (e != ILanguageServerExtension.NOT_HANDLED_EXCEPTION) {
+ throw e;
+ }
+ }
+ }*/
+ throw new UnsupportedOperationException("The json request \'" + method + "\' is unknown.");
+ //return null;
+ }
+
+ @Override
+ public void connect(IModelExecutionProtocolClient client) {
+ this.client = client;
+ }
+
+
+
+ // ****************
+ // * DAP protocol *
+ // ****************
+ @Override
+ public CompletableFuture initialize(InitializeRequestArguments args) {
+ LOG.info("CompletableFuture initialize(InitializeRequestArguments args)");
+ CompletableFuture future = CompletableFuture.supplyAsync(new Supplier() {
+ @Override
+ public Capabilities get() {
+ if (initialized) {
+ ResponseError error = new ResponseError();
+ error.setMessage("Server already initialized");
+ throw new ResponseErrorException(error);
+ }
+
+ Capabilities capabilities = new Capabilities();
+ capabilities.setSupportsTerminateRequest(true);
+ // TODO declare here DAP capabilities
+
+ client.initialized();
+ initialized = true;
+
+ return capabilities;
+ }
+ });
+ return future;
+ }
+
+ @Override
+ public CompletableFuture launch(Map args) {
+ CompletableFuture future = CompletableFuture.runAsync(new Runnable() {
+ @Override
+ public void run() {
+ if (!initialized) {
+ ResponseError error = new ResponseError();
+ error.setMessage("Server not initialized");
+ throw new ResponseErrorException(error);
+ }
+ if (simulationStarted) {
+ ResponseError error = new ResponseError();
+ error.setMessage("Another simulation is running");
+ throw new ResponseErrorException(error);
+ }
+
+ // TODO launch the engine
+ // throw new Exception("failed to launch with args\'" + args + "\'.");
+ LOG.info("launch received with args "+args);
+
+ Resource res = null;
+ if (args.containsKey(MEPLaunchParameterKey.noDebug.name())) {
+ //TODO: Normal launch if true
+ }
+ if (args.containsKey(MEPLaunchParameterKey.modelContent.name())) {
+ try {
+ ResourceSet rs = createResourceSet();
+ InputStream in = new ByteArrayInputStream("type foo type bar".getBytes());
+ res = rs.createResource(URI.createURI("dummy:/example.k3fsm"));
+
+ res.load(in, rs.getLoadOptions());
+
+ //Model model = (Model) resource.getContents().get(0);
+ LOG.info("root element in model-content is "+res.getContents().get(0));
+
+ } catch (IOException e) {
+ LOG.error(e.getMessage(), e);
+ }
+ }
+ if(args.containsKey(MEPLaunchParameterKey.modelURI.name())) {
+ String modelURIString = (String) args.get(MEPLaunchParameterKey.modelURI.name());
+ URI uri = URI.createURI(modelURIString);
+ ResourceSet rs = createResourceSet();
+ res = rs.createResource(uri);
+ try {
+ res.load(rs.getLoadOptions());
+ res.getContents().get(0);
+ LOG.info("root element in model uri is "+res.getContents().get(0));
+ } catch (IOException e) {
+ LOG.error(e.getMessage(), e);
+ }
+ }
+
+ String methodEntryPoint = "";
+ if(args.containsKey(MEPLaunchParameterKey.methodEntryPoint.name())) {
+ methodEntryPoint = (String) args.get(MEPLaunchParameterKey.methodEntryPoint.name());
+ }
+ String initializationMethod = "";
+ if(args.containsKey(MEPLaunchParameterKey.initializationMethod.name())) {
+ initializationMethod = (String) args.get(MEPLaunchParameterKey.initializationMethod.name());
+ }
+
+ String modelEntryPoint = "/";
+ if(args.containsKey(MEPLaunchParameterKey.modelEntryPoint.name())) {
+ modelEntryPoint = (String) args.get(MEPLaunchParameterKey.modelEntryPoint.name());
+ }
+ String initializationArguments = "/";
+ if(args.containsKey(MEPLaunchParameterKey.initializationArguments.name())) {
+ initializationArguments = (String) args.get(MEPLaunchParameterKey.initializationArguments.name());
+ }
+
+ launcherParameters = new MEPLauncherParameters();
+ launcherParameters.resourceModel = res;
+ launcherParameters.modelEntryPoint = modelEntryPoint;
+ launcherParameters.methodEntryPoint = methodEntryPoint;
+ launcherParameters.initializationMethod = initializationMethod;
+ launcherParameters.initializationMethodArgs = initializationArguments;
+ launchGemocEngine(launcherParameters);
+
+ simulationStarted = true;
+ }
+ });
+
+ return future;
+ }
+
+ @Override
+ public CompletableFuture continue_(ContinueArguments args) {
+ CompletableFuture future = CompletableFuture.supplyAsync(new Supplier() {
+ @Override
+ public ContinueResponse get() {
+ if (!simulationStarted) {
+ ResponseError error = new ResponseError();
+ error.setMessage("Simulation not started");
+ throw new ResponseErrorException(error);
+ }
+
+ internalContinue();
+
+ ContinueResponse response = new ContinueResponse();
+ return response;
+ }
+ });
+ return future;
+ }
+
+ @Override
+ public CompletableFuture next(NextArguments args) {
+ CompletableFuture future = CompletableFuture.runAsync(new Runnable() {
+ @Override
+ public void run() {
+ if (!simulationStarted) {
+ ResponseError error = new ResponseError();
+ error.setMessage("Simulation not started");
+ throw new ResponseErrorException(error);
+ }
+
+ internalNext();
+ }
+ });
+ return future;
+ }
+
+ @Override
+ public CompletableFuture stepIn(StepInArguments args) {
+ CompletableFuture future = CompletableFuture.runAsync(new Runnable() {
+ @Override
+ public void run() {
+ if (!simulationStarted) {
+ ResponseError error = new ResponseError();
+ error.setMessage("Simulation not started");
+ throw new ResponseErrorException(error);
+ }
+
+ internalStepIn();
+ }
+ });
+ return future;
+ }
+
+ @Override
+ public CompletableFuture stepOut(StepOutArguments args) {
+ CompletableFuture future = CompletableFuture.runAsync(new Runnable() {
+ @Override
+ public void run() {
+ if (!simulationStarted) {
+ ResponseError error = new ResponseError();
+ error.setMessage("Simulation not started");
+ throw new ResponseErrorException(error);
+ }
+
+ internalStepOut();
+ }
+ });
+ return future;
+ }
+
+ @Override
+ public CompletableFuture setBreakpoints(SetBreakpointsArguments args) {
+ CompletableFuture future = CompletableFuture.supplyAsync(new Supplier() {
+ @Override
+ public SetBreakpointsResponse get() {
+ //TODO: Manage different sources for breakpoints
+ SetBreakpointsResponse response = new SetBreakpointsResponse();
+
+ internalClearBreakpoints();
+
+ List bps = new ArrayList<>();
+ for (SourceBreakpoint sbp : args.getBreakpoints()) {
+ Breakpoint bp = new Breakpoint();
+ bp.setVerified(true);
+ bp.setLine(sbp.getLine());
+ internalToggleBreakpoint(sbp.getLine().intValue());
+ bps.add(bp);
+ }
+ breakpoints = bps.toArray(new Breakpoint[0]);
+ response.setBreakpoints(breakpoints);
+
+ return response;
+ }
+ });
+ return future;
+ }
+
+ @Override
+ public CompletableFuture restart(RestartArguments args) {
+ CompletableFuture future = CompletableFuture.runAsync(new Runnable() {
+ @Override
+ public void run() {
+ if (launcherParameters == null) {
+ ResponseError error = new ResponseError();
+ error.setMessage("Simulation was not started before");
+ throw new ResponseErrorException(error);
+ }
+ if (simulationStarted) {
+ internalTerminate();
+ simulationStarted = false;
+ }
+ launchGemocEngine(launcherParameters);
+ simulationStarted = true;
+ for (Breakpoint bp : breakpoints) {
+ internalToggleBreakpoint(bp.getLine().intValue());
+ }
+ }
+ });
+ return future;
+ }
+
+ @Override
+ public CompletableFuture stackTrace(StackTraceArguments args) {
+ CompletableFuture future = CompletableFuture.supplyAsync(new Supplier() {
+ @Override
+ public StackTraceResponse get() {
+ if (!simulationStarted) {
+ ResponseError error = new ResponseError();
+ error.setMessage("Simulation not started");
+ throw new ResponseErrorException(error);
+ }
+ StackTraceResponse response = new StackTraceResponse();
+ response.setStackFrames(internalStackTrace());
+ return response;
+ }
+ });
+ return future;
+ }
+
+ @Override
+ public CompletableFuture variables(VariablesArguments args) {
+ CompletableFuture future = CompletableFuture.supplyAsync(new Supplier() {
+ @Override
+ public VariablesResponse get() {
+ if (!simulationStarted) {
+ ResponseError error = new ResponseError();
+ error.setMessage("Simulation not started");
+ throw new ResponseErrorException(error);
+ }
+ VariablesResponse response = new VariablesResponse();
+ response.setVariables(internalVariables());
+ return response;
+ }
+ });
+ return future;
+ }
+
+ @Override
+ public CompletableFuture source(SourceArguments args) {
+ CompletableFuture future = CompletableFuture.supplyAsync(new Supplier() {
+ @Override
+ public SourceResponse get() {
+ if (!simulationStarted) {
+ ResponseError error = new ResponseError();
+ error.setMessage("Simulation not started");
+ throw new ResponseErrorException(error);
+ }
+ SourceResponse response = new SourceResponse();
+ response.setContent(internalSource());
+ return response;
+ }
+ });
+ return future;
+ }
+
+ protected abstract void internalNext();
+
+ protected abstract void internalStepIn();
+
+ protected abstract void internalStepOut();
+
+ @Override
+ public CompletableFuture terminate(TerminateArguments args) {
+ CompletableFuture future = CompletableFuture.runAsync(new Runnable() {
+ @Override
+ public void run() {
+ if (!simulationStarted) {
+ ResponseError error = new ResponseError();
+ error.setMessage("Simulation not started");
+ throw new ResponseErrorException(error);
+ }
+ internalTerminate();
+ simulationStarted = false;
+ }
+ });
+ return future;
+ }
+
+ public void sendOutput(String output) {
+ OutputEventArguments args = new OutputEventArguments();
+ args.setCategory("stdout");
+ args.setOutput(output);
+ client.output(args);
+ }
+
+ protected abstract void internalClearBreakpoints();
+
+ protected abstract void internalToggleBreakpoint(int line);
+
+ protected abstract void internalTerminate();
+
+ protected abstract void internalContinue();
+
+ protected abstract Variable[] internalVariables();
+
+ protected abstract StackFrame[] internalStackTrace();
+
+ protected abstract String internalSource();
+
+ /**
+ * create a resource set
+ * by default it only allows to load xmi models
+ * @return
+ */
+ public ResourceSet createResourceSet() {
+ //ResourceSetFactory.createFactory().createResourceSet(modelURI);
+ return new ResourceSetImpl();
+ }
+
+ public void launchGemocEngine(MEPLauncherParameters parameters) {
+ launchGemocEngine(parameters.resourceModel, parameters.modelEntryPoint, parameters.methodEntryPoint,
+ parameters.initializationMethod, parameters.initializationMethodArgs);
+ }
+
+ /**
+ *
+ * @param resourceModel
+ * @param selectedLanguage
+ * @param modelEntryPoint
+ * @param methodEntryPoint
+ * @param initializationMethod
+ * @param initializationMethodArgs
+ */
+ abstract public void launchGemocEngine(Resource resourceModel, String modelEntryPoint,
+ String methodEntryPoint, String initializationMethod, String initializationMethodArgs);
+}
diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/launch/MEPLaunchParameterKey.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/launch/MEPLaunchParameterKey.java
new file mode 100644
index 000000000..74a308dfa
--- /dev/null
+++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/launch/MEPLaunchParameterKey.java
@@ -0,0 +1,15 @@
+package org.eclipse.gemoc.executionframework.mep.launch;
+
+public enum MEPLaunchParameterKey {
+ noDebug,
+ modelContent,
+ modelURI,
+ workspaceLocation, // location of the eclipse workspace on the server ie. for resolution of platform:/resource uri
+ language,
+ modelEntryPoint,
+ methodEntryPoint,
+ initializationMethod,
+ initializationArguments
+
+
+}
diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/launch/MEPLauncher.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/launch/MEPLauncher.java
new file mode 100644
index 000000000..76677faf8
--- /dev/null
+++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/launch/MEPLauncher.java
@@ -0,0 +1,227 @@
+package org.eclipse.gemoc.executionframework.mep.launch;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.util.Map;
+import java.util.concurrent.ExecutorService;
+import java.util.function.Consumer;
+import java.util.function.Function;
+
+import org.eclipse.gemoc.executionframework.mep.services.IModelExecutionProtocolClient;
+import org.eclipse.gemoc.executionframework.mep.services.IModelExecutionProtocolServer;
+import org.eclipse.lsp4j.jsonrpc.Endpoint;
+import org.eclipse.lsp4j.jsonrpc.Launcher;
+import org.eclipse.lsp4j.jsonrpc.MessageConsumer;
+import org.eclipse.lsp4j.jsonrpc.RemoteEndpoint;
+import org.eclipse.lsp4j.jsonrpc.debug.DebugRemoteEndpoint;
+import org.eclipse.lsp4j.jsonrpc.debug.json.DebugMessageJsonHandler;
+import org.eclipse.lsp4j.jsonrpc.json.JsonRpcMethod;
+import org.eclipse.lsp4j.jsonrpc.json.MessageJsonHandler;
+import org.eclipse.lsp4j.jsonrpc.json.StreamMessageConsumer;
+import org.eclipse.lsp4j.jsonrpc.services.ServiceEndpoints;
+import org.eclipse.lsp4j.jsonrpc.validation.ReflectiveMessageValidator;
+
+import com.google.gson.GsonBuilder;
+
+/**
+ * Specialized launcher for the MEP Server Protocol.
+ */
+public class MEPLauncher {
+
+ private MEPLauncher() {}
+
+
+
+ /**
+ * Create a new Launcher for a given local service object, a given remote
+ * interface and an input and output stream.
+ *
+ * @param localService
+ * - an object on which classes RPC methods are looked up
+ * @param remoteInterface
+ * - an interface on which RPC methods are looked up
+ * @param in
+ * - inputstream to listen for incoming messages
+ * @param out
+ * - outputstream to send outgoing messages
+ */
+ public static Launcher createLauncher(Object localService, Class remoteInterface, InputStream in,
+ OutputStream out) {
+ return new Builder()
+ .setLocalService(localService)
+ .setRemoteInterface(remoteInterface)
+ .setInput(in)
+ .setOutput(out)
+ .create();
+ }
+
+ /**
+ * Create a new Launcher for a given local service object, a given remote
+ * interface and an input and output stream, and set up message validation and
+ * tracing.
+ *
+ * @param localService
+ * - an object on which classes RPC methods are looked up
+ * @param remoteInterface
+ * - an interface on which RPC methods are looked up
+ * @param in
+ * - inputstream to listen for incoming messages
+ * @param out
+ * - outputstream to send outgoing messages
+ * @param validate
+ * - whether messages should be validated with the
+ * {@link ReflectiveMessageValidator}
+ * @param trace
+ * - a writer to which incoming and outgoing messages are traced, or
+ * {@code null} to disable tracing
+ */
+ public static Launcher createLauncher(Object localService, Class remoteInterface, InputStream in,
+ OutputStream out, boolean validate, PrintWriter trace) {
+ return new Builder()
+ .setLocalService(localService)
+ .setRemoteInterface(remoteInterface)
+ .setInput(in)
+ .setOutput(out)
+ .validateMessages(validate)
+ .traceMessages(trace)
+ .create();
+ }
+
+ /**
+ * Create a new Launcher for a given local service object, a given remote
+ * interface and an input and output stream. Threads are started with the given
+ * executor service. The wrapper function is applied to the incoming and
+ * outgoing message streams so additional message handling such as validation
+ * and tracing can be included.
+ *
+ * @param localService
+ * - an object on which classes RPC methods are looked up
+ * @param remoteInterface
+ * - an interface on which RPC methods are looked up
+ * @param in
+ * - inputstream to listen for incoming messages
+ * @param out
+ * - outputstream to send outgoing messages
+ * @param executorService
+ * - the executor service used to start threads
+ * @param wrapper
+ * - a function for plugging in additional message consumers
+ */
+ public static Launcher createLauncher(Object localService, Class remoteInterface, InputStream in,
+ OutputStream out, ExecutorService executorService, Function wrapper) {
+ return createIoLauncher(localService, remoteInterface, in, out, executorService, wrapper);
+ }
+
+ /**
+ * Create a new Launcher for a given local service object, a given remote
+ * interface and an input and output stream. Threads are started with the given
+ * executor service. The wrapper function is applied to the incoming and
+ * outgoing message streams so additional message handling such as validation
+ * and tracing can be included.
+ *
+ * @param localService
+ * - an object on which classes RPC methods are looked up
+ * @param remoteInterface
+ * - an interface on which RPC methods are looked up
+ * @param in
+ * - inputstream to listen for incoming messages
+ * @param out
+ * - outputstream to send outgoing messages
+ * @param executorService
+ * - the executor service used to start threads
+ * @param wrapper
+ * - a function for plugging in additional message consumers
+ */
+ public static Launcher createIoLauncher(Object localService, Class remoteInterface, InputStream in,
+ OutputStream out, ExecutorService executorService, Function wrapper) {
+ return new Builder()
+ .setLocalService(localService)
+ .setRemoteInterface(remoteInterface)
+ .setInput(in)
+ .setOutput(out)
+ .setExecutorService(executorService)
+ .wrapMessages(wrapper)
+ .create();
+ }
+
+ /**
+ * Create a new Launcher for a given local service object, a given remote
+ * interface and an input and output stream. Threads are started with the given
+ * executor service. The wrapper function is applied to the incoming and
+ * outgoing message streams so additional message handling such as validation
+ * and tracing can be included. The {@code configureGson} function can be used
+ * to register additional type adapters in the {@link GsonBuilder} in order to
+ * support protocol classes that cannot be handled by Gson's reflective
+ * capabilities.
+ *
+ * @param localService
+ * - an object on which classes RPC methods are looked up
+ * @param remoteInterface
+ * - an interface on which RPC methods are looked up
+ * @param in
+ * - inputstream to listen for incoming messages
+ * @param out
+ * - outputstream to send outgoing messages
+ * @param executorService
+ * - the executor service used to start threads
+ * @param wrapper
+ * - a function for plugging in additional message consumers
+ * @param configureGson
+ * - a function for Gson configuration
+ */
+ public static Launcher createIoLauncher(Object localService, Class remoteInterface, InputStream in,
+ OutputStream out, ExecutorService executorService, Function wrapper,
+ Consumer configureGson) {
+ return new Builder()
+ .setLocalService(localService)
+ .setRemoteInterface(remoteInterface)
+ .setInput(in)
+ .setOutput(out)
+ .setExecutorService(executorService)
+ .wrapMessages(wrapper)
+ .configureGson(configureGson)
+ .create();
+ }
+
+ /**
+ * Launcher builder for the debug protocol. Adapts the JSON-RPC message classes to the JSON format used
+ * by the debug protocol.
+ */
+ public static class Builder extends Launcher.Builder {
+
+ @Override
+ protected MessageJsonHandler createJsonHandler() {
+ Map supportedMethods = getSupportedMethods();
+ if (configureGson != null)
+ return new DebugMessageJsonHandler(supportedMethods, configureGson);
+ else
+ return new DebugMessageJsonHandler(supportedMethods);
+ }
+
+ @Override
+ protected RemoteEndpoint createRemoteEndpoint(MessageJsonHandler jsonHandler) {
+ try {
+ MessageConsumer outgoingMessageStream = new StreamMessageConsumer(output, jsonHandler);
+ outgoingMessageStream = wrapMessageConsumer(outgoingMessageStream);
+ Endpoint localEndpoint = ServiceEndpoints.toEndpoint(localServices);
+ RemoteEndpoint remoteEndpoint;
+
+ // !!!! nosuchfieldException that is trapped by quarkus
+ // check if this is a version issue ?
+ if (exceptionHandler == null)
+ remoteEndpoint = new MEPRemoteEndpoint(outgoingMessageStream, localEndpoint);
+ else
+ remoteEndpoint = new MEPRemoteEndpoint(outgoingMessageStream, localEndpoint, exceptionHandler);
+ jsonHandler.setMethodProvider(remoteEndpoint);
+ return remoteEndpoint;
+ } catch (Exception e) {
+ System.out.println(" issue in createRemoteEndpoint"+e);
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ }
+
+}
diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/launch/MEPLauncherParameters.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/launch/MEPLauncherParameters.java
new file mode 100644
index 000000000..4bffa82c3
--- /dev/null
+++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/launch/MEPLauncherParameters.java
@@ -0,0 +1,13 @@
+package org.eclipse.gemoc.executionframework.mep.launch;
+
+import org.eclipse.emf.ecore.resource.Resource;
+
+public class MEPLauncherParameters {
+
+ public Resource resourceModel = null;
+ public String modelEntryPoint = "";
+ public String methodEntryPoint = "";
+ public String initializationMethod = "";
+ public String initializationMethodArgs = "";
+
+}
diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/launch/MEPRemoteEndpoint.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/launch/MEPRemoteEndpoint.java
new file mode 100644
index 000000000..dd9d7a50f
--- /dev/null
+++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/launch/MEPRemoteEndpoint.java
@@ -0,0 +1,21 @@
+package org.eclipse.gemoc.executionframework.mep.launch;
+
+import java.util.function.Function;
+
+import org.eclipse.lsp4j.jsonrpc.Endpoint;
+import org.eclipse.lsp4j.jsonrpc.MessageConsumer;
+import org.eclipse.lsp4j.jsonrpc.debug.DebugRemoteEndpoint;
+import org.eclipse.lsp4j.jsonrpc.messages.ResponseError;
+
+public class MEPRemoteEndpoint extends DebugRemoteEndpoint {
+
+ public MEPRemoteEndpoint(MessageConsumer out, Endpoint localEndpoint) {
+ super(out, localEndpoint);
+ }
+
+ public MEPRemoteEndpoint(MessageConsumer out, Endpoint localEndpoint,
+ Function exceptionHandler) {
+ super(out, localEndpoint, exceptionHandler);
+ }
+
+}
diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/launch/ModelLoadingMethod.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/launch/ModelLoadingMethod.java
new file mode 100644
index 000000000..abe2f12d2
--- /dev/null
+++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/launch/ModelLoadingMethod.java
@@ -0,0 +1,6 @@
+package org.eclipse.gemoc.executionframework.mep.launch;
+
+public enum ModelLoadingMethod {
+ uri,
+ modelFileContent
+}
diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/services/IModelExecutionProtocolClient.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/services/IModelExecutionProtocolClient.java
new file mode 100644
index 000000000..e84d234b7
--- /dev/null
+++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/services/IModelExecutionProtocolClient.java
@@ -0,0 +1,12 @@
+package org.eclipse.gemoc.executionframework.mep.services;
+
+import org.eclipse.lsp4j.debug.services.IDebugProtocolClient;
+
+/**
+ * Declaration of client notifications for the
+ * Debug Adapter
+ * Protocol and its Model Execution Protocol extension
+ */
+public interface IModelExecutionProtocolClient extends IDebugProtocolClient {
+
+}
diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/services/IModelExecutionProtocolServer.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/services/IModelExecutionProtocolServer.java
new file mode 100644
index 000000000..ac3728cda
--- /dev/null
+++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/services/IModelExecutionProtocolServer.java
@@ -0,0 +1,12 @@
+package org.eclipse.gemoc.executionframework.mep.services;
+
+import org.eclipse.lsp4j.debug.services.IDebugProtocolServer;
+
+/**
+ * Declaration of server requests for the
+ * Debug Adapter
+ * Protocol extended with Model Execution Protocol
+ */
+public interface IModelExecutionProtocolServer extends IDebugProtocolServer {
+
+}
diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/services/ModelExecutionClientAware.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/services/ModelExecutionClientAware.java
new file mode 100644
index 000000000..64bcc6107
--- /dev/null
+++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/services/ModelExecutionClientAware.java
@@ -0,0 +1,6 @@
+package org.eclipse.gemoc.executionframework.mep.services;
+
+public interface ModelExecutionClientAware {
+
+ void connect(IModelExecutionProtocolClient client);
+}
diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/test/resources/.gitkeep b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/test/resources/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/framework/execution_framework/pomfirst/pom.xml b/framework/execution_framework/pomfirst/pom.xml
new file mode 100644
index 000000000..c14aae49e
--- /dev/null
+++ b/framework/execution_framework/pomfirst/pom.xml
@@ -0,0 +1,74 @@
+
+
+ 4.0.0
+
+ org.eclipse.gemoc.executionframework
+ org.eclipse.gemoc.executionframework.pomfirst
+ 1.0.0-SNAPSHOT
+
+
+ org.eclipse.gemoc
+ org.eclipse.gemoc.modeldebugging.pomfirst
+ 1.0.0-SNAPSHOT
+ ../../../pomfirst/pom.xml
+
+
+ pom
+
+
+ org.eclipse.gemoc.executionframework.mep
+
+
+
+
+
+
+ org.eclipse.xtend
+ xtend-maven-plugin
+ ${xtend.version}
+
+
+
+ compile
+ xtend-install-debug-info
+ testCompile
+ xtend-test-install-debug-info
+
+
+ xtend-gen
+
+
+
+
+
+
+
+
+ org.eclipse.jdt
+ org.eclipse.jdt.core
+ 3.13.102
+
+
+ org.eclipse.jdt
+ org.eclipse.jdt.compiler.apt
+ 1.3.110
+
+
+ org.eclipse.jdt
+ org.eclipse.jdt.compiler.tool
+ 1.2.101
+
+
+ org.eclipse.emf
+ org.eclipse.emf.codegen
+ 2.11.0
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/framework/framework_commons/plugins/org.eclipse.gemoc.executionframework.reflectivetrace.model/pomfirst/pom.xml b/framework/framework_commons/plugins/org.eclipse.gemoc.executionframework.reflectivetrace.model/pomfirst/pom.xml
new file mode 100644
index 000000000..a743145f7
--- /dev/null
+++ b/framework/framework_commons/plugins/org.eclipse.gemoc.executionframework.reflectivetrace.model/pomfirst/pom.xml
@@ -0,0 +1,71 @@
+
+
+ 4.0.0
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.executionframework.reflectivetrace.model
+ 4.0.0-SNAPSHOT
+
+ jar
+
+
+ scm:git:https://github.com/eclipse/gemoc-studio-modeldebugging.git
+ UTF-8
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ unpack
+ prepare-package
+
+ unpack
+
+
+
+
+ org.eclipse.gemoc.modeldebugging.framework.commons
+ ${project.artifactId}
+ ${project.version}
+ jar
+ true
+ ${project.build.directory}/classes
+ **
+
+
+
+
+
+
+
+
+
+
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.commons.eclipse
+ 3.0.0-SNAPSHOT
+
+
+
+
+ nexus-eclipse-gemoc
+ Nexus Eclipse GEMOC
+
+ true
+
+
+ true
+
+ https://repo.eclipse.org/content/groups/gemoc/
+
+
+
\ No newline at end of file
diff --git a/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/pomfirst/pom.xml b/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/pomfirst/pom.xml
new file mode 100644
index 000000000..3be986520
--- /dev/null
+++ b/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/pomfirst/pom.xml
@@ -0,0 +1,87 @@
+
+
+ 4.0.0
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.xdsmlframework.api
+ 4.0.0-SNAPSHOT
+
+ jar
+
+
+ scm:git:https://github.com/eclipse/gemoc-studio-modeldebugging.git
+ UTF-8
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ unpack
+ prepare-package
+
+ unpack
+
+
+
+
+ org.eclipse.gemoc.modeldebugging.framework.commons
+ ${project.artifactId}
+ ${project.version}
+ jar
+ true
+ ${project.build.directory}/classes
+ **
+
+
+
+
+
+
+
+
+
+
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.commons.eclipse
+ 3.0.0-SNAPSHOT
+
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.executionframework.reflectivetrace.model
+ 4.0.0-SNAPSHOT
+
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.trace.commons.model
+ 3.0.1-SNAPSHOT
+
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.dsl.model
+ 3.0.0-SNAPSHOT
+
+
+
+
+
+ nexus-eclipse-gemoc
+ Nexus Eclipse GEMOC
+
+ true
+
+
+ true
+
+ https://repo.eclipse.org/content/groups/gemoc/
+
+
+
\ No newline at end of file
diff --git a/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.commons/pomfirst/pom.xml b/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.commons/pomfirst/pom.xml
new file mode 100644
index 000000000..2f6156c3c
--- /dev/null
+++ b/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.commons/pomfirst/pom.xml
@@ -0,0 +1,71 @@
+
+
+ 4.0.0
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.xdsmlframework.commons
+ 4.0.0-SNAPSHOT
+
+ jar
+
+
+ scm:git:https://github.com/eclipse/gemoc-studio-modeldebugging.git
+ UTF-8
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ unpack
+ prepare-package
+
+ unpack
+
+
+
+
+ org.eclipse.gemoc.modeldebugging.framework.commons
+ ${project.artifactId}
+ ${project.version}
+ jar
+ true
+ ${project.build.directory}/classes
+ **
+
+
+
+
+
+
+
+
+
+
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.commons.eclipse
+ 3.0.0-SNAPSHOT
+
+
+
+
+ nexus-eclipse-gemoc
+ Nexus Eclipse GEMOC
+
+ true
+
+
+ true
+
+ https://repo.eclipse.org/content/groups/gemoc/
+
+
+
\ No newline at end of file
diff --git a/pomfirst/pom.xml b/pomfirst/pom.xml
new file mode 100644
index 000000000..7a75577d0
--- /dev/null
+++ b/pomfirst/pom.xml
@@ -0,0 +1,106 @@
+
+
+ 4.0.0
+
+ org.eclipse.gemoc
+ org.eclipse.gemoc.modeldebugging.pomfirst
+ 1.0.0-SNAPSHOT
+
+ pom
+
+
+ 1.5.1
+ 2.18.0
+ UTF-8
+ http://download.eclipse.org/releases/photon
+ https://download.eclipse.org/gemoc/updates/nightly
+ 1.8
+ 1.8
+ scm:git:https://github.com/eclipse/gemoc-studio-modeldebugging.git
+ UTF-8
+
+
+
+
+ ../framework/execution_framework/pomfirst
+ ../commons/plugins/org.eclipse.gemoc.commons.eclipse/pomfirst
+ ../commons/plugins/org.eclipse.gemoc.commons.eclipse.messagingsystem.api/pomfirst
+ ../commons/plugins/org.eclipse.gemoc.commons.eclipse.pde/pomfirst
+ ../commons/plugins/org.eclipse.gemoc.commons.utils/pomfirst
+ ../commons/plugins/org.eclipse.gemoc.dsl.model/pomfirst
+ ../framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.debugger/pomfirst
+ ../framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.engine/pomfirst
+ ../framework/framework_commons/plugins/org.eclipse.gemoc.executionframework.reflectivetrace.model/pomfirst
+ ../framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/pomfirst
+ ../framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.commons/pomfirst
+ ../simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug/pomfirst
+ ../simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug.edit/pomfirst
+ ../simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug.ide/pomfirst
+ ../trace/commons/plugins/org.eclipse.gemoc.trace.commons/pomfirst
+ ../trace/commons/plugins/org.eclipse.gemoc.trace.commons.model/pomfirst
+ ../trace/commons/plugins/org.eclipse.gemoc.trace.gemoc.api/pomfirst
+
+
+
+
+
+
+ org.eclipse.xtend
+ xtend-maven-plugin
+ ${xtend.version}
+
+
+
+ compile
+ xtend-install-debug-info
+ testCompile
+ xtend-test-install-debug-info
+
+
+ xtend-gen
+
+
+
+
+
+
+
+
+ org.eclipse.jdt
+ org.eclipse.jdt.core
+ 3.13.102
+
+
+ org.eclipse.jdt
+ org.eclipse.jdt.compiler.apt
+ 1.3.110
+
+
+ org.eclipse.jdt
+ org.eclipse.jdt.compiler.tool
+ 1.2.101
+
+
+ org.eclipse.emf
+ org.eclipse.emf.codegen
+ 2.11.0
+
+
+
+
+
+
+
+
+
+ nexus-eclipse-gemoc
+ Nexus Eclipse GEMOC
+ true
+ true
+ https://repo.eclipse.org/content/groups/gemoc/
+
+
+
\ No newline at end of file
diff --git a/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug.edit/pomfirst/pom.xml b/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug.edit/pomfirst/pom.xml
new file mode 100644
index 000000000..b6e72ee28
--- /dev/null
+++ b/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug.edit/pomfirst/pom.xml
@@ -0,0 +1,76 @@
+
+
+ 4.0.0
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.dsl.debug.edit
+ 3.0.1-SNAPSHOT
+
+ jar
+
+
+ scm:git:https://github.com/eclipse/gemoc-studio-modeldebugging.git
+ UTF-8
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ unpack
+ prepare-package
+
+ unpack
+
+
+
+
+ DSLDebugger
+ ${project.artifactId}
+ ${project.version}
+ jar
+ true
+ ${project.build.directory}/classes
+ **
+
+
+
+
+
+
+
+
+
+
+
+ org.eclipse.platform
+ org.eclipse.core.runtime
+ [3.6.0,4.0.0)
+
+
+ org.eclipse.emf
+ org.eclipse.emf.common
+ [2.16.0,3.0.0)
+
+
+
+
+ nexus-eclipse-gemoc
+ Nexus Eclipse GEMOC
+
+ true
+
+
+ true
+
+ https://repo.eclipse.org/content/groups/gemoc/
+
+
+
\ No newline at end of file
diff --git a/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug.ide/pomfirst/pom.xml b/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug.ide/pomfirst/pom.xml
new file mode 100644
index 000000000..1b37737bd
--- /dev/null
+++ b/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug.ide/pomfirst/pom.xml
@@ -0,0 +1,76 @@
+
+
+ 4.0.0
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.dsl.debug.ide
+ 3.0.1-SNAPSHOT
+
+ jar
+
+
+ scm:git:https://github.com/eclipse/gemoc-studio-modeldebugging.git
+ UTF-8
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ unpack
+ prepare-package
+
+ unpack
+
+
+
+
+ DSLDebugger
+ ${project.artifactId}
+ ${project.version}
+ jar
+ true
+ ${project.build.directory}/classes
+ **
+
+
+
+
+
+
+
+
+
+
+
+ org.eclipse.platform
+ org.eclipse.core.runtime
+ [3.6.0,4.0.0)
+
+
+ org.eclipse.emf
+ org.eclipse.emf.common
+ [2.16.0,3.0.0)
+
+
+
+
+ nexus-eclipse-gemoc
+ Nexus Eclipse GEMOC
+
+ true
+
+
+ true
+
+ https://repo.eclipse.org/content/groups/gemoc/
+
+
+
\ No newline at end of file
diff --git a/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug/pomfirst/pom.xml b/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug/pomfirst/pom.xml
new file mode 100644
index 000000000..81a595f91
--- /dev/null
+++ b/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug/pomfirst/pom.xml
@@ -0,0 +1,76 @@
+
+
+ 4.0.0
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.dsl.debug
+ 3.0.1-SNAPSHOT
+
+ jar
+
+
+ scm:git:https://github.com/eclipse/gemoc-studio-modeldebugging.git
+ UTF-8
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ unpack
+ prepare-package
+
+ unpack
+
+
+
+
+ DSLDebugger
+ ${project.artifactId}
+ ${project.version}
+ jar
+ true
+ ${project.build.directory}/classes
+ **
+
+
+
+
+
+
+
+
+
+
+
+ org.eclipse.platform
+ org.eclipse.core.runtime
+ [3.6.0,4.0.0)
+
+
+ org.eclipse.emf
+ org.eclipse.emf.common
+ [2.16.0,3.0.0)
+
+
+
+
+ nexus-eclipse-gemoc
+ Nexus Eclipse GEMOC
+
+ true
+
+
+ true
+
+ https://repo.eclipse.org/content/groups/gemoc/
+
+
+
\ No newline at end of file
diff --git a/trace/commons/plugins/org.eclipse.gemoc.trace.commons.model/pomfirst/pom.xml b/trace/commons/plugins/org.eclipse.gemoc.trace.commons.model/pomfirst/pom.xml
new file mode 100644
index 000000000..25aec2b8a
--- /dev/null
+++ b/trace/commons/plugins/org.eclipse.gemoc.trace.commons.model/pomfirst/pom.xml
@@ -0,0 +1,66 @@
+
+
+ 4.0.0
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.trace.commons.model
+ 3.0.1-SNAPSHOT
+
+ jar
+
+
+ scm:git:https://github.com/eclipse/gemoc-studio-modeldebugging.git
+ UTF-8
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ unpack
+ prepare-package
+
+ unpack
+
+
+
+
+ org.eclipse.gemoc.trace.commons
+ ${project.artifactId}
+ ${project.version}
+ jar
+ true
+ ${project.build.directory}/classes
+ **
+
+
+
+
+
+
+
+
+
+
+
+
+
+ nexus-eclipse-gemoc
+ Nexus Eclipse GEMOC
+
+ true
+
+
+ true
+
+ https://repo.eclipse.org/content/groups/gemoc/
+
+
+
\ No newline at end of file
diff --git a/trace/commons/plugins/org.eclipse.gemoc.trace.commons/pomfirst/pom.xml b/trace/commons/plugins/org.eclipse.gemoc.trace.commons/pomfirst/pom.xml
new file mode 100644
index 000000000..d79c8007c
--- /dev/null
+++ b/trace/commons/plugins/org.eclipse.gemoc.trace.commons/pomfirst/pom.xml
@@ -0,0 +1,66 @@
+
+
+ 4.0.0
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.trace.commons
+ 3.0.1-SNAPSHOT
+
+ jar
+
+
+ scm:git:https://github.com/eclipse/gemoc-studio-modeldebugging.git
+ UTF-8
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ unpack
+ prepare-package
+
+ unpack
+
+
+
+
+ org.eclipse.gemoc.trace.commons
+ ${project.artifactId}
+ ${project.version}
+ jar
+ true
+ ${project.build.directory}/classes
+ **
+
+
+
+
+
+
+
+
+
+
+
+
+
+ nexus-eclipse-gemoc
+ Nexus Eclipse GEMOC
+
+ true
+
+
+ true
+
+ https://repo.eclipse.org/content/groups/gemoc/
+
+
+
\ No newline at end of file
diff --git a/trace/commons/plugins/org.eclipse.gemoc.trace.gemoc.api/pomfirst/pom.xml b/trace/commons/plugins/org.eclipse.gemoc.trace.gemoc.api/pomfirst/pom.xml
new file mode 100644
index 000000000..6607947ca
--- /dev/null
+++ b/trace/commons/plugins/org.eclipse.gemoc.trace.gemoc.api/pomfirst/pom.xml
@@ -0,0 +1,66 @@
+
+
+ 4.0.0
+
+ org.eclipse.gemoc.pomfirst
+ org.eclipse.gemoc.trace.gemoc.api
+ 3.0.1-SNAPSHOT
+
+ jar
+
+
+ scm:git:https://github.com/eclipse/gemoc-studio-modeldebugging.git
+ UTF-8
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ unpack
+ prepare-package
+
+ unpack
+
+
+
+
+ org.eclipse.gemoc.trace.commons
+ ${project.artifactId}
+ ${project.version}
+ jar
+ true
+ ${project.build.directory}/classes
+ **
+
+
+
+
+
+
+
+
+
+
+
+
+
+ nexus-eclipse-gemoc
+ Nexus Eclipse GEMOC
+
+ true
+
+
+ true
+
+ https://repo.eclipse.org/content/groups/gemoc/
+
+
+
\ No newline at end of file