=UTF8
diff --git a/framework/execution_framework/releng/org.eclipse.gemoc.executionframework.feature/.settings/org.eclipse.xtend.core.Xtend.prefs b/framework/execution_framework/releng/org.eclipse.gemoc.executionframework.feature/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 000000000..9682a4c0a
--- /dev/null
+++ b/framework/execution_framework/releng/org.eclipse.gemoc.executionframework.feature/.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/releng/org.eclipse.gemoc.executionframework.feature/build.properties b/framework/execution_framework/releng/org.eclipse.gemoc.executionframework.feature/build.properties
new file mode 100644
index 000000000..f6d2f3ebf
--- /dev/null
+++ b/framework/execution_framework/releng/org.eclipse.gemoc.executionframework.feature/build.properties
@@ -0,0 +1,14 @@
+###############################################################################
+# Copyright (c) 2017 Inria and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Inria - initial API and implementation
+###############################################################################
+bin.includes = feature.xml,\
+ feature.properties,\
+ license.html,\
+ gemocstudio32.png
diff --git a/framework/execution_framework/releng/org.eclipse.gemoc.executionframework.feature/feature.properties b/framework/execution_framework/releng/org.eclipse.gemoc.executionframework.feature/feature.properties
new file mode 100644
index 000000000..5f0414f11
--- /dev/null
+++ b/framework/execution_framework/releng/org.eclipse.gemoc.executionframework.feature/feature.properties
@@ -0,0 +1,151 @@
+###############################################################################
+# Copyright (c) 2012, 2017 Inria and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Inria - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+# NLS_MESSAGEFORMAT_VAR
+
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse Modeling Project
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 9, 2014\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+ - Content may be structured and packaged into modules to facilitate delivering,\n\
+ extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+ plug-in fragments ("Fragments"), and features ("Features").\n\
+ - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+ in a directory named "plugins".\n\
+ - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+ Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+ Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+ numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+ - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+ named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+ - The top-level (root) directory\n\
+ - Plug-in and Fragment directories\n\
+ - Inside Plug-ins and Fragments packaged as JARs\n\
+ - Sub-directories of the directory named "src" of certain Plug-ins\n\
+ - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+ - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+ - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+ - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+ - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+ - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+ 1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+ the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+ extending or updating the functionality of an Eclipse-based product.\n\
+ 2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+ Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+ 3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+ govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+ Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+ with the Specification. Such Installable Software Agreement must inform the user of the\n\
+ terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+ the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+ indication of agreement by the user, the provisioning Technology will complete installation\n\
+ of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/framework/execution_framework/releng/org.eclipse.gemoc.executionframework.feature/feature.xml b/framework/execution_framework/releng/org.eclipse.gemoc.executionframework.feature/feature.xml
new file mode 100644
index 000000000..d6526c306
--- /dev/null
+++ b/framework/execution_framework/releng/org.eclipse.gemoc.executionframework.feature/feature.xml
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+ List of plugins that are part of the execution framework
+
+
+
+ Copyright (c) 2012, 2017 Inria and others
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+
+
+
+ %license
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/framework/execution_framework/releng/org.eclipse.gemoc.executionframework.feature/gemocstudio32.png b/framework/execution_framework/releng/org.eclipse.gemoc.executionframework.feature/gemocstudio32.png
new file mode 100644
index 000000000..fb1e5b3c7
Binary files /dev/null and b/framework/execution_framework/releng/org.eclipse.gemoc.executionframework.feature/gemocstudio32.png differ
diff --git a/framework/execution_framework/releng/org.eclipse.gemoc.executionframework.feature/license.html b/framework/execution_framework/releng/org.eclipse.gemoc.executionframework.feature/license.html
new file mode 100644
index 000000000..c3d34c3c2
--- /dev/null
+++ b/framework/execution_framework/releng/org.eclipse.gemoc.executionframework.feature/license.html
@@ -0,0 +1,107 @@
+
+
+
+
+
+Eclipse Foundation Software User Agreement
+
+
+
+Eclipse Foundation Software User Agreement
+April 9, 2014
+
+Usage Of Content
+
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+ (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+ CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+ OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+ NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+ CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.
+
+Applicable Licenses
+
+Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
+ ("EPL"). A copy of the EPL is provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.
+ For purposes of the EPL, "Program" will mean the Content.
+
+Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+ repository ("Repository") in software modules ("Modules") and made available as downloadable archives ("Downloads").
+
+
+ - Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and features ("Features").
+ - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".
+ - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Each Feature may be packaged as a sub-directory in a directory named "features". Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of the Plug-ins
+ and/or Fragments associated with that Feature.
+ - Features may also include other Features ("Included Features"). Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of Included Features.
+
+
+The terms and conditions governing Plug-ins and Fragments should be contained in files named "about.html" ("Abouts"). The terms and conditions governing Features and
+Included Features should be contained in files named "license.html" ("Feature Licenses"). Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:
+
+
+ - The top-level (root) directory
+ - Plug-in and Fragment directories
+ - Inside Plug-ins and Fragments packaged as JARs
+ - Sub-directories of the directory named "src" of certain Plug-ins
+ - Feature directories
+
+
+Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license ("Feature Update License") during the
+installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them. Feature Update Licenses may be found in the "license" property of files named "feature.properties" found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.
+
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
+
+
+
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.
+
+
+Use of Provisioning Technology
+
+The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+ Update Manager ("Provisioning Technology") for the purpose of allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). This capability is provided with the intent of allowing such users to
+ install, extend and update Eclipse-based products. Information about packaging Installable Software is available at http://eclipse.org/equinox/p2/repository_packaging.html
+ ("Specification").
+
+You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+ applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+ in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+ Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:
+
+
+ - A series of actions may occur ("Provisioning Process") in which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") with the intent of installing, extending or updating the functionality of an Eclipse-based
+ product.
+ - During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+ accessed and copied to the Target Machine.
+ - Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+ Software ("Installable Software Agreement") and such Installable Software Agreement shall be accessed from the Target
+ Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+ the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+ indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.
+
+
+Cryptography
+
+Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+ another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+ possession, or use, and re-export of encryption software, to see if this is permitted.
+
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.
+
+
diff --git a/framework/execution_framework/releng/org.eclipse.gemoc.executionframework.feature/pom.xml b/framework/execution_framework/releng/org.eclipse.gemoc.executionframework.feature/pom.xml
new file mode 100644
index 000000000..85905e373
--- /dev/null
+++ b/framework/execution_framework/releng/org.eclipse.gemoc.executionframework.feature/pom.xml
@@ -0,0 +1,26 @@
+
+
+
+
+ 4.0.0
+
+
+ ../../pom.xml
+ org.gemoc.modeldebugging.executionframework
+ org.gemoc.modeldebugging.executionframework.root
+ 2.3.0-SNAPSHOT
+
+
+ org.eclipse.gemoc.executionframework.feature
+ eclipse-feature
+
+
\ No newline at end of file
diff --git a/framework/execution_framework/releng/org.gemoc.modeldebugging.executionframework.feature/build.properties b/framework/execution_framework/releng/org.gemoc.modeldebugging.executionframework.feature/build.properties
deleted file mode 100644
index 25f8b7f02..000000000
--- a/framework/execution_framework/releng/org.gemoc.modeldebugging.executionframework.feature/build.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-bin.includes = feature.xml,\
- .
diff --git a/framework/execution_framework/releng/org.gemoc.modeldebugging.executionframework.feature/feature.xml b/framework/execution_framework/releng/org.gemoc.modeldebugging.executionframework.feature/feature.xml
deleted file mode 100644
index 98f8ad4f8..000000000
--- a/framework/execution_framework/releng/org.gemoc.modeldebugging.executionframework.feature/feature.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
- List of plugins that are part of the execution framework
-
-
-
- [Enter Copyright Description here.]
-
-
-
- [Enter License Description here.]
-
-
-
-
-
-
-
-
-
-
-
diff --git a/framework/execution_framework/releng/org.gemoc.modeldebugging.executionframework.feature/pom.xml b/framework/execution_framework/releng/org.gemoc.modeldebugging.executionframework.feature/pom.xml
deleted file mode 100644
index 2cf14a6b9..000000000
--- a/framework/execution_framework/releng/org.gemoc.modeldebugging.executionframework.feature/pom.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
- 4.0.0
-
-
- ../../pom.xml
- org.gemoc.modeldebugging.executionframework
- org.gemoc.modeldebugging.executionframework.root
- 0.1.0-SNAPSHOT
-
-
- org.gemoc.modeldebugging.executionframework.feature
- eclipse-feature
-
-
\ No newline at end of file
diff --git a/framework/execution_framework/releng/org.gemoc.modeldebugging.executionframework.repository/category.xml b/framework/execution_framework/releng/org.gemoc.modeldebugging.executionframework.repository/category.xml
deleted file mode 100644
index e455e0446..000000000
--- a/framework/execution_framework/releng/org.gemoc.modeldebugging.executionframework.repository/category.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/framework/execution_framework/releng/org.gemoc.modeldebugging.executionframework.repository/pom.xml b/framework/execution_framework/releng/org.gemoc.modeldebugging.executionframework.repository/pom.xml
deleted file mode 100644
index d16634b9e..000000000
--- a/framework/execution_framework/releng/org.gemoc.modeldebugging.executionframework.repository/pom.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
- 4.0.0
-
-
- ../../pom.xml
- org.gemoc.modeldebugging.executionframework
- 0.1.0-SNAPSHOT
- org.gemoc.modeldebugging.executionframework.root
-
-
- org.gemoc.modeldebugging.executionframework.repository
- eclipse-repository
-
-
\ No newline at end of file
diff --git a/trace/generator/plugins/fr.inria.diverse.trace.gemoc.generator.k3/.classpath b/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/.classpath
similarity index 100%
rename from trace/generator/plugins/fr.inria.diverse.trace.gemoc.generator.k3/.classpath
rename to framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/.classpath
diff --git a/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/.project b/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/.project
new file mode 100644
index 000000000..8a5418d67
--- /dev/null
+++ b/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/.project
@@ -0,0 +1,34 @@
+
+
+ org.eclipse.gemoc.executionframework.test.lib
+
+
+
+
+
+ org.eclipse.xtext.ui.shared.xtextBuilder
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+
+ org.eclipse.pde.PluginNature
+ org.eclipse.jdt.core.javanature
+ org.eclipse.xtext.ui.shared.xtextNature
+
+
diff --git a/trace/commons/plugins/fr.inria.diverse.trace.api/.settings/org.eclipse.jdt.core.prefs b/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/.settings/org.eclipse.jdt.core.prefs
similarity index 100%
rename from trace/commons/plugins/fr.inria.diverse.trace.api/.settings/org.eclipse.jdt.core.prefs
rename to framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/.settings/org.eclipse.jdt.core.prefs
diff --git a/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/META-INF/MANIFEST.MF b/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..354939278
--- /dev/null
+++ b/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/META-INF/MANIFEST.MF
@@ -0,0 +1,22 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Test
+Bundle-SymbolicName: org.eclipse.gemoc.executionframework.test.lib
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: com.google.guava,
+ org.eclipse.xtext.xbase.lib,
+ org.eclipse.xtend.lib,
+ org.eclipse.xtend.lib.macro,
+ org.junit;bundle-version="4.12.0",
+ org.eclipse.core.runtime;bundle-version="3.12.0",
+ org.eclipse.core.resources;bundle-version="3.11.1",
+ org.eclipse.gemoc.xdsmlframework.api;bundle-version="2.3.0",
+ org.eclipse.emf.ecore;bundle-version="2.12.0",
+ org.eclipse.swt;bundle-version="3.105.3",
+ org.eclipse.ui;bundle-version="3.108.1",
+ org.eclipse.gemoc.trace.gemoc;bundle-version="2.3.0",
+ org.eclipse.gemoc.executionframework.engine;bundle-version="2.3.0"
+Export-Package: org.eclipse.gemoc.executionframework.test.lib,
+ org.eclipse.gemoc.executionframework.test.lib.impl
+
diff --git a/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/build.properties b/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/build.properties
new file mode 100644
index 000000000..2bea6db63
--- /dev/null
+++ b/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/build.properties
@@ -0,0 +1,15 @@
+###############################################################################
+# Copyright (c) 2017 Inria and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Inria - initial API and implementation
+###############################################################################
+source.. = src/,\
+ xtend-gen/
+output.. = bin/
+bin.includes = META-INF/,\
+ .
diff --git a/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/src/org/eclipse/gemoc/executionframework/test/lib/IEngineWrapper.xtend b/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/src/org/eclipse/gemoc/executionframework/test/lib/IEngineWrapper.xtend
new file mode 100644
index 000000000..8387c02fb
--- /dev/null
+++ b/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/src/org/eclipse/gemoc/executionframework/test/lib/IEngineWrapper.xtend
@@ -0,0 +1,15 @@
+package org.eclipse.gemoc.executionframework.test.lib
+
+import java.util.Set
+import org.eclipse.emf.common.util.URI
+import org.eclipse.gemoc.xdsmlframework.api.core.IExecutionEngine
+
+interface IEngineWrapper {
+
+ def void prepare(ILanguageWrapper wrapper,IExecutableModel model, Set addons, URI uri)
+
+ def void run()
+
+ def IExecutionEngine getRealEngine()
+
+}
\ No newline at end of file
diff --git a/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/src/org/eclipse/gemoc/executionframework/test/lib/IExecutableModel.xtend b/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/src/org/eclipse/gemoc/executionframework/test/lib/IExecutableModel.xtend
new file mode 100644
index 000000000..54ac4e0f2
--- /dev/null
+++ b/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/src/org/eclipse/gemoc/executionframework/test/lib/IExecutableModel.xtend
@@ -0,0 +1,12 @@
+package org.eclipse.gemoc.executionframework.test.lib
+
+interface IExecutableModel {
+
+ def String getFileName()
+ def String getPluginName()
+ def String getFolderPath()
+ def String getMelangeQuery()
+ def String getInitArgument()
+ def int getShouldStopAfter()
+
+}
diff --git a/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/src/org/eclipse/gemoc/executionframework/test/lib/ILanguageWrapper.xtend b/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/src/org/eclipse/gemoc/executionframework/test/lib/ILanguageWrapper.xtend
new file mode 100644
index 000000000..9ae71e63f
--- /dev/null
+++ b/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/src/org/eclipse/gemoc/executionframework/test/lib/ILanguageWrapper.xtend
@@ -0,0 +1,11 @@
+package org.eclipse.gemoc.executionframework.test.lib
+
+interface ILanguageWrapper {
+
+ def String getEntryPoint()
+
+ def String getLanguageName()
+
+ def String getInitializationMethod()
+
+}
\ No newline at end of file
diff --git a/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/src/org/eclipse/gemoc/executionframework/test/lib/impl/TestEngineAddon.xtend b/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/src/org/eclipse/gemoc/executionframework/test/lib/impl/TestEngineAddon.xtend
new file mode 100644
index 000000000..a8689aa89
--- /dev/null
+++ b/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/src/org/eclipse/gemoc/executionframework/test/lib/impl/TestEngineAddon.xtend
@@ -0,0 +1,77 @@
+package org.eclipse.gemoc.executionframework.test.lib.impl
+
+import org.eclipse.gemoc.xdsmlframework.api.engine_addon.IEngineAddon
+import org.eclipse.gemoc.xdsmlframework.api.core.IExecutionEngine
+import org.eclipse.gemoc.trace.commons.model.trace.Step
+import java.util.Collection
+import org.eclipse.gemoc.xdsmlframework.api.core.EngineStatus.RunStatus
+import java.util.List
+import org.eclipse.xtend.lib.annotations.Accessors
+
+class TestEngineAddon implements IEngineAddon {
+
+ @Accessors(PRIVATE_SETTER,PUBLIC_GETTER)
+ var int amountOfStepsExecuted = 0
+ @Accessors(PRIVATE_SETTER,PUBLIC_GETTER)
+ var boolean engineAboutToStart = false
+ @Accessors(PRIVATE_SETTER,PUBLIC_GETTER)
+ var boolean engineAboutToStop = false
+ @Accessors(PRIVATE_SETTER,PUBLIC_GETTER)
+ var boolean engineStarted = false
+ @Accessors(PRIVATE_SETTER,PUBLIC_GETTER)
+ var boolean engineStopped = false
+ @Accessors(PRIVATE_SETTER,PUBLIC_GETTER)
+ var boolean engineAboutToDispose = false
+
+ val int shouldStopAfter
+
+ new(int shouldStopAfter) {
+ this.shouldStopAfter = shouldStopAfter
+ }
+
+ override aboutToExecuteStep(IExecutionEngine engine, Step> stepToExecute) {
+ }
+
+ override aboutToSelectStep(IExecutionEngine engine, Collection> steps) {
+ }
+
+ override engineAboutToDispose(IExecutionEngine engine) {
+ engineAboutToDispose = true
+ }
+
+ override engineAboutToStart(IExecutionEngine engine) {
+ engineAboutToStart = true
+ }
+
+ override engineAboutToStop(IExecutionEngine engine) {
+ engineAboutToStop = true
+ }
+
+ override engineStarted(IExecutionEngine executionEngine) {
+ engineStarted = true
+ }
+
+ override engineStatusChanged(IExecutionEngine engine, RunStatus newStatus) {
+ }
+
+ override engineStopped(IExecutionEngine engine) {
+ engineStopped = true
+ }
+
+ override proposedStepsChanged(IExecutionEngine engine, Collection> steps) {
+ }
+
+ override stepExecuted(IExecutionEngine engine, Step> stepExecuted) {
+ amountOfStepsExecuted++
+ if (shouldStopAfter != -1 && shouldStopAfter < amountOfStepsExecuted) {
+ engine.stop
+ }
+ }
+
+ override stepSelected(IExecutionEngine engine, Step> selectedStep) {
+ }
+
+ override validate(List otherAddons) {
+ }
+
+}
diff --git a/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/src/org/eclipse/gemoc/executionframework/test/lib/impl/TestHelper.xtend b/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/src/org/eclipse/gemoc/executionframework/test/lib/impl/TestHelper.xtend
new file mode 100644
index 000000000..aa1ab6d0e
--- /dev/null
+++ b/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/src/org/eclipse/gemoc/executionframework/test/lib/impl/TestHelper.xtend
@@ -0,0 +1,94 @@
+package org.eclipse.gemoc.executionframework.test.lib.impl
+
+import java.io.File
+import java.io.PrintWriter
+import java.io.StringWriter
+import java.util.Random
+import java.util.Set
+import org.eclipse.core.resources.IFile
+import org.eclipse.core.resources.ResourcesPlugin
+import org.eclipse.core.runtime.IProgressMonitor
+import org.eclipse.core.runtime.Status
+import org.eclipse.core.runtime.jobs.Job
+import org.eclipse.emf.common.util.URI
+import org.eclipse.gemoc.executionframework.test.lib.IEngineWrapper
+import org.eclipse.gemoc.executionframework.test.lib.IExecutableModel
+import org.eclipse.gemoc.executionframework.test.lib.ILanguageWrapper
+
+import static org.junit.Assert.*
+
+class TestHelper {
+
+ private static def testInternal(IProgressMonitor m, IEngineWrapper engine, ILanguageWrapper language,
+ Set addons, IExecutableModel model) {
+
+ // Create eclipse project in test WS
+ val eclipseProject = ResourcesPlugin::getWorkspace().getRoot().getProject(Math::abs(new Random().nextInt).toString);
+ if (eclipseProject.exists)
+ eclipseProject.delete(true, m)
+ eclipseProject.create(m)
+ eclipseProject.open(m)
+
+ // Copy model to execute in WS
+ val IFile file = eclipseProject.getFile(model.getFileName());
+ val String filePath = new File(new File(model.getFolderPath()), model.getFileName()).absolutePath
+ TestUtil::copyFileFromPlugin(model.pluginName, filePath, file, m)
+
+ // Create model URI
+ val modelURI = URI::createPlatformResourceURI(file.fullPath.toString, true)
+
+ // Prepare engine
+ val TestEngineAddon testAddon = new TestEngineAddon(model.shouldStopAfter)
+ engine.prepare(language, model, addons, modelURI)
+ engine.realEngine.executionContext.executionPlatform.addEngineAddon(testAddon)
+
+ // Execute engine
+ engine.run
+
+ // Dispose engine
+ engine.realEngine.dispose
+
+ // Generic oracle using test addon
+ assertTrue("No steps were executed", testAddon.amountOfStepsExecuted > 0)
+ assertTrue("engineAboutToStart never performed", testAddon.engineAboutToStart)
+ assertTrue("engineStarted never performed", testAddon.engineStarted)
+ assertTrue("engineAboutToStop never performed", testAddon.engineAboutToStop)
+ assertTrue("engineStopped never performed", testAddon.engineStopped)
+ assertTrue("engineAboutToDispose never performed", testAddon.engineAboutToDispose)
+
+ // Done
+ return Status.OK_STATUS
+ }
+
+ def static void testWithAddons(IEngineWrapper engine, ILanguageWrapper language, Set addons,
+ IExecutableModel model) {
+ val job = new Job("single test case") {
+
+ override protected run(IProgressMonitor m) {
+ try {
+ return testInternal(m, engine, language, addons, model)
+ } catch (Throwable t) {
+ t.printStackTrace
+ val StringWriter sw = new StringWriter();
+ t.printStackTrace(new PrintWriter(sw));
+ val errorStatus = new Status(Status.ERROR, "trace test", "An error occured in the test case", t)
+ return errorStatus
+ }
+ }
+ }
+ job.schedule
+ TestUtil::waitForJobs
+ if (job.result != null && job.result.exception != null) {
+ throw job.result.exception
+ }
+ }
+
+ def static void testWithGenericTrace(IEngineWrapper engine, ILanguageWrapper language, IExecutableModel model) {
+ testWithAddons(engine, language, #{"Generic MultiDimensional Trace"}, model)
+ }
+
+ def static void testWithoutExtraAddons(IEngineWrapper engine, ILanguageWrapper language, IExecutableModel model) {
+ testWithAddons(engine, language, #{}, model)
+ }
+
+}
diff --git a/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/src/org/eclipse/gemoc/executionframework/test/lib/impl/TestModel.xtend b/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/src/org/eclipse/gemoc/executionframework/test/lib/impl/TestModel.xtend
new file mode 100644
index 000000000..f1cfddf33
--- /dev/null
+++ b/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/src/org/eclipse/gemoc/executionframework/test/lib/impl/TestModel.xtend
@@ -0,0 +1,40 @@
+package org.eclipse.gemoc.executionframework.test.lib.impl
+
+import org.eclipse.xtend.lib.annotations.Accessors
+import org.eclipse.gemoc.executionframework.test.lib.IExecutableModel
+
+class TestModel implements IExecutableModel {
+
+ @Accessors(PRIVATE_SETTER,PUBLIC_GETTER)
+ val String fileName
+ @Accessors(PRIVATE_SETTER,PUBLIC_GETTER)
+ val String pluginName
+ @Accessors(PRIVATE_SETTER,PUBLIC_GETTER)
+ val String folderPath
+ @Accessors(PRIVATE_SETTER,PUBLIC_GETTER)
+ val String initArgument
+ @Accessors(PRIVATE_SETTER,PUBLIC_GETTER)
+ val String melangeQuery
+ @Accessors(PRIVATE_SETTER,PUBLIC_GETTER)
+ val int shouldStopAfter
+
+ new(String pluginName, String folderPath, String fileName, String initArgument, String melangeQuery,
+ int shouldStopAfter) {
+ this.pluginName = pluginName
+ this.folderPath = folderPath
+ this.fileName = fileName
+ this.initArgument = initArgument
+ this.melangeQuery = melangeQuery
+ this.shouldStopAfter = shouldStopAfter
+ }
+
+ new(String pluginName, String folderPath, String fileName) {
+ this(pluginName, folderPath, fileName, "", "", -1)
+ }
+
+ new(String pluginName, String folderPath, String fileName, String initArgument, String melangeQuery) {
+ this(pluginName, folderPath, fileName, initArgument, melangeQuery, -1)
+ }
+
+
+}
diff --git a/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/src/org/eclipse/gemoc/executionframework/test/lib/impl/TestRunConfiguration.xtend b/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/src/org/eclipse/gemoc/executionframework/test/lib/impl/TestRunConfiguration.xtend
new file mode 100644
index 000000000..ee2a26002
--- /dev/null
+++ b/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/src/org/eclipse/gemoc/executionframework/test/lib/impl/TestRunConfiguration.xtend
@@ -0,0 +1,99 @@
+package org.eclipse.gemoc.executionframework.test.lib.impl
+
+import java.util.ArrayList
+import java.util.List
+import java.util.Set
+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.test.lib.ILanguageWrapper
+import org.eclipse.gemoc.xdsmlframework.api.core.IRunConfiguration
+import org.eclipse.gemoc.xdsmlframework.api.extensions.engine_addon.EngineAddonSpecificationExtension
+import org.eclipse.gemoc.xdsmlframework.api.extensions.engine_addon.EngineAddonSpecificationExtensionPoint
+import org.eclipse.gemoc.executionframework.test.lib.IExecutableModel
+
+class TestRunConfiguration implements IRunConfiguration {
+ private val ILanguageWrapper language
+ private val IExecutableModel model
+ private val Set addonsToLoad
+ private val URI modelURI
+
+ new(IExecutableModel model, URI modelURI, ILanguageWrapper language, Set addonsToLoad) {
+ this.language = language
+ this.model = model
+ this.addonsToLoad = addonsToLoad
+ this.modelURI = modelURI
+ }
+
+ override getAnimationDelay() {
+ return 0;
+ }
+
+ override getAnimatorURI() {
+ return null;
+ }
+
+ override getDeadlockDetectionDepth() {
+ return 0;
+ }
+
+ override getEngineAddonExtensions() {
+ val List result = new ArrayList();
+ val loadedAddons = EngineAddonSpecificationExtensionPoint.getSpecifications()
+ for (ext : loadedAddons) {
+ if (addonsToLoad.contains(ext.name)) {
+ result.add(ext)
+ }
+ }
+ return result
+ }
+
+ override getExecutedModelAsMelangeURI() {
+ if (melangeQuery.isEmpty())
+ return modelURI;
+ val String melangeURIString = modelURI.toString().replace("platform:/", "melange:/") + melangeQuery;
+ return URI.createURI(melangeURIString);
+ }
+
+ override getExecutedModelURI() {
+ modelURI
+ }
+
+ override getExecutionEntryPoint() {
+ language.entryPoint
+ }
+
+ override getLanguageName() {
+ language.languageName
+ }
+
+ override getMelangeQuery() {
+ model.melangeQuery
+ }
+
+ override getBreakStart() {
+ false
+ }
+
+ override getDebugModelID() {
+ "org.eclipse.gemoc.execution.sequential.javaengine.ui.debugModel"
+ }
+
+ override getModelEntryPoint() {
+ val ResourceSet resourceSet = new ResourceSetImpl();
+ val Resource modelResource = resourceSet.createResource(modelURI);
+ modelResource.load(null);
+ val result = modelResource.getURIFragment(modelResource.contents.head)
+ modelResource.unload
+ return result
+ }
+
+ override getModelInitializationArguments() {
+ model.initArgument
+ }
+
+ override getModelInitializationMethod() {
+ language.initializationMethod
+ }
+}
diff --git a/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/src/org/eclipse/gemoc/executionframework/test/lib/impl/TestUtil.xtend b/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/src/org/eclipse/gemoc/executionframework/test/lib/impl/TestUtil.xtend
new file mode 100644
index 000000000..30fe8416f
--- /dev/null
+++ b/framework/execution_framework/tests/org.eclipse.gemoc.executionframework.test.lib/src/org/eclipse/gemoc/executionframework/test/lib/impl/TestUtil.xtend
@@ -0,0 +1,133 @@
+package org.eclipse.gemoc.executionframework.test.lib.impl
+
+import java.io.File
+import java.io.FileInputStream
+import java.io.InputStream
+import java.util.Map.Entry
+import org.eclipse.core.resources.IFile
+import org.eclipse.core.resources.IFolder
+import org.eclipse.core.resources.IProject
+import org.eclipse.core.resources.IResource
+import org.eclipse.core.runtime.FileLocator
+import org.eclipse.core.runtime.IProgressMonitor
+import org.eclipse.core.runtime.Path
+import org.eclipse.core.runtime.Platform
+import org.eclipse.core.runtime.jobs.Job
+import org.eclipse.swt.widgets.Display
+import org.eclipse.ui.IWindowListener
+import org.eclipse.ui.IWorkbenchWindow
+import org.eclipse.ui.PlatformUI
+import org.eclipse.gemoc.executionframework.engine.Activator
+import org.eclipse.gemoc.xdsmlframework.api.core.EngineStatus
+import org.eclipse.gemoc.xdsmlframework.api.core.IExecutionEngine
+import org.osgi.framework.Bundle
+
+class TestUtil {
+
+ public static def void copyFileInWS(File file, IFolder destination, IProgressMonitor m) {
+ val fileInProject = destination.getFile(file.name)
+ if (!fileInProject.exists)
+ fileInProject.create(new FileInputStream(file), true, m);
+ }
+
+ public static def IFolder copyFolderInWS(File folder, IResource destination, IProgressMonitor m) {
+ val folderCopy = if (destination instanceof IProject) {
+ destination.getFolder(folder.name)
+ } else if (destination instanceof IFolder) {
+ destination.getFolder(folder.name)
+ } else
+ null
+
+ if (!folderCopy.exists)
+ folderCopy.create(true, true, m)
+ for (File f : folder.listFiles) {
+ if (f.isFile) {
+ copyFileInWS(f, folderCopy, m)
+ } else if (f.isDirectory) {
+ copyFolderInWS(f, folderCopy, m)
+ }
+ }
+ return folderCopy
+ }
+
+ public static def void waitForJobs() {
+ while (!Job.getJobManager().isIdle())
+ delay(100);
+ }
+
+ public static def void waitForJobsThenWindowClosed() {
+ waitForJobsThenWait(1000000000);
+ }
+
+ public static def void waitForJobsThenWait(long waitTimeMillis) {
+ waitForJobs();
+ delay(waitTimeMillis);
+ }
+
+ public static def void waitUIThread(long waitTimeMillis) {
+ delay(waitTimeMillis);
+ }
+
+ static var closed = false;
+
+ private static def void delay(long waitTimeMillis) {
+ val Display display = Display.getCurrent();
+
+ // We try to capture when the window is closed by the tester
+ PlatformUI.getWorkbench.addWindowListener(
+ new IWindowListener() {
+
+ override windowActivated(IWorkbenchWindow window) {
+ }
+
+ override windowClosed(IWorkbenchWindow window) {
+ closed = true
+ }
+
+ override windowDeactivated(IWorkbenchWindow window) {
+ }
+
+ override windowOpened(IWorkbenchWindow window) {
+ }
+
+ }
+ )
+
+ // If this is the UI thread,
+ // then process input.
+ if (display != null) {
+ val long endTimeMillis = System.currentTimeMillis() + waitTimeMillis;
+ while (System.currentTimeMillis() < endTimeMillis && !closed) {
+ if (!display.readAndDispatch())
+ display.sleep();
+ }
+ display.update();
+ } // Otherwise, perform a simple sleep.
+ else {
+ try {
+ Thread.sleep(waitTimeMillis);
+ } catch (InterruptedException e) {
+ // Ignored.
+ }
+ }
+ }
+
+ def static public void removeStoppedEngines() {
+ val registry = Activator.getDefault().gemocRunningEngineRegistry
+ for (Entry engineEntry : registry.getRunningEngines().entrySet()) {
+ if (engineEntry.value.runningStatus.equals(EngineStatus.RunStatus.Stopped)) {
+ registry.unregisterEngine(engineEntry.getKey())
+ }
+
+ }
+ }
+
+ def static copyFileFromPlugin(String pluginName, String pathInPlugin, IFile targetFile, IProgressMonitor m) {
+ val Bundle bundle = Platform::getBundle(pluginName);
+ val path = new Path(pathInPlugin)
+ val InputStream stream = FileLocator::openStream(bundle, path, false);
+ targetFile.create(stream, true, m);
+ }
+
+
+}
diff --git a/framework/framework_commons/plugins/org.eclipse.gemoc.executionframework.reflectivetrace.model/.checkstyle b/framework/framework_commons/plugins/org.eclipse.gemoc.executionframework.reflectivetrace.model/.checkstyle
new file mode 100644
index 000000000..2d51ed574
--- /dev/null
+++ b/framework/framework_commons/plugins/org.eclipse.gemoc.executionframework.reflectivetrace.model/.checkstyle
@@ -0,0 +1,13 @@
+
+
+