diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 000000000..bc8008746 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,40 @@ +--- +name: Bug report +about: Create a report to help us improve the following components of the GEMOC Studio: simulationmodelanimation, framework, trace (if you know that the issue is relative to another component, consider opening the issue on one of the other GEMOC github repositories) +title: '' +labels: bug +assignees: '' + +--- + +## Bug description + + + + +## Expected behavior + + + + +## How to reproduce + +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +## Additional context + + + +- **GEMOC Studio version**: +- **Java version**: +- **OS**: + +## Screenshot + + + + diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 000000000..846f23a6b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,22 @@ +--- +name: Feature request +about: Suggest an idea to improve the following components of the GEMOC Studio: simulationmodelanimation, framework, trace (if you know that the issue is relative to another component, consider opening the issue on one of the other GEMOC github repositories) +title: '' +labels: enhancement +assignees: '' + +--- + +## Motivation + + + + +## Proposed Solution + + + + +## Proposed Implementation + + \ No newline at end of file diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 000000000..ecfe4a0c8 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,25 @@ + +## Description + + + + +Does X + +## Changes + + + + - + +## Contribution to issues + +Contribute to # +Closes # + +## Companion Pull Requests + + + + + - PR # diff --git a/.gitignore b/.gitignore index ae9784d17..69fd0a67a 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 +**/.settings diff --git a/.mvn/extensions.xml b/.mvn/extensions.xml index 5724f5ea7..c8b79d9ed 100644 --- a/.mvn/extensions.xml +++ b/.mvn/extensions.xml @@ -3,6 +3,6 @@ org.eclipse.tycho.extras tycho-pomless - 1.5.1 + 1.7.0 \ No newline at end of file diff --git a/.project b/.project index 828005942..4dbbe2b88 100644 --- a/.project +++ b/.project @@ -5,7 +5,13 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature diff --git a/CHANGELOG.md b/CHANGELOG.md index d48a89a20..0be5ba5de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,20 +1,38 @@ # Changelog -## v3.2.0-20191216 (16/12/2019) +## v3.2.0 (16/06/2020) #### Enhancements: +- [**enhancement**][**refactoring**] DslValidator modified to use languageComponents instead of RuleProvider [#175](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/175) +- [**enhancement**] IConfigurationElement arrays changed for ArrayLists in GEMOC tools [#177](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/177) +- [**enhancement**] Proposal Provider and Highlighting for dsl files in GEMOC Studio [#172](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/172) +- [**enhancement**] Fix TreeViewerHelper resize too often [#168](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/168) +- [**enhancement**] Cache sorting of addon on engine status change [#165](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/165) +- [**enhancement**] New plug-in for validation in GEMOC Studio [#164](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/164) +- [**enhancement**] Adds Addon parameter feature and makes equivalency classes computing optional [#157](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/157) +- [**enhancement**] Implement addon priority mechanism [#149](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/149) +- [**enhancement**] Add new GenericDebugModelId for generic model presentation and breakpoint management [#141](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/141) +- [**enhancement**] Add information about number of completed steps in the EngineStatus class [#143](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/143) +- [**bug**][**enhancement**] Reduce Sirius refresh notification [#125](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/125) +- [**enhancement**][**refactoring**] Improve default Engine addon launch conf tab [#136](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/136) - [**enhancement**] Behavioral interface DSL, event occurrence metamodel and value metamodel [#119](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/119) - [**enhancement**] Add "openFileFromPlugin" method to TestUtil [#109](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/109) - [**enhancement**] Clarifies Eclipse consoles used by the engines [#116](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/116) #### Bug Fixes: +- [**bug**] Avoid NPE in IntrospectiveMutableFieldExtractor for MM with null names [#150](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/150) +- [**bug**] Remove Logical Step View from perspective extension declaration [#145](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/145) - [**bug**] Fix xdsmlFilePath attribute in plugin.xml [#139](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/139) +- [**bug**] Handle Sirius forced resourceSet [#140](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/140) - [**bug**] Fix double instantiation of language specific addons [#121](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/121) #### Refactorings +- [**refactoring**] Kermeta3 validation rule moved into gemoc-debugging from the K3 validation plugin [#170](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/170) +- [**refactoring**] Move commons for gemoc-studio to gemoc-studio-modeldebugging git repository [#148](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/148) +- [**refactoring**] Move JavaEngine to its own git repository [#147](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/147) - [**refactoring**] Use general extension point + nature and builder refactoring [#133](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/133) #### Version upgrades @@ -24,13 +42,15 @@ #### Release Engineering +- [**releng**] Deploy GEMOC artefacts to maven repository (repo.eclipse.org) [#154](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/154) +- [**releng**] Move some reusable Context and Runconfiguration classes from JavaEngine to execution framework [#144](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/144) - [**releng**] Improve test video recording [#135](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/135) - [**releng**] Remove deprecated update site [#130](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/130) - [**releng**] Improve marker reporting in tests [#120](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/120) --- -## v3.2.0-20191213 (01/01/1970) +## v3.2.0-20191216 (16/12/2019) #### Enhancements: @@ -40,6 +60,7 @@ #### Bug Fixes: +- [**bug**] Fix xdsmlFilePath attribute in plugin.xml [#139](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/139) - [**bug**] Fix double instantiation of language specific addons [#121](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/121) #### Refactorings @@ -60,7 +81,45 @@ --- ## v3.1.0 (29/07/2019) -*No changelog for this release.* + +#### Enhancements: + +- [**enhancement**] Add restoreState support for missing eType [#102](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/102) +- [**enhancement**] Display step arguments in the debugger stack view [#59](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/59) +- [**bug**][**enhancement**] Fix sirius wizard call and improve Sirius project creation for GEMOC [#104](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/104) +- [**enhancement**][**releng**] Add concurrent engine to the studio [#98](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/98) +- [**enhancement**] Improve Variable and Debug views [#97](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/97) +- [**enhancement**][**releng**] Add command line Eclipse application to run GEMOC languages and headless product [#90](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/90) +- [**enhancement**] Integrate ALE interpreted engine in GEMOC Studio build [#77](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/77) +- [**enhancement**][**refactoring**] Move dsl default location to project root and minor Melange related refactoring [#76](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/76) + +#### Bug Fixes: + +- [**bug**] Update launchconf icon according to official colors [#101](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/101) +- [**bug**] Reorder Sirius 4 GEMOC wizard pages [#107](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/107) +- [**bug**] [tracing] Remove exceptions when no traced objects [#100](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/100) +- [**bug**] [test] Adapt test helper code to latest api changes [#99](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/99) +- [**bug**] Fix updating of Sirius views during debugging [#105](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/105) +- [**bug**] Implement some missing eType in generic trace and improve user feedback on RDT definition problems [#89](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/89) +- [**bug**] Add restoreState support for missing eType [#94](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/94) +- [**bug**] Fixes GemocSequentialLanguageBuilder problem on windows [#68](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/68) + +#### Refactorings + +- [**refactoring**] Execution framework refactoring [#53](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/53) + +#### Version upgrades + +- [**bump**] Bump to eclipse photon [#72](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/72) +- [**bump**] Bump to latest k3/melange version [#64](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/64) +- [**bump**] Bump components and studio versions [#62](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/62) + +#### Release Engineering + +- [**releng**] Add gexpressions to studio/updatesite and restructure update site [#114](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/114) +- [**releng**] Update icons to official branding colors [#110](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/110) +- [**releng**] Increase swtbot test timeout [#106](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/106) +- [**releng**] Fix xtend compilation issue 1373 [#79](https://github.com/eclipse/gemoc-studio-modeldebugging/pull/79) --- diff --git a/README.md b/README.md index 28c429fc3..1b1e1cda5 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,6 @@ The repository includes several components: - ___trace___ The plugins dedicated to execution traces. It offers two traces implementations that cans be used by the framework: - a simple generic trace metamodel - an efficient trace metamodel powered by a generative approach. This trace enables all omniscient debugging capabilities of the framework and offers a multidimentional timeline. -- ___java_execution___ contains an implementation of the framework using a sequential java engine (based on xtend+k3). This project is included within the [GEMOC](http://gemoc.org/ "GEMOC Homepage"). This project offers an Eclipse package ([GEMOC Studio](http://gemoc.org/studio-download/)) with all these components preinstalled. It also provides additionnal engines (concurrent engine, coordination of concurrent engines), documentation and tutorials. 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/.project b/commons/plugins/.project new file mode 100644 index 000000000..768e94606 --- /dev/null +++ b/commons/plugins/.project @@ -0,0 +1,17 @@ + + + org.eclipse.gemoc.commons.plugins.root + + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.m2e.core.maven2Nature + + diff --git a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.edit/.project b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.edit/.project index 7f8257b9c..bebeddce0 100644 --- a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.edit/.project +++ b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.edit/.project @@ -20,8 +20,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.jdt.core.javanature org.eclipse.pde.PluginNature diff --git a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.edit/META-INF/MANIFEST.MF b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.edit/META-INF/MANIFEST.MF index 8b4776c0d..588c20a11 100644 --- a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.edit/META-INF/MANIFEST.MF +++ b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.edit/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.gemoc.gexpressions.edit;singleton:=true -Bundle-Version: 3.0.0.qualifier +Bundle-Version: 3.3.0.qualifier Bundle-ClassPath: . Bundle-Activator: org.eclipse.gemoc.gexpressions.provider.GexpressionsEditPlugin$Implementation Bundle-Vendor: %providerName diff --git a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.edit/pom.xml b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.edit/pom.xml index 938a68f73..555db30b0 100644 --- a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.edit/pom.xml +++ b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.edit/pom.xml @@ -21,11 +21,11 @@ org.eclipse.gemoc.commons.root org.eclipse.gemoc.commons - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT ../../../ org.eclipse.gemoc.commons org.eclipse.gemoc.gexpressions.edit - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT eclipse-plugin diff --git a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.editor/.project b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.editor/.project index d057c8488..225e63331 100644 --- a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.editor/.project +++ b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.editor/.project @@ -20,8 +20,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.jdt.core.javanature org.eclipse.pde.PluginNature diff --git a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.editor/META-INF/MANIFEST.MF b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.editor/META-INF/MANIFEST.MF index 7329f81f2..4d8967cc8 100644 --- a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.editor/META-INF/MANIFEST.MF +++ b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.editor/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.gemoc.gexpressions.editor;singleton:=true -Bundle-Version: 3.0.0.qualifier +Bundle-Version: 3.3.0.qualifier Bundle-ClassPath: . Bundle-Activator: org.eclipse.gemoc.gexpressions.presentation.GexpressionsEditorPlugin$Implementation Bundle-Vendor: %providerName diff --git a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.editor/pom.xml b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.editor/pom.xml index ff9b718bf..9d37cd11b 100644 --- a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.editor/pom.xml +++ b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.editor/pom.xml @@ -21,11 +21,11 @@ org.eclipse.gemoc.commons.root org.eclipse.gemoc.commons - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT ../../../ org.eclipse.gemoc.commons org.eclipse.gemoc.gexpressions.editor - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT eclipse-plugin diff --git a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.xtext.ui/.project b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.xtext.ui/.project index 0f07b8450..06839cb79 100644 --- a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.xtext.ui/.project +++ b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.xtext.ui/.project @@ -25,8 +25,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.jdt.core.javanature org.eclipse.pde.PluginNature org.eclipse.xtext.ui.shared.xtextNature diff --git a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.xtext.ui/META-INF/MANIFEST.MF b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.xtext.ui/META-INF/MANIFEST.MF index 8195131b4..71d4cdee7 100644 --- a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.xtext.ui/META-INF/MANIFEST.MF +++ b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.xtext.ui/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: org.eclipse.gemoc.gexpressions.xtext.ui Bundle-Vendor: My Company -Bundle-Version: 3.0.0.qualifier +Bundle-Version: 3.3.0.qualifier Bundle-SymbolicName: org.eclipse.gemoc.gexpressions.xtext.ui; singleton:=true Bundle-ActivationPolicy: lazy Require-Bundle: org.eclipse.gemoc.gexpressions.xtext;visibility:=reexport, diff --git a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.xtext.ui/pom.xml b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.xtext.ui/pom.xml index 5b30b5ffb..2950a8f10 100644 --- a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.xtext.ui/pom.xml +++ b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.xtext.ui/pom.xml @@ -21,11 +21,11 @@ org.eclipse.gemoc.commons.root org.eclipse.gemoc.commons - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT ../../../ org.eclipse.gemoc.commons org.eclipse.gemoc.gexpressions.xtext.ui - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT eclipse-plugin diff --git a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.xtext/.project b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.xtext/.project index 7ae0de356..0f4923800 100644 --- a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.xtext/.project +++ b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.xtext/.project @@ -25,8 +25,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.jdt.core.javanature org.eclipse.pde.PluginNature org.eclipse.xtext.ui.shared.xtextNature diff --git a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.xtext/META-INF/MANIFEST.MF b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.xtext/META-INF/MANIFEST.MF index 6b58018b8..d639b9756 100644 --- a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.xtext/META-INF/MANIFEST.MF +++ b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.xtext/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: org.eclipse.gemoc.gexpressions.xtext Bundle-Vendor: My Company -Bundle-Version: 3.0.0.qualifier +Bundle-Version: 3.3.0.qualifier Bundle-SymbolicName: org.eclipse.gemoc.gexpressions.xtext; singleton:=true Bundle-ActivationPolicy: lazy Require-Bundle: org.eclipse.xtext;visibility:=reexport, diff --git a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.xtext/pom.xml b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.xtext/pom.xml index 33639a4be..879b4cfcf 100644 --- a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.xtext/pom.xml +++ b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions.xtext/pom.xml @@ -21,11 +21,11 @@ org.eclipse.gemoc.commons.root org.eclipse.gemoc.commons - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT ../../../ org.eclipse.gemoc.commons org.eclipse.gemoc.gexpressions.xtext - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT eclipse-plugin diff --git a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions/.project b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions/.project index a28d9d69f..4ef9d2a77 100644 --- a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions/.project +++ b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions/.project @@ -25,8 +25,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.sirius.nature.modelingproject org.eclipse.jdt.core.javanature org.eclipse.pde.PluginNature diff --git a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions/META-INF/MANIFEST.MF b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions/META-INF/MANIFEST.MF index f1ab825df..f4388c130 100644 --- a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions/META-INF/MANIFEST.MF +++ b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: GExpressions Abstract Syntax Bundle-SymbolicName: org.eclipse.gemoc.gexpressions;singleton:=true -Bundle-Version: 3.0.0.qualifier +Bundle-Version: 3.3.0.qualifier Bundle-ClassPath: . Bundle-Vendor: IRIT Bundle-Localization: plugin diff --git a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions/pom.xml b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions/pom.xml index 8cb497165..ab13dda2a 100644 --- a/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions/pom.xml +++ b/commons/plugins/gexpressions/org.eclipse.gemoc.gexpressions/pom.xml @@ -21,11 +21,11 @@ org.eclipse.gemoc.commons.root org.eclipse.gemoc.commons - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT ../../../ org.eclipse.gemoc.commons org.eclipse.gemoc.gexpressions - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT eclipse-plugin diff --git a/commons/plugins/org.eclipse.gemoc.commons.eclipse.jdt.autosrcfolder/.project b/commons/plugins/org.eclipse.gemoc.commons.eclipse.jdt.autosrcfolder/.project index f4354f280..7ba08e5ee 100644 --- a/commons/plugins/org.eclipse.gemoc.commons.eclipse.jdt.autosrcfolder/.project +++ b/commons/plugins/org.eclipse.gemoc.commons.eclipse.jdt.autosrcfolder/.project @@ -20,8 +20,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature diff --git a/commons/plugins/org.eclipse.gemoc.commons.eclipse.jdt.autosrcfolder/META-INF/MANIFEST.MF b/commons/plugins/org.eclipse.gemoc.commons.eclipse.jdt.autosrcfolder/META-INF/MANIFEST.MF index dcd9a2e6f..bf793c4e6 100644 --- a/commons/plugins/org.eclipse.gemoc.commons.eclipse.jdt.autosrcfolder/META-INF/MANIFEST.MF +++ b/commons/plugins/org.eclipse.gemoc.commons.eclipse.jdt.autosrcfolder/META-INF/MANIFEST.MF @@ -1,7 +1,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.eclipse.gemoc.commons.eclipse.jdt.autosrcfolder;singleton:=true -Bundle-Version: 3.0.0.qualifier +Bundle-Version: 3.3.0.qualifier Require-Bundle: org.eclipse.core.runtime;bundle-version="3.14.0", org.eclipse.core.resources;bundle-version="3.13.0", org.eclipse.ui;bundle-version="3.109.100", diff --git a/commons/plugins/org.eclipse.gemoc.commons.eclipse.jdt.autosrcfolder/pom.xml b/commons/plugins/org.eclipse.gemoc.commons.eclipse.jdt.autosrcfolder/pom.xml index 2a674379c..27a0fa38a 100644 --- a/commons/plugins/org.eclipse.gemoc.commons.eclipse.jdt.autosrcfolder/pom.xml +++ b/commons/plugins/org.eclipse.gemoc.commons.eclipse.jdt.autosrcfolder/pom.xml @@ -6,7 +6,7 @@ ../../pom.xml org.eclipse.gemoc.commons org.eclipse.gemoc.commons.root - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT org.eclipse.gemoc.commons.eclipse.jdt.autosrcfolder eclipse-plugin diff --git a/commons/plugins/org.eclipse.gemoc.commons.eclipse.jdt/.project b/commons/plugins/org.eclipse.gemoc.commons.eclipse.jdt/.project index 44f5735ec..4541a5c2d 100644 --- a/commons/plugins/org.eclipse.gemoc.commons.eclipse.jdt/.project +++ b/commons/plugins/org.eclipse.gemoc.commons.eclipse.jdt/.project @@ -20,8 +20,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature diff --git a/commons/plugins/org.eclipse.gemoc.commons.eclipse.jdt/META-INF/MANIFEST.MF b/commons/plugins/org.eclipse.gemoc.commons.eclipse.jdt/META-INF/MANIFEST.MF index 05eddfba8..d79f68035 100644 --- a/commons/plugins/org.eclipse.gemoc.commons.eclipse.jdt/META-INF/MANIFEST.MF +++ b/commons/plugins/org.eclipse.gemoc.commons.eclipse.jdt/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: GEMOC Commons Eclipse JDT Bundle-SymbolicName: org.eclipse.gemoc.commons.eclipse.jdt;singleton:=true -Bundle-Version: 3.0.0.qualifier +Bundle-Version: 3.3.0.qualifier Require-Bundle: org.eclipse.jdt.core, org.eclipse.core.runtime, org.eclipse.gemoc.commons.eclipse;visibility:=reexport, diff --git a/commons/plugins/org.eclipse.gemoc.commons.eclipse.jdt/pom.xml b/commons/plugins/org.eclipse.gemoc.commons.eclipse.jdt/pom.xml index 3478798f1..da466c876 100644 --- a/commons/plugins/org.eclipse.gemoc.commons.eclipse.jdt/pom.xml +++ b/commons/plugins/org.eclipse.gemoc.commons.eclipse.jdt/pom.xml @@ -17,10 +17,10 @@ ../../pom.xml org.eclipse.gemoc.commons org.eclipse.gemoc.commons.root - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT org.eclipse.gemoc.commons.eclipse.jdt eclipse-plugin - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT \ No newline at end of file diff --git a/commons/plugins/org.eclipse.gemoc.commons.eclipse.messagingsystem.api/META-INF/MANIFEST.MF b/commons/plugins/org.eclipse.gemoc.commons.eclipse.messagingsystem.api/META-INF/MANIFEST.MF index 40007ee52..05886f35a 100644 --- a/commons/plugins/org.eclipse.gemoc.commons.eclipse.messagingsystem.api/META-INF/MANIFEST.MF +++ b/commons/plugins/org.eclipse.gemoc.commons.eclipse.messagingsystem.api/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: GEMOC messagingsystem api Bundle-SymbolicName: org.eclipse.gemoc.commons.eclipse.messagingsystem.api;singleton:=true -Bundle-Version: 3.0.0.qualifier +Bundle-Version: 3.3.0.qualifier Bundle-Vendor: Inria DiverSE Require-Bundle: org.eclipse.core.runtime Bundle-RequiredExecutionEnvironment: JavaSE-1.7 diff --git a/commons/plugins/org.eclipse.gemoc.commons.eclipse.messagingsystem.api/pom.xml b/commons/plugins/org.eclipse.gemoc.commons.eclipse.messagingsystem.api/pom.xml index 00fdc19d5..3eeec7b66 100644 --- a/commons/plugins/org.eclipse.gemoc.commons.eclipse.messagingsystem.api/pom.xml +++ b/commons/plugins/org.eclipse.gemoc.commons.eclipse.messagingsystem.api/pom.xml @@ -16,7 +16,7 @@ ../../pom.xml org.eclipse.gemoc.commons org.eclipse.gemoc.commons.root - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT org.eclipse.gemoc.commons.eclipse.messagingsystem.api eclipse-plugin 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.messagingsystem.ui/META-INF/MANIFEST.MF b/commons/plugins/org.eclipse.gemoc.commons.eclipse.messagingsystem.ui/META-INF/MANIFEST.MF index 061e2be53..f6d20cdc0 100644 --- a/commons/plugins/org.eclipse.gemoc.commons.eclipse.messagingsystem.ui/META-INF/MANIFEST.MF +++ b/commons/plugins/org.eclipse.gemoc.commons.eclipse.messagingsystem.ui/META-INF/MANIFEST.MF @@ -9,7 +9,7 @@ Bundle-ManifestVersion: 2 Bundle-Name: GEMOC messagingsystem UI Bundle-SymbolicName: org.eclipse.gemoc.commons.eclipse.messagingsystem.ui;singleton:=true Bundle-Vendor: Inria DiverSE -Bundle-Version: 3.0.0.qualifier +Bundle-Version: 3.3.0.qualifier Require-Bundle: org.eclipse.core.resources, org.eclipse.core.runtime, org.eclipse.ui.workbench, diff --git a/commons/plugins/org.eclipse.gemoc.commons.eclipse.messagingsystem.ui/pom.xml b/commons/plugins/org.eclipse.gemoc.commons.eclipse.messagingsystem.ui/pom.xml index be0f9db95..960df5c6a 100644 --- a/commons/plugins/org.eclipse.gemoc.commons.eclipse.messagingsystem.ui/pom.xml +++ b/commons/plugins/org.eclipse.gemoc.commons.eclipse.messagingsystem.ui/pom.xml @@ -16,7 +16,7 @@ ../../pom.xml org.eclipse.gemoc.commons org.eclipse.gemoc.commons.root - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT org.eclipse.gemoc.commons.eclipse.messagingsystem.ui eclipse-plugin diff --git a/commons/plugins/org.eclipse.gemoc.commons.eclipse.pde/.project b/commons/plugins/org.eclipse.gemoc.commons.eclipse.pde/.project index 2e872c70b..700031aa4 100644 --- a/commons/plugins/org.eclipse.gemoc.commons.eclipse.pde/.project +++ b/commons/plugins/org.eclipse.gemoc.commons.eclipse.pde/.project @@ -20,8 +20,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature diff --git a/commons/plugins/org.eclipse.gemoc.commons.eclipse.pde/META-INF/MANIFEST.MF b/commons/plugins/org.eclipse.gemoc.commons.eclipse.pde/META-INF/MANIFEST.MF index c4018c0bc..8434fbd8a 100644 --- a/commons/plugins/org.eclipse.gemoc.commons.eclipse.pde/META-INF/MANIFEST.MF +++ b/commons/plugins/org.eclipse.gemoc.commons.eclipse.pde/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: GEMOC Commons Eclipse PDE Bundle-SymbolicName: org.eclipse.gemoc.commons.eclipse.pde;singleton:=true -Bundle-Version: 3.0.0.qualifier +Bundle-Version: 3.3.0.qualifier Require-Bundle: org.eclipse.core.runtime, org.eclipse.gemoc.commons.eclipse;visibility:=reexport, org.eclipse.jdt.core, diff --git a/commons/plugins/org.eclipse.gemoc.commons.eclipse.pde/pom.xml b/commons/plugins/org.eclipse.gemoc.commons.eclipse.pde/pom.xml index cdb284791..992570ef3 100644 --- a/commons/plugins/org.eclipse.gemoc.commons.eclipse.pde/pom.xml +++ b/commons/plugins/org.eclipse.gemoc.commons.eclipse.pde/pom.xml @@ -17,10 +17,10 @@ ../../pom.xml org.eclipse.gemoc.commons org.eclipse.gemoc.commons.root - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT org.eclipse.gemoc.commons.eclipse.pde eclipse-plugin - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT \ 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.ui/.project b/commons/plugins/org.eclipse.gemoc.commons.eclipse.ui/.project index 1568e4a47..e92655118 100644 --- a/commons/plugins/org.eclipse.gemoc.commons.eclipse.ui/.project +++ b/commons/plugins/org.eclipse.gemoc.commons.eclipse.ui/.project @@ -20,8 +20,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature diff --git a/commons/plugins/org.eclipse.gemoc.commons.eclipse.ui/META-INF/MANIFEST.MF b/commons/plugins/org.eclipse.gemoc.commons.eclipse.ui/META-INF/MANIFEST.MF index a99e2b5dd..0fee83e2e 100644 --- a/commons/plugins/org.eclipse.gemoc.commons.eclipse.ui/META-INF/MANIFEST.MF +++ b/commons/plugins/org.eclipse.gemoc.commons.eclipse.ui/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: GEMOC Commons Eclipse UI Bundle-SymbolicName: org.eclipse.gemoc.commons.eclipse.ui;singleton:=true -Bundle-Version: 3.0.0.qualifier +Bundle-Version: 3.3.0.qualifier Bundle-Vendor: INRIA Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Require-Bundle: org.eclipse.ui.workbench, diff --git a/commons/plugins/org.eclipse.gemoc.commons.eclipse.ui/pom.xml b/commons/plugins/org.eclipse.gemoc.commons.eclipse.ui/pom.xml index 270f71655..372afafda 100644 --- a/commons/plugins/org.eclipse.gemoc.commons.eclipse.ui/pom.xml +++ b/commons/plugins/org.eclipse.gemoc.commons.eclipse.ui/pom.xml @@ -17,10 +17,10 @@ ../../pom.xml org.eclipse.gemoc.commons org.eclipse.gemoc.commons.root - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT org.eclipse.gemoc.commons.eclipse.ui eclipse-plugin - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT \ No newline at end of file diff --git a/commons/plugins/org.eclipse.gemoc.commons.eclipse/.project b/commons/plugins/org.eclipse.gemoc.commons.eclipse/.project index 2d3bfcbe8..a789c2e90 100644 --- a/commons/plugins/org.eclipse.gemoc.commons.eclipse/.project +++ b/commons/plugins/org.eclipse.gemoc.commons.eclipse/.project @@ -20,8 +20,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature diff --git a/commons/plugins/org.eclipse.gemoc.commons.eclipse/META-INF/MANIFEST.MF b/commons/plugins/org.eclipse.gemoc.commons.eclipse/META-INF/MANIFEST.MF index 9b60de970..f9d5cfb49 100644 --- a/commons/plugins/org.eclipse.gemoc.commons.eclipse/META-INF/MANIFEST.MF +++ b/commons/plugins/org.eclipse.gemoc.commons.eclipse/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: GEMOC Commons Eclipse Bundle-SymbolicName: org.eclipse.gemoc.commons.eclipse;singleton:=true -Bundle-Version: 3.0.0.qualifier +Bundle-Version: 3.3.0.qualifier Require-Bundle: org.eclipse.core.runtime, org.eclipse.emf.ecore, org.eclipse.gemoc.commons.eclipse.messagingsystem.api;bundle-version="1.0.0" diff --git a/commons/plugins/org.eclipse.gemoc.commons.eclipse/pom.xml b/commons/plugins/org.eclipse.gemoc.commons.eclipse/pom.xml index e6a40cbea..7acd11430 100644 --- a/commons/plugins/org.eclipse.gemoc.commons.eclipse/pom.xml +++ b/commons/plugins/org.eclipse.gemoc.commons.eclipse/pom.xml @@ -17,10 +17,10 @@ ../../pom.xml org.eclipse.gemoc.commons org.eclipse.gemoc.commons.root - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT org.eclipse.gemoc.commons.eclipse eclipse-plugin - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT \ 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..c8c119e2d --- /dev/null +++ b/commons/plugins/org.eclipse.gemoc.commons.utils/META-INF/MANIFEST.MF @@ -0,0 +1,9 @@ +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 +Export-Package: org.eclipse.gemoc.commons.utils 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.ide/.project b/commons/plugins/org.eclipse.gemoc.dsl.ide/.project index 64096bc12..3f4564745 100644 --- a/commons/plugins/org.eclipse.gemoc.dsl.ide/.project +++ b/commons/plugins/org.eclipse.gemoc.dsl.ide/.project @@ -25,8 +25,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.xtext.ui.shared.xtextNature org.eclipse.jdt.core.javanature org.eclipse.pde.PluginNature diff --git a/commons/plugins/org.eclipse.gemoc.dsl.ide/META-INF/MANIFEST.MF b/commons/plugins/org.eclipse.gemoc.dsl.ide/META-INF/MANIFEST.MF index 73e00d04f..2699c67d3 100644 --- a/commons/plugins/org.eclipse.gemoc.dsl.ide/META-INF/MANIFEST.MF +++ b/commons/plugins/org.eclipse.gemoc.dsl.ide/META-INF/MANIFEST.MF @@ -1,8 +1,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 -Bundle-Name: org.eclipse.gemoc.dsl.ide -Bundle-Vendor: My Company -Bundle-Version: 3.0.0.qualifier +Bundle-Name: GEMOC Commons Dsl Xtext Ide +Bundle-Vendor: Eclipse GEMOC Project +Bundle-Version: 3.3.0.qualifier Bundle-SymbolicName: org.eclipse.gemoc.dsl.ide; singleton:=true Bundle-ActivationPolicy: lazy Require-Bundle: org.eclipse.gemoc.dsl, diff --git a/commons/plugins/org.eclipse.gemoc.dsl.ide/pom.xml b/commons/plugins/org.eclipse.gemoc.dsl.ide/pom.xml index a37922ff5..72ba62234 100644 --- a/commons/plugins/org.eclipse.gemoc.dsl.ide/pom.xml +++ b/commons/plugins/org.eclipse.gemoc.dsl.ide/pom.xml @@ -5,7 +5,7 @@ ../../pom.xml org.eclipse.gemoc.commons org.eclipse.gemoc.commons.root - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT org.eclipse.gemoc.dsl.ide eclipse-plugin diff --git a/commons/plugins/org.eclipse.gemoc.dsl.model/.project b/commons/plugins/org.eclipse.gemoc.dsl.model/.project index 5bfecb639..27e209e80 100644 --- a/commons/plugins/org.eclipse.gemoc.dsl.model/.project +++ b/commons/plugins/org.eclipse.gemoc.dsl.model/.project @@ -20,8 +20,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.sirius.nature.modelingproject org.eclipse.jdt.core.javanature org.eclipse.pde.PluginNature diff --git a/commons/plugins/org.eclipse.gemoc.dsl.model/META-INF/MANIFEST.MF b/commons/plugins/org.eclipse.gemoc.dsl.model/META-INF/MANIFEST.MF index aaef6f893..c3248cb39 100644 --- a/commons/plugins/org.eclipse.gemoc.dsl.model/META-INF/MANIFEST.MF +++ b/commons/plugins/org.eclipse.gemoc.dsl.model/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.gemoc.dsl.model;singleton:=true -Bundle-Version: 3.0.0.qualifier +Bundle-Version: 3.3.0.qualifier Bundle-ClassPath: . Bundle-Vendor: %providerName Bundle-Localization: plugin diff --git a/commons/plugins/org.eclipse.gemoc.dsl.model/plugin.properties b/commons/plugins/org.eclipse.gemoc.dsl.model/plugin.properties index fc707c5a4..0062014fd 100644 --- a/commons/plugins/org.eclipse.gemoc.dsl.model/plugin.properties +++ b/commons/plugins/org.eclipse.gemoc.dsl.model/plugin.properties @@ -1,4 +1,4 @@ # -pluginName = Dsl Model -providerName = www.example.org +pluginName = GEMOC Commons Dsl Model +providerName = Eclipse GEMOC Project diff --git a/commons/plugins/org.eclipse.gemoc.dsl.model/pom.xml b/commons/plugins/org.eclipse.gemoc.dsl.model/pom.xml index db77575e0..3292f5d38 100644 --- a/commons/plugins/org.eclipse.gemoc.dsl.model/pom.xml +++ b/commons/plugins/org.eclipse.gemoc.dsl.model/pom.xml @@ -5,7 +5,7 @@ ../../pom.xml org.eclipse.gemoc.commons org.eclipse.gemoc.commons.root - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT org.eclipse.gemoc.dsl.model eclipse-plugin 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/org.eclipse.gemoc.dsl.ui/.project b/commons/plugins/org.eclipse.gemoc.dsl.ui/.project index 309224510..4df36fb0b 100644 --- a/commons/plugins/org.eclipse.gemoc.dsl.ui/.project +++ b/commons/plugins/org.eclipse.gemoc.dsl.ui/.project @@ -25,8 +25,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.xtext.ui.shared.xtextNature org.eclipse.jdt.core.javanature org.eclipse.pde.PluginNature diff --git a/commons/plugins/org.eclipse.gemoc.dsl.ui/META-INF/MANIFEST.MF b/commons/plugins/org.eclipse.gemoc.dsl.ui/META-INF/MANIFEST.MF index 84860a37d..243f2ebc8 100644 --- a/commons/plugins/org.eclipse.gemoc.dsl.ui/META-INF/MANIFEST.MF +++ b/commons/plugins/org.eclipse.gemoc.dsl.ui/META-INF/MANIFEST.MF @@ -1,8 +1,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 -Bundle-Name: org.eclipse.gemoc.dsl.ui -Bundle-Vendor: My Company -Bundle-Version: 3.0.0.qualifier +Bundle-Name: GEMOC Commons Dsl Xtext UI +Bundle-Vendor: Eclipse GEMOC Project +Bundle-Version: 3.3.0.qualifier Bundle-SymbolicName: org.eclipse.gemoc.dsl.ui; singleton:=true Bundle-ActivationPolicy: lazy Require-Bundle: org.eclipse.gemoc.dsl, @@ -16,7 +16,8 @@ Require-Bundle: org.eclipse.gemoc.dsl, org.eclipse.compare, org.eclipse.xtext.builder, org.eclipse.xtend.lib;resolution:=optional, - org.eclipse.xtext.xbase.lib;bundle-version="2.14.0" + org.eclipse.xtext.xbase.lib;bundle-version="2.14.0", + org.eclipse.gemoc.xdsmlframework.api;bundle-version="4.0.0" Import-Package: org.apache.log4j Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Export-Package: org.eclipse.gemoc.ui.contentassist, diff --git a/commons/plugins/org.eclipse.gemoc.dsl.ui/plugin.xml b/commons/plugins/org.eclipse.gemoc.dsl.ui/plugin.xml index 0394ce2fd..a04cc2803 100644 --- a/commons/plugins/org.eclipse.gemoc.dsl.ui/plugin.xml +++ b/commons/plugins/org.eclipse.gemoc.dsl.ui/plugin.xml @@ -9,7 +9,7 @@ default="true" extensions="dsl" id="org.eclipse.gemoc.Dsl" - name="Dsl Editor"> + name="GEMOC Dsl Editor"> + name="GEMOC Dsl"> + name="GEMOC Dsl"> @@ -115,7 +115,7 @@ point="org.eclipse.ui.keywords"> + label="GEMOC Dsl"/> @@ -221,21 +221,21 @@ diff --git a/commons/plugins/org.eclipse.gemoc.dsl.ui/pom.xml b/commons/plugins/org.eclipse.gemoc.dsl.ui/pom.xml index 78d5374a2..25a04f27d 100644 --- a/commons/plugins/org.eclipse.gemoc.dsl.ui/pom.xml +++ b/commons/plugins/org.eclipse.gemoc.dsl.ui/pom.xml @@ -5,7 +5,7 @@ ../../pom.xml org.eclipse.gemoc.commons org.eclipse.gemoc.commons.root - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT org.eclipse.gemoc.dsl.ui eclipse-plugin diff --git a/commons/plugins/org.eclipse.gemoc.dsl.ui/src/org/eclipse/gemoc/ui/contentassist/DslProposalProvider.xtend b/commons/plugins/org.eclipse.gemoc.dsl.ui/src/org/eclipse/gemoc/ui/contentassist/DslProposalProvider.xtend index db2639100..3529419aa 100644 --- a/commons/plugins/org.eclipse.gemoc.dsl.ui/src/org/eclipse/gemoc/ui/contentassist/DslProposalProvider.xtend +++ b/commons/plugins/org.eclipse.gemoc.dsl.ui/src/org/eclipse/gemoc/ui/contentassist/DslProposalProvider.xtend @@ -3,10 +3,78 @@ */ package org.eclipse.gemoc.ui.contentassist +import org.eclipse.core.runtime.IConfigurationElement +import org.eclipse.core.runtime.Platform +import org.eclipse.emf.ecore.EObject +import org.eclipse.xtext.Assignment +import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext +import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor +import org.eclipse.gemoc.dsl.Entry +import org.eclipse.gemoc.dsl.Dsl +import org.eclipse.xtext.RuleCall +import java.util.ArrayList +import org.eclipse.gemoc.xdsmlframework.api.extensions.metaprog.LanguageComponentHelper /** * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#content-assist * on how to customize the content assistant. */ class DslProposalProvider extends AbstractDslProposalProvider { + + val approachHelper = new LanguageComponentHelper() + + val IConfigurationElement[] metaprogApproach = Platform.getExtensionRegistry().getConfigurationElementsFor("org.eclipse.gemoc.gemoc_language_workbench.metaprog") + + override completeEntry_Value(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor){ + super.completeEntry_Value(model, assignment, context, acceptor) + + if(model instanceof Entry){ + if("metaprog".equals(model.key)){ + for (IConfigurationElement approach : metaprogApproach){ + var name = approach.getAttribute("name") + acceptor.accept(createCompletionProposal(name, context)) + } + } + } + } + + override complete_SPACE(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor){ + super.complete_SPACE(model, ruleCall, context, acceptor) + + var String metaprog + var ArrayList keys = new ArrayList() + var ArrayList dslKeys = new ArrayList() + + if (model instanceof Dsl){ + for (Entry entry : model.getEntries()){ + dslKeys.add(entry.key) + if("metaprog".equals(entry.key)){ + metaprog = entry.value + } + } + if(!dslKeys.contains("name")){ + var displayString = "name - name of the DSL" + acceptor.accept(createCompletionProposal("name", displayString, null, context)) + } + if(!dslKeys.contains("metaprog")){ + var String displayString = "metaprog - metaprogramming approach used" + acceptor.accept(createCompletionProposal("metaprog", displayString, null, context)) + } + + keys = approachHelper.getFullApproachKeys(metaprog) + + for(IConfigurationElement key : keys){ + var name = key.getAttribute('name') + var optional = key.getAttribute('optional') + var String displayString = name + " - " + if("true".equals(optional)){ + displayString = displayString + "(optional) " + } + displayString = displayString + key.getAttribute("description") + if(!dslKeys.contains(name)){ + acceptor.accept(createCompletionProposal(name, displayString, null,context)) + } + } + } + } } diff --git a/commons/plugins/org.eclipse.gemoc.dsl.ui/src/org/eclipse/gemoc/ui/highlighting/DslHighlightingCalculator.xtend b/commons/plugins/org.eclipse.gemoc.dsl.ui/src/org/eclipse/gemoc/ui/highlighting/DslHighlightingCalculator.xtend index 558df00f5..41466d5f3 100644 --- a/commons/plugins/org.eclipse.gemoc.dsl.ui/src/org/eclipse/gemoc/ui/highlighting/DslHighlightingCalculator.xtend +++ b/commons/plugins/org.eclipse.gemoc.dsl.ui/src/org/eclipse/gemoc/ui/highlighting/DslHighlightingCalculator.xtend @@ -11,12 +11,29 @@ import org.eclipse.xtext.ide.editor.syntaxcoloring.IHighlightedPositionAcceptor import org.eclipse.xtext.nodemodel.INode import org.eclipse.xtext.resource.XtextResource import org.eclipse.xtext.util.CancelIndicator +import org.eclipse.core.runtime.IConfigurationElement +import org.eclipse.gemoc.dsl.Dsl +import org.eclipse.gemoc.dsl.Entry +import org.eclipse.gemoc.xdsmlframework.api.extensions.metaprog.LanguageComponentHelper +import java.util.ArrayList public class DslHighlightingCalculator extends DefaultSemanticHighlightingCalculator { override provideHighlightingFor(XtextResource resource, IHighlightedPositionAcceptor acceptor, CancelIndicator cancelIndicator) { val INode root = resource.getParseResult().getRootNode(); + val LanguageComponentHelper languageHelper = new LanguageComponentHelper() + var Dsl dsl = root.getSemanticElement as Dsl + var String metaprog + var ArrayList keys = new ArrayList(); + + for(Entry entry : dsl.getEntries){ + if("metaprog".equals(entry.key)){ + metaprog = entry.value + keys = languageHelper.getFullApproachKeys(metaprog) + } + } + for (INode node : root.getAsTreeIterable()) { val EObject grammarElement = node.getGrammarElement(); @@ -26,6 +43,7 @@ public class DslHighlightingCalculator extends DefaultSemanticHighlightingCalcul var AbstractRule r = rc.getRule(); val EObject c = grammarElement.eContainer(); val EObject ccc = c.eContainer().eContainer(); + val EObject sem = node.getSemanticElement // Keys if (r.getName().equals("WORD")) { @@ -33,8 +51,27 @@ public class DslHighlightingCalculator extends DefaultSemanticHighlightingCalcul // If the WORD is assigned to a feature called "key" if (c.feature == "key") { - acceptor.addPosition(node.getOffset(), node.getLength(), - DslHighlightingConfiguration.KEY_ID); + + if(sem instanceof Entry){ + + if(!keys.empty){ + if(!keys.filter[e | (e.getAttribute('name') == sem.key) && (e.getAttribute('optional').matches("false"))].isEmpty){ + acceptor.addPosition(node.getOffset(), node.getLength(), + DslHighlightingConfiguration.KEY_PLUGIN_ID); + }else if(!keys.filter[e | (e.getAttribute('name') == sem.key) && (e.getAttribute('optional').matches("true"))].isEmpty){ + acceptor.addPosition(node.getOffset(), node.getLength(), + DslHighlightingConfiguration.OPTIONAL_KEY_PLUGIN_ID); + }else{ + acceptor.addPosition(node.getOffset(), node.getLength(), + DslHighlightingConfiguration.KEY_ID); + + } + } + else{ + acceptor.addPosition(node.getOffset(), node.getLength(), + DslHighlightingConfiguration.KEY_ID); + } + } } } } // Values diff --git a/commons/plugins/org.eclipse.gemoc.dsl.ui/src/org/eclipse/gemoc/ui/highlighting/DslHighlightingConfiguration.xtend b/commons/plugins/org.eclipse.gemoc.dsl.ui/src/org/eclipse/gemoc/ui/highlighting/DslHighlightingConfiguration.xtend index 39b4e07d7..3fa0f813e 100644 --- a/commons/plugins/org.eclipse.gemoc.dsl.ui/src/org/eclipse/gemoc/ui/highlighting/DslHighlightingConfiguration.xtend +++ b/commons/plugins/org.eclipse.gemoc.dsl.ui/src/org/eclipse/gemoc/ui/highlighting/DslHighlightingConfiguration.xtend @@ -8,6 +8,8 @@ import org.eclipse.swt.SWT class DslHighlightingConfiguration extends DefaultHighlightingConfiguration { public static final String KEY_ID = "dsl_key" + public static final String KEY_PLUGIN_ID = "plugin_key" + public static final String OPTIONAL_KEY_PLUGIN_ID = "optional_plugin_key" public static final String VALUE_ID = "dsl_value" public static final String SEPARATOR_ID = "dsl_separator" public static final String LINESEPARATOR_ID = "dsl_lineseparator" @@ -15,6 +17,8 @@ class DslHighlightingConfiguration extends DefaultHighlightingConfiguration { override configure(IHighlightingConfigurationAcceptor acceptor) { super.configure(acceptor) acceptor.acceptDefaultHighlighting(KEY_ID, "Entry key", keyTextStyle()); + acceptor.acceptDefaultHighlighting(KEY_PLUGIN_ID, "Plugin entry key", pluginKeyTextStyle()); + acceptor.acceptDefaultHighlighting(OPTIONAL_KEY_PLUGIN_ID, "Optional entry key", pluginOptionalKeyTextStyle()); acceptor.acceptDefaultHighlighting(VALUE_ID, "Entry value", valueTextStyle()); acceptor.acceptDefaultHighlighting(SEPARATOR_ID, "Entry separator", separatorTextStyle()); acceptor.acceptDefaultHighlighting(LINESEPARATOR_ID, "Line separator", lineSeparatorTextStyle()); @@ -23,9 +27,25 @@ class DslHighlightingConfiguration extends DefaultHighlightingConfiguration { def TextStyle keyTextStyle() { val TextStyle textStyle = defaultTextStyle().copy(); textStyle.setColor(new RGB(0, 26, 171)); // From org.eclipse.xtext.xbase.ui.highlighting.XbaseHighlightingConfiguration.field() + // textStyle.setColor(new RGB(171, 48, 0)); // From org.eclipse.xtext.xbase.ui.highlighting.XbaseHighlightingConfiguration.extensionMethodInvocation() return textStyle; } + + def TextStyle pluginKeyTextStyle(){ + val TextStyle textStyle = defaultTextStyle().copy() + textStyle.setColor(new RGB(145, 85, 0)) + + return textStyle + } + + def TextStyle pluginOptionalKeyTextStyle(){ + val TextStyle textStyle = defaultTextStyle().copy() + textStyle.setColor(new RGB(145, 85, 0)) + textStyle.setStyle(SWT.ITALIC); + + return textStyle + } def TextStyle valueTextStyle() { val TextStyle textStyle = defaultTextStyle().copy(); diff --git a/commons/plugins/org.eclipse.gemoc.dsl/.classpath b/commons/plugins/org.eclipse.gemoc.dsl/.classpath index 9081d4f70..95cdcb120 100644 --- a/commons/plugins/org.eclipse.gemoc.dsl/.classpath +++ b/commons/plugins/org.eclipse.gemoc.dsl/.classpath @@ -1,9 +1,9 @@ + + - - diff --git a/commons/plugins/org.eclipse.gemoc.dsl/.project b/commons/plugins/org.eclipse.gemoc.dsl/.project index 233b4c0c1..610175bb0 100644 --- a/commons/plugins/org.eclipse.gemoc.dsl/.project +++ b/commons/plugins/org.eclipse.gemoc.dsl/.project @@ -25,8 +25,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.xtext.ui.shared.xtextNature org.eclipse.jdt.core.javanature org.eclipse.pde.PluginNature diff --git a/commons/plugins/org.eclipse.gemoc.dsl/.settings/org.eclipse.jdt.core.prefs b/commons/plugins/org.eclipse.gemoc.dsl/.settings/org.eclipse.jdt.core.prefs index 0c68a61dc..7adc0fb9a 100644 --- a/commons/plugins/org.eclipse.gemoc.dsl/.settings/org.eclipse.jdt.core.prefs +++ b/commons/plugins/org.eclipse.gemoc.dsl/.settings/org.eclipse.jdt.core.prefs @@ -1,7 +1,10 @@ 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.codegen.targetPlatform=11 +org.eclipse.jdt.core.compiler.compliance=11 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.8 +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=11 diff --git a/commons/plugins/org.eclipse.gemoc.dsl/META-INF/MANIFEST.MF b/commons/plugins/org.eclipse.gemoc.dsl/META-INF/MANIFEST.MF index 264014a8d..4d226931b 100644 --- a/commons/plugins/org.eclipse.gemoc.dsl/META-INF/MANIFEST.MF +++ b/commons/plugins/org.eclipse.gemoc.dsl/META-INF/MANIFEST.MF @@ -1,8 +1,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 -Bundle-Name: org.eclipse.gemoc.dsl -Bundle-Vendor: My Company -Bundle-Version: 3.0.0.qualifier +Bundle-Name: GEMOC Commons Dsl Xtext +Bundle-Vendor: Eclipse GEMOC Project +Bundle-Version: 3.3.0.qualifier Bundle-SymbolicName: org.eclipse.gemoc.dsl; singleton:=true Bundle-ActivationPolicy: lazy Require-Bundle: org.eclipse.xtext, @@ -18,7 +18,7 @@ Require-Bundle: org.eclipse.xtext, org.eclipse.gemoc.dsl.model;bundle-version="1.0.0";visibility:=reexport, org.eclipse.gemoc.xdsmlframework.api;bundle-version="4.0.0", org.eclipse.core.runtime;bundle-version="3.14.0" -Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Bundle-RequiredExecutionEnvironment: JavaSE-11 Export-Package: org.eclipse.gemoc.serializer, org.eclipse.gemoc.scoping, org.eclipse.gemoc, diff --git a/commons/plugins/org.eclipse.gemoc.dsl/pom.xml b/commons/plugins/org.eclipse.gemoc.dsl/pom.xml index 485905ae5..cd5d7bb64 100644 --- a/commons/plugins/org.eclipse.gemoc.dsl/pom.xml +++ b/commons/plugins/org.eclipse.gemoc.dsl/pom.xml @@ -5,7 +5,7 @@ ../../pom.xml org.eclipse.gemoc.commons org.eclipse.gemoc.commons.root - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT org.eclipse.gemoc.dsl eclipse-plugin diff --git a/commons/plugins/org.eclipse.gemoc.dsl/src/org/eclipse/gemoc/validation/DslValidator.xtend b/commons/plugins/org.eclipse.gemoc.dsl/src/org/eclipse/gemoc/validation/DslValidator.xtend index f728bd60f..f29fa5787 100644 --- a/commons/plugins/org.eclipse.gemoc.dsl/src/org/eclipse/gemoc/validation/DslValidator.xtend +++ b/commons/plugins/org.eclipse.gemoc.dsl/src/org/eclipse/gemoc/validation/DslValidator.xtend @@ -9,10 +9,10 @@ import org.eclipse.gemoc.dsl.Entry import org.eclipse.xtext.validation.Check import org.eclipse.core.runtime.IConfigurationElement import java.util.ArrayList -import org.eclipse.gemoc.xdsmlframework.api.extensions.metaprog.IRuleProvider -import org.eclipse.gemoc.xdsmlframework.api.extensions.metaprog.IRule import org.eclipse.gemoc.xdsmlframework.api.extensions.metaprog.Message import org.eclipse.gemoc.xdsmlframework.api.extensions.metaprog.Severity +import org.eclipse.gemoc.xdsmlframework.api.extensions.metaprog.LanguageComponentHelper +import org.eclipse.gemoc.xdsmlframework.api.extensions.metaprog.ILanguageComponentValidator /** * This class contains custom validation rules. @@ -22,11 +22,10 @@ import org.eclipse.gemoc.xdsmlframework.api.extensions.metaprog.Severity class DslValidator extends AbstractDslValidator { public static val MISSING_NAME = 'missingName' + public static val MISSING_KEY = 'missingKey' public static val DUPLICATEKEY = 'duplicateKey' - - public val IConfigurationElement[] exts = org.eclipse.core.runtime.Platform.getExtensionRegistry().getConfigurationElementsFor("org.eclipse.gemoc.gemoc_language_workbench.metaprog") - public var IRuleProvider providedValidator + public val LanguageComponentHelper languageHelper = new LanguageComponentHelper(); @Check def checkDSLHasName(Dsl dsl) { @@ -46,54 +45,37 @@ class DslValidator extends AbstractDslValidator { DUPLICATEKEY) } } - - - @Check - def checkForDSL(Dsl dsl) { - for(IRule rule : providedValidator.getValidationRules()) { - var message = rule.execute(dsl) - - switch message.getSeverity() { - - case message.getSeverity() == Severity.ERROR : error(message.getContent(), - DslPackage.Literals.DSL__NAME - ) - case message.getSeverity() == Severity.WARNING : warning(message.getContent(), - DslPackage.Literals.DSL__NAME - ) - case message.getSeverity() == Severity.INFO : info(message.getContent(), - DslPackage.Literals.DSL__NAME - ) - default : message = new Message() - } - } - } - - // Performs checks provided by the required metaprogramming approach's validator for each entry in the dsl file @Check def checkForEntry(Entry entry) { - for(IRule rule : providedValidator.getValidationRules()) { - var message = rule.execute(entry) + var dsl = entry.eContainer + + if(dsl instanceof Dsl){ + for(IConfigurationElement key : getKeys(dsl)) { + val ILanguageComponentValidator rule = key.createExecutableExtension("validationRule") as ILanguageComponentValidator + var message = rule.validate(entry) - switch message.getSeverity() { + switch message.getSeverity() { - case Severity.ERROR : error(message.getContent(), + case Severity.ERROR : error(message.getContent(), DslPackage.Literals.ENTRY__VALUE ) - case Severity.WARNING : warning(message.getContent(), + case Severity.WARNING : warning(message.getContent(), DslPackage.Literals.ENTRY__VALUE ) - case Severity.INFO : info(message.getContent(), + case Severity.INFO : info(message.getContent(), DslPackage.Literals.ENTRY__VALUE ) - case Severity.DEFAULT : message = new Message() + case Severity.DEFAULT : message = new Message() - default : print("Unknown severity") + default : print("Unknown severity") + } } } + + } @@ -105,22 +87,57 @@ class DslValidator extends AbstractDslValidator { } @Check - def checkForApproach(Entry entry){ - if(entry.key == "metaprog") { - for(IConfigurationElement elem : exts) { - if(entry.value.equals(elem.getAttribute("name"))) { - providedValidator = elem.createExecutableExtension("validator") as IRuleProvider + def checkApproach(Entry entry) { + + var ArrayList approachesList = new ArrayList() + + if("metaprog".matches(entry.key)){ + + var exts = getExtensions() + + for(IConfigurationElement elem : exts){ + approachesList.add(elem.getAttribute("name")) } - } - - var ArrayList approachesList = new ArrayList() - for (IConfigurationElement e : exts) { - approachesList.add(e.getAttribute("name")) - } - if(!approachesList.contains(entry.value)){ + + if(!approachesList.contains(entry.getValue())){ error("Unknown metaprogramming approach", DslPackage.Literals.ENTRY__VALUE) + } + } + } + + + @Check + def checkMissingKeys(Dsl dsl){ + + var ArrayList dslKeys = new ArrayList() + for(Entry entry : dsl.getEntries){ + dslKeys.add(entry.getKey) + } + var keys = getKeys(dsl) + + for(IConfigurationElement elem : keys){ + var name = elem.getAttribute("name") + if((!dslKeys.contains(name)) && ("false".matches(elem.getAttribute("optional")))){ + error("Missing entry " + name + " in the dsl file.", DslPackage.Literals.DSL__NAME, MISSING_KEY) } + } } - + + def getExtensions(){ + return org.eclipse.core.runtime.Platform.getExtensionRegistry().getConfigurationElementsFor("org.eclipse.gemoc.gemoc_language_workbench.metaprog") + } + + def getApproach(Dsl dsl){ + for (Entry entry : dsl.getEntries()){ + if("metaprog".matches(entry.getKey)){ + return entry.getValue + } + } + } + + def getKeys(Dsl dsl){ + return languageHelper.getFullApproachKeys(getApproach(dsl)) + } + } diff --git a/commons/plugins/org.eclipse.gemoc.groovy/.project b/commons/plugins/org.eclipse.gemoc.groovy/.project index 93a3269b7..b36512bb9 100644 --- a/commons/plugins/org.eclipse.gemoc.groovy/.project +++ b/commons/plugins/org.eclipse.gemoc.groovy/.project @@ -20,8 +20,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature diff --git a/commons/plugins/org.eclipse.gemoc.groovy/pom.xml b/commons/plugins/org.eclipse.gemoc.groovy/pom.xml index 4e0ef4276..0b3fce656 100644 --- a/commons/plugins/org.eclipse.gemoc.groovy/pom.xml +++ b/commons/plugins/org.eclipse.gemoc.groovy/pom.xml @@ -17,7 +17,7 @@ ../../pom.xml org.eclipse.gemoc.commons org.eclipse.gemoc.commons.root - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT org.eclipse.gemoc.groovy diff --git a/commons/plugins/org.eclipse.gemoc.timeline/.project b/commons/plugins/org.eclipse.gemoc.timeline/.project index 304a02333..b5add1eaf 100644 --- a/commons/plugins/org.eclipse.gemoc.timeline/.project +++ b/commons/plugins/org.eclipse.gemoc.timeline/.project @@ -25,8 +25,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature net.sf.eclipsecs.core.CheckstyleNature diff --git a/commons/plugins/org.eclipse.gemoc.timeline/pom.xml b/commons/plugins/org.eclipse.gemoc.timeline/pom.xml index 27cbee6e4..c0277ea26 100644 --- a/commons/plugins/org.eclipse.gemoc.timeline/pom.xml +++ b/commons/plugins/org.eclipse.gemoc.timeline/pom.xml @@ -21,7 +21,7 @@ org.eclipse.gemoc.commons.root org.eclipse.gemoc.commons - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT ../../ org.eclipse.gemoc.concurrentviews diff --git a/commons/plugins/org.jaxen/.project b/commons/plugins/org.jaxen/.project index 3b33919b1..3526a6ee9 100644 --- a/commons/plugins/org.jaxen/.project +++ b/commons/plugins/org.jaxen/.project @@ -20,8 +20,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature diff --git a/commons/plugins/org.jaxen/pom.xml b/commons/plugins/org.jaxen/pom.xml index 2043ddb05..ae24bdf08 100644 --- a/commons/plugins/org.jaxen/pom.xml +++ b/commons/plugins/org.jaxen/pom.xml @@ -8,7 +8,7 @@ org.eclipse.gemoc.commons.root org.eclipse.gemoc.commons - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT ../../ diff --git a/commons/plugins/org.jdom2/.project b/commons/plugins/org.jdom2/.project index f389b8ea9..3d1ac0eb5 100644 --- a/commons/plugins/org.jdom2/.project +++ b/commons/plugins/org.jdom2/.project @@ -20,8 +20,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature diff --git a/commons/plugins/org.jdom2/pom.xml b/commons/plugins/org.jdom2/pom.xml index fa180b662..406976c08 100644 --- a/commons/plugins/org.jdom2/pom.xml +++ b/commons/plugins/org.jdom2/pom.xml @@ -8,7 +8,7 @@ org.eclipse.gemoc.commons.root org.eclipse.gemoc.commons - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT ../../ diff --git a/commons/plugins/pom.xml b/commons/plugins/pom.xml new file mode 100644 index 000000000..45784cd90 --- /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.3.0-SNAPSHOT + .. + + + + org.eclipse.gemoc.commons.utils + + diff --git a/commons/pom.xml b/commons/pom.xml index 2c6fc19dd..caae344d6 100644 --- a/commons/pom.xml +++ b/commons/pom.xml @@ -7,7 +7,7 @@ org.eclipse.gemoc org.eclipse.gemoc.modeldebugging.root - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT .. @@ -34,6 +34,9 @@ plugins/org.jaxen plugins/org.jdom2 + + plugins + releng diff --git a/commons/releng/org.eclipse.gemoc.commons.3rdparty.feature/feature.xml b/commons/releng/org.eclipse.gemoc.commons.3rdparty.feature/feature.xml index def59d2ce..bab8ee35c 100644 --- a/commons/releng/org.eclipse.gemoc.commons.3rdparty.feature/feature.xml +++ b/commons/releng/org.eclipse.gemoc.commons.3rdparty.feature/feature.xml @@ -12,7 +12,7 @@ @@ -45,6 +45,7 @@ http://www.eclipse.org/legal/epl-v10.html install-size="0" version="2.0.6.qualifier" unpack="false"/> + - diff --git a/commons/releng/org.eclipse.gemoc.commons.eclipse.feature/feature.xml b/commons/releng/org.eclipse.gemoc.commons.eclipse.feature/feature.xml index 1437da82a..cb1aae74d 100644 --- a/commons/releng/org.eclipse.gemoc.commons.eclipse.feature/feature.xml +++ b/commons/releng/org.eclipse.gemoc.commons.eclipse.feature/feature.xml @@ -12,7 +12,7 @@ diff --git a/commons/releng/org.eclipse.gemoc.commons.eclipse.jdt.autosrcfolder.feature/feature.xml b/commons/releng/org.eclipse.gemoc.commons.eclipse.jdt.autosrcfolder.feature/feature.xml index ceedf8944..07975d60d 100644 --- a/commons/releng/org.eclipse.gemoc.commons.eclipse.jdt.autosrcfolder.feature/feature.xml +++ b/commons/releng/org.eclipse.gemoc.commons.eclipse.jdt.autosrcfolder.feature/feature.xml @@ -12,7 +12,7 @@ diff --git a/commons/releng/org.eclipse.gemoc.commons.feature/feature.xml b/commons/releng/org.eclipse.gemoc.commons.feature/feature.xml index 9b22fc90a..73bf0adaa 100644 --- a/commons/releng/org.eclipse.gemoc.commons.feature/feature.xml +++ b/commons/releng/org.eclipse.gemoc.commons.feature/feature.xml @@ -12,7 +12,7 @@ diff --git a/commons/releng/org.eclipse.gemoc.dsl.feature/feature.xml b/commons/releng/org.eclipse.gemoc.dsl.feature/feature.xml index d9c0f5cd0..bf7041062 100644 --- a/commons/releng/org.eclipse.gemoc.dsl.feature/feature.xml +++ b/commons/releng/org.eclipse.gemoc.dsl.feature/feature.xml @@ -12,7 +12,7 @@ diff --git a/commons/releng/org.eclipse.gemoc.gexpressions.feature/feature.xml b/commons/releng/org.eclipse.gemoc.gexpressions.feature/feature.xml index 5d9a8a736..ca9e77964 100644 --- a/commons/releng/org.eclipse.gemoc.gexpressions.feature/feature.xml +++ b/commons/releng/org.eclipse.gemoc.gexpressions.feature/feature.xml @@ -9,11 +9,10 @@ Contributors: Inria - initial API and implementation --> - @@ -23,7 +22,7 @@ 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 - + org.eclipse.gemoc.commons org.eclipse.gemoc.commons.root - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT .. diff --git a/commons/tests/org.eclipse.gemoc.dsl.tests/.project b/commons/tests/org.eclipse.gemoc.dsl.tests/.project index d042ded8b..aac51fba3 100644 --- a/commons/tests/org.eclipse.gemoc.dsl.tests/.project +++ b/commons/tests/org.eclipse.gemoc.dsl.tests/.project @@ -25,8 +25,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.xtext.ui.shared.xtextNature org.eclipse.jdt.core.javanature org.eclipse.pde.PluginNature diff --git a/commons/tests/org.eclipse.gemoc.dsl.tests/META-INF/MANIFEST.MF b/commons/tests/org.eclipse.gemoc.dsl.tests/META-INF/MANIFEST.MF index 610163c6d..3ac6a6882 100644 --- a/commons/tests/org.eclipse.gemoc.dsl.tests/META-INF/MANIFEST.MF +++ b/commons/tests/org.eclipse.gemoc.dsl.tests/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: org.eclipse.gemoc.dsl.tests Bundle-SymbolicName: org.eclipse.gemoc.dsl.tests;singleton:=true -Bundle-Version: 3.0.0.qualifier +Bundle-Version: 3.3.0.qualifier Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy Export-Package: org.eclipse.gemoc.tests;x-internal=true diff --git a/commons/tests/org.eclipse.gemoc.dsl.tests/pom.xml b/commons/tests/org.eclipse.gemoc.dsl.tests/pom.xml index d64b0f60b..e02c896e6 100644 --- a/commons/tests/org.eclipse.gemoc.dsl.tests/pom.xml +++ b/commons/tests/org.eclipse.gemoc.dsl.tests/pom.xml @@ -5,7 +5,7 @@ ../../pom.xml org.eclipse.gemoc.commons org.eclipse.gemoc.commons.root - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT org.eclipse.gemoc.dsl.tests eclipse-test-plugin diff --git a/framework/execution_framework/.project b/framework/execution_framework/.project index d14579118..f78700672 100644 --- a/framework/execution_framework/.project +++ b/framework/execution_framework/.project @@ -5,7 +5,13 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.behavioralinterface/META-INF/MANIFEST.MF b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.behavioralinterface/META-INF/MANIFEST.MF index bc17a7364..1762cd2bd 100644 --- a/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.behavioralinterface/META-INF/MANIFEST.MF +++ b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.behavioralinterface/META-INF/MANIFEST.MF @@ -15,7 +15,7 @@ Require-Bundle: org.eclipse.xtext, org.eclipse.xtext.util, org.eclipse.xtend.lib;bundle-version="2.14.0", org.eclipse.emf.common, - org.objectweb.asm;bundle-version="[6.1.1,6.2.0)";resolution:=optional + org.objectweb.asm;bundle-version="[6.1.1,8.0.0)";resolution:=optional Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Export-Package: org.eclipse.gemoc.executionframework.behavioralinterface.validation, org.eclipse.gemoc.executionframework.behavioralinterface, 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.debugger/src/org/eclipse/gemoc/executionframework/debugger/OmniscientGenericSequentialModelDebugger.xtend b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.debugger/src/org/eclipse/gemoc/executionframework/debugger/OmniscientGenericSequentialModelDebugger.xtend index 770ff1eea..2514c637a 100644 --- a/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.debugger/src/org/eclipse/gemoc/executionframework/debugger/OmniscientGenericSequentialModelDebugger.xtend +++ b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.debugger/src/org/eclipse/gemoc/executionframework/debugger/OmniscientGenericSequentialModelDebugger.xtend @@ -31,7 +31,7 @@ import org.eclipse.jface.dialogs.ErrorDialog class OmniscientGenericSequentialModelDebugger extends GenericSequentialModelDebugger implements ITraceViewListener { - var ITraceExplorer, State, TracedObject, Dimension, Value> traceExplorer + var protected ITraceExplorer, State, TracedObject, Dimension, Value> traceExplorer var steppingOverStackFrameIndex = -1 diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.engine.model/pomfirst/pom.xml b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.engine.model/pomfirst/pom.xml new file mode 100644 index 000000000..3a9609e6e --- /dev/null +++ b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.engine.model/pomfirst/pom.xml @@ -0,0 +1,76 @@ + + + 4.0.0 + + org.eclipse.gemoc.pomfirst + org.eclipse.gemoc.executionframework.engine.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.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/ + + + diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.engine.ui/src/org/eclipse/gemoc/executionframework/engine/ui/launcher/AbstractSequentialGemocLauncher.java b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.engine.ui/src/org/eclipse/gemoc/executionframework/engine/ui/launcher/AbstractSequentialGemocLauncher.java index c126c9ddf..a8de73171 100644 --- a/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.engine.ui/src/org/eclipse/gemoc/executionframework/engine/ui/launcher/AbstractSequentialGemocLauncher.java +++ b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.engine.ui/src/org/eclipse/gemoc/executionframework/engine/ui/launcher/AbstractSequentialGemocLauncher.java @@ -31,15 +31,15 @@ import org.eclipse.gemoc.commons.eclipse.messagingsystem.api.MessagingSystem; import org.eclipse.gemoc.dsl.debug.ide.adapter.IDSLCurrentInstructionListener; import org.eclipse.gemoc.executionframework.engine.commons.EngineContextException; +import org.eclipse.gemoc.executionframework.engine.commons.sequential.ISequentialModelExecutionContext; +import org.eclipse.gemoc.executionframework.engine.commons.sequential.ISequentialRunConfiguration; import org.eclipse.gemoc.executionframework.engine.core.RunConfiguration; import org.eclipse.gemoc.executionframework.engine.ui.Activator; import org.eclipse.gemoc.executionframework.extensions.sirius.services.AbstractGemocAnimatorServices; import org.eclipse.gemoc.executionframework.extensions.sirius.services.AbstractGemocDebuggerServices; import org.eclipse.gemoc.xdsmlframework.api.core.EngineStatus.RunStatus; import org.eclipse.gemoc.xdsmlframework.api.core.ExecutionMode; -import org.eclipse.gemoc.xdsmlframework.api.core.IExecutionContext; import org.eclipse.gemoc.xdsmlframework.api.core.IExecutionEngine; -import org.eclipse.gemoc.xdsmlframework.api.core.IRunConfiguration; import org.eclipse.gemoc.xdsmlframework.api.engine_addon.IEngineAddon; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ISelection; @@ -47,8 +47,7 @@ import org.eclipse.ui.IEditorPart; import org.eclipse.ui.PlatformUI; -abstract public class AbstractSequentialGemocLauncher, R extends IRunConfiguration> - extends AbstractGemocLauncher { +abstract public class AbstractSequentialGemocLauncher extends AbstractGemocLauncher> { // warning this MODEL_ID must be the same as the one in the ModelLoader in order // to enable correctly the breakpoints @@ -59,16 +58,16 @@ abstract public class AbstractSequentialGemocLauncher _executionEngine; + private IExecutionEngine> _executionEngine; protected final static String executionStartedMessage = "Execution started successfully."; - protected abstract IExecutionEngine createExecutionEngine(R runConfiguration, ExecutionMode executionMode) + protected abstract IExecutionEngine> createExecutionEngine(ISequentialRunConfiguration runConfiguration, ExecutionMode executionMode) throws CoreException, EngineContextException; protected abstract void prepareViews(); - protected abstract R parseLaunchConfiguration(ILaunchConfiguration configuration) throws CoreException; + protected abstract ISequentialRunConfiguration parseLaunchConfiguration(ILaunchConfiguration configuration) throws CoreException; protected abstract MessagingSystem getMessagingSystem(); @@ -91,7 +90,7 @@ public void run() { prepareViews(); } }); - R runConfiguration = parseLaunchConfiguration(configuration); + ISequentialRunConfiguration runConfiguration = parseLaunchConfiguration(configuration); // We detect if we are running in debug mode or not ExecutionMode executionMode = null; @@ -260,7 +259,7 @@ protected final ILaunchConfiguration[] createLaunchConfiguration(IResource file, } @Override - public IExecutionEngine getExecutionEngine() { + public IExecutionEngine> getExecutionEngine() { return _executionEngine; } 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/plugins/org.eclipse.gemoc.executionframework.engine/src/org/eclipse/gemoc/executionframework/engine/commons/sequential/ISequentialModelExecutionContext.java b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.engine/src/org/eclipse/gemoc/executionframework/engine/commons/sequential/ISequentialModelExecutionContext.java new file mode 100644 index 000000000..9c5140d74 --- /dev/null +++ b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.engine/src/org/eclipse/gemoc/executionframework/engine/commons/sequential/ISequentialModelExecutionContext.java @@ -0,0 +1,9 @@ +package org.eclipse.gemoc.executionframework.engine.commons.sequential; + +import org.eclipse.gemoc.xdsmlframework.api.core.IExecutionContext; +import org.eclipse.gemoc.xdsmlframework.api.core.IExecutionPlatform; +import org.eclipse.gemoc.xdsmlframework.api.extensions.languages.LanguageDefinitionExtension; + +public interface ISequentialModelExecutionContext

extends IExecutionContext { + +} diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.engine/src/org/eclipse/gemoc/executionframework/engine/commons/sequential/SequentialModelExecutionContext.java b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.engine/src/org/eclipse/gemoc/executionframework/engine/commons/sequential/SequentialModelExecutionContext.java new file mode 100644 index 000000000..1e7fdc6bb --- /dev/null +++ b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.engine/src/org/eclipse/gemoc/executionframework/engine/commons/sequential/SequentialModelExecutionContext.java @@ -0,0 +1,14 @@ +package org.eclipse.gemoc.executionframework.engine.commons.sequential; + +import org.eclipse.gemoc.executionframework.engine.commons.DefaultExecutionPlatform; +import org.eclipse.gemoc.executionframework.engine.commons.EngineContextException; +import org.eclipse.gemoc.executionframework.engine.commons.GenericModelExecutionContext; +import org.eclipse.gemoc.xdsmlframework.api.core.ExecutionMode; + +public class SequentialModelExecutionContext extends GenericModelExecutionContext implements ISequentialModelExecutionContext { + + public SequentialModelExecutionContext(ISequentialRunConfiguration runConfiguration, ExecutionMode executionMode) throws EngineContextException { + super(runConfiguration, executionMode); + } + +} diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.event.model.edit/plugin.properties b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.event.model.edit/plugin.properties index 891e729b2..21c01ce92 100644 --- a/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.event.model.edit/plugin.properties +++ b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.event.model.edit/plugin.properties @@ -1,7 +1,7 @@ # -pluginName = Event Model Edit Support -providerName = www.example.org +pluginName = GEMOC Execution Framework Event Model Edit Support +providerName = Eclipse GEMOC Project _UI_CreateChild_text = {0} _UI_CreateChild_text2 = {1} {0} diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.event.model.editor/plugin.properties b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.event.model.editor/plugin.properties index be8a0cc32..d7817602d 100644 --- a/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.event.model.editor/plugin.properties +++ b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.event.model.editor/plugin.properties @@ -1,7 +1,7 @@ # -pluginName = Event Model Editor -providerName = www.example.org +pluginName = GEMOC Execution Framework Event Model Editor +providerName = Eclipse GEMOC Project _UI_EventEditor_menu = &Event Editor diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.event.model/plugin.properties b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.event.model/plugin.properties index 4fe0c177b..9c56f2edc 100644 --- a/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.event.model/plugin.properties +++ b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.event.model/plugin.properties @@ -1,4 +1,4 @@ # -pluginName = Event Model -providerName = www.example.org +pluginName = GEMOC Execution Framework Event Model +providerName = Eclipse GEMOC Project diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.extensions.sirius/src/org/eclipse/gemoc/executionframework/extensions/sirius/debug/DebugSessionFactory.java b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.extensions.sirius/src/org/eclipse/gemoc/executionframework/extensions/sirius/debug/DebugSessionFactory.java index 1bb7c2a72..9ac92c18c 100644 --- a/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.extensions.sirius/src/org/eclipse/gemoc/executionframework/extensions/sirius/debug/DebugSessionFactory.java +++ b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.extensions.sirius/src/org/eclipse/gemoc/executionframework/extensions/sirius/debug/DebugSessionFactory.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2017 THALES GLOBAL SERVICES. + * Copyright (c) 2008, 2020 THALES GLOBAL SERVICES. * 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 @@ -29,7 +29,7 @@ import org.eclipse.sirius.business.api.session.Session; import org.eclipse.sirius.business.internal.session.danalysis.DAnalysisSessionImpl; import org.eclipse.sirius.common.tools.api.editing.EditingDomainFactoryService; -import org.eclipse.sirius.common.tools.api.util.SiriusCrossReferenceAdapterImpl; +import org.eclipse.sirius.common.tools.api.util.SiriusCrossReferenceAdapter; import org.eclipse.sirius.tools.internal.resource.ResourceSetUtil; import org.eclipse.sirius.viewpoint.DAnalysis; import org.eclipse.sirius.viewpoint.SiriusPlugin; @@ -65,7 +65,7 @@ public Session createSession(ResourceSet set, final URI sessionResourceURI, IPro // Configure the resource set, its is done here and not before the // editing domain creation which could provide its own resource set. - transactionalEditingDomain.getResourceSet().eAdapters().add(new SiriusCrossReferenceAdapterImpl()); + transactionalEditingDomain.getResourceSet().eAdapters().add(new SiriusCrossReferenceAdapter()); // Create or load the session. boolean alreadyExistingResource = exists(sessionResourceURI, transactionalEditingDomain.getResourceSet()); diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.value.model.edit/plugin.properties b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.value.model.edit/plugin.properties index 707961485..16e3f365d 100644 --- a/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.value.model.edit/plugin.properties +++ b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.value.model.edit/plugin.properties @@ -1,7 +1,7 @@ # -pluginName = Value Model Edit Support -providerName = www.example.org +pluginName = GEMOC Execution Framework Value Model Edit Support +providerName = Eclipse GEMOC Project _UI_CreateChild_text = {0} _UI_CreateChild_text2 = {1} {0} diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.value.model.editor/plugin.properties b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.value.model.editor/plugin.properties index 21a308255..b4b8c4709 100644 --- a/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.value.model.editor/plugin.properties +++ b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.value.model.editor/plugin.properties @@ -1,7 +1,7 @@ # -pluginName = Value Model Editor -providerName = www.example.org +pluginName = GEMOC Execution Framework Value Model Editor +providerName = Eclipse GEMOC Project _UI_ValueEditor_menu = &Value Editor diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.value.model/plugin.properties b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.value.model/plugin.properties index 9f6facabb..16dbc16e1 100644 --- a/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.value.model/plugin.properties +++ b/framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.value.model/plugin.properties @@ -1,4 +1,4 @@ # -pluginName = Value Model -providerName = www.example.org +pluginName = GEMOC Execution Framework Value Model +providerName = Eclipse GEMOC Project diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.debugger.mep/.project b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.debugger.mep/.project new file mode 100644 index 000000000..ef09ee804 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.debugger.mep/.project @@ -0,0 +1,29 @@ + + + org.eclipse.gemoc.executionframework.debugger.mep + + + + + + org.eclipse.xtext.ui.shared.xtextBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.xtext.ui.shared.xtextNature + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/.classpath b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/.classpath new file mode 100644 index 000000000..5e8a55fef --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/.classpath @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/.project b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/.project new file mode 100644 index 000000000..faa7a3760 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/.project @@ -0,0 +1,29 @@ + + + org.eclipse.gemoc.executionframework.engine.headless + + + + + + org.eclipse.xtext.ui.shared.xtextBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.xtext.ui.shared.xtextNature + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/.settings/org.eclipse.core.resources.prefs b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 000000000..f9fe34593 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/test/java=UTF-8 +encoding/=UTF-8 diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/.settings/org.eclipse.jdt.core.prefs b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..b8947ec6f --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/.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.engine.headless/.settings/org.eclipse.m2e.core.prefs b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 000000000..f897a7f1c --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/.settings/org.eclipse.xtend.core.Xtend.prefs b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/.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.engine.headless/.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.engine.headless/pom.xml b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/pom.xml new file mode 100644 index 000000000..c57a8d748 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/pom.xml @@ -0,0 +1,63 @@ + + 4.0.0 + + org.eclipse.gemoc.executionframework + org.eclipse.gemoc.executionframework.engine.headless + 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.gemoc.modeldebugging.framework.commons + org.eclipse.gemoc.xdsmlframework.api + 4.0.0-SNAPSHOT + + + org.eclipse.gemoc.pomfirst + org.eclipse.gemoc.executionframework.engine + 4.0.0-SNAPSHOT + + + org.eclipse.gemoc.pomfirst + org.eclipse.gemoc.executionframework.debugger + 4.0.0-SNAPSHOT + + + org.eclipse.gemoc.commons + org.eclipse.gemoc.commons.eclipse.pde + 3.0.0-SNAPSHOT + + + org.slf4j + slf4j-api + 1.7.25 + + + org.eclipse.gemoc.multidimensional_trace_management + org.eclipse.gemoc.trace.gemoc + 3.0.1-SNAPSHOT + + + + + + + + + + diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/src/main/java/org/eclipse/gemoc/executionframework/engine/headless/AbstractHeadlessExecutionContext.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/src/main/java/org/eclipse/gemoc/executionframework/engine/headless/AbstractHeadlessExecutionContext.java new file mode 100644 index 000000000..b9ef57e22 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/src/main/java/org/eclipse/gemoc/executionframework/engine/headless/AbstractHeadlessExecutionContext.java @@ -0,0 +1,86 @@ +package org.eclipse.gemoc.executionframework.engine.headless; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.gemoc.executionframework.engine.commons.EngineContextException; +import org.eclipse.gemoc.trace.commons.model.trace.MSEModel; +import org.eclipse.gemoc.xdsmlframework.api.core.ExecutionMode; +import org.eclipse.gemoc.xdsmlframework.api.core.IExecutionContext; +import org.eclipse.gemoc.xdsmlframework.api.core.IExecutionWorkspace; +import org.eclipse.gemoc.xdsmlframework.api.core.IRunConfiguration; +import org.eclipse.gemoc.xdsmlframework.api.extensions.languages.LanguageDefinitionExtension; +import org.osgi.framework.Bundle; + +public abstract class AbstractHeadlessExecutionContext implements IExecutionContext { + + protected R _runConfiguration; + + protected HeadlessExecutionPlatform _executionPlatform; + + protected L _languageDefinition; + + protected Resource _resourceModel; + + protected ExecutionMode _executionMode; + + protected Bundle _dslBundle; + + protected IExecutionWorkspace _executionWorkspace; + + + public AbstractHeadlessExecutionContext(R runConfiguration, ExecutionMode executionMode, L languageDefinitionExtension, IExecutionWorkspace executionWorkspace, HeadlessExecutionPlatform executionPlatform) throws EngineContextException { + _runConfiguration = runConfiguration; + _executionMode = executionMode; + _executionWorkspace = executionWorkspace; + _languageDefinition = languageDefinitionExtension; + //_dslBundle = DslHelper.getDslBundle(_runConfiguration.getLanguageName()); + _executionPlatform = executionPlatform; + } + + @Override + public void dispose() { + _executionPlatform.dispose(); + } + + @Override + public IExecutionWorkspace getWorkspace() { + return _executionWorkspace; + } + + @Override + public Resource getResourceModel() { + return _resourceModel; + } + + @Override + public ExecutionMode getExecutionMode() { + return _executionMode; + } + + @Override + public MSEModel getMSEModel() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Bundle getDslBundle() { + return _dslBundle; + } + + @Override + public L getLanguageDefinitionExtension() { + return _languageDefinition; + } + + @Override + public HeadlessExecutionPlatform getExecutionPlatform() { + return _executionPlatform; + } + + @Override + public R getRunConfiguration() { + return _runConfiguration; + } + + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/src/main/java/org/eclipse/gemoc/executionframework/engine/headless/AbstractSequentialHeadlessExecutionContext.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/src/main/java/org/eclipse/gemoc/executionframework/engine/headless/AbstractSequentialHeadlessExecutionContext.java new file mode 100644 index 000000000..35fc5ff94 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/src/main/java/org/eclipse/gemoc/executionframework/engine/headless/AbstractSequentialHeadlessExecutionContext.java @@ -0,0 +1,18 @@ +package org.eclipse.gemoc.executionframework.engine.headless; + +import org.eclipse.gemoc.executionframework.engine.commons.EngineContextException; +import org.eclipse.gemoc.executionframework.engine.commons.sequential.ISequentialModelExecutionContext; +import org.eclipse.gemoc.executionframework.engine.commons.sequential.ISequentialRunConfiguration; +import org.eclipse.gemoc.xdsmlframework.api.core.ExecutionMode; +import org.eclipse.gemoc.xdsmlframework.api.core.IExecutionWorkspace; +import org.eclipse.gemoc.xdsmlframework.api.extensions.languages.LanguageDefinitionExtension; + +public abstract class AbstractSequentialHeadlessExecutionContext extends AbstractHeadlessExecutionContext implements ISequentialModelExecutionContext { + + public AbstractSequentialHeadlessExecutionContext(ISequentialRunConfiguration runConfiguration, ExecutionMode executionMode, + LanguageDefinitionExtension languageDefinitionExtension, IExecutionWorkspace executionWorkspace, HeadlessExecutionPlatform executionPlatform) + throws EngineContextException { + super(runConfiguration, executionMode, languageDefinitionExtension, executionWorkspace, executionPlatform); + } + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/src/main/java/org/eclipse/gemoc/executionframework/engine/headless/FakeBundleContext.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/src/main/java/org/eclipse/gemoc/executionframework/engine/headless/FakeBundleContext.java new file mode 100644 index 000000000..bbbc439e5 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/src/main/java/org/eclipse/gemoc/executionframework/engine/headless/FakeBundleContext.java @@ -0,0 +1,193 @@ +package org.eclipse.gemoc.executionframework.engine.headless; + +import java.io.File; +import java.io.InputStream; +import java.util.Collection; +import java.util.Dictionary; + +import org.osgi.framework.Bundle; +import org.osgi.framework.BundleContext; +import org.osgi.framework.BundleException; +import org.osgi.framework.BundleListener; +import org.osgi.framework.Filter; +import org.osgi.framework.FrameworkListener; +import org.osgi.framework.InvalidSyntaxException; +import org.osgi.framework.ServiceFactory; +import org.osgi.framework.ServiceListener; +import org.osgi.framework.ServiceObjects; +import org.osgi.framework.ServiceReference; +import org.osgi.framework.ServiceRegistration; + +public class FakeBundleContext implements BundleContext { + + @Override + public String getProperty(String key) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Bundle getBundle() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Bundle installBundle(String location, InputStream input) throws BundleException { + // TODO Auto-generated method stub + return null; + } + + @Override + public Bundle installBundle(String location) throws BundleException { + // TODO Auto-generated method stub + return null; + } + + @Override + public Bundle getBundle(long id) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Bundle[] getBundles() { + // TODO Auto-generated method stub + return null; + } + + @Override + public void addServiceListener(ServiceListener listener, String filter) throws InvalidSyntaxException { + // TODO Auto-generated method stub + + } + + @Override + public void addServiceListener(ServiceListener listener) { + // TODO Auto-generated method stub + + } + + @Override + public void removeServiceListener(ServiceListener listener) { + // TODO Auto-generated method stub + + } + + @Override + public void addBundleListener(BundleListener listener) { + // TODO Auto-generated method stub + + } + + @Override + public void removeBundleListener(BundleListener listener) { + // TODO Auto-generated method stub + + } + + @Override + public void addFrameworkListener(FrameworkListener listener) { + // TODO Auto-generated method stub + + } + + @Override + public void removeFrameworkListener(FrameworkListener listener) { + // TODO Auto-generated method stub + + } + + @Override + public ServiceRegistration registerService(String[] clazzes, Object service, Dictionary properties) { + // TODO Auto-generated method stub + return null; + } + + @Override + public ServiceRegistration registerService(String clazz, Object service, Dictionary properties) { + // TODO Auto-generated method stub + return null; + } + + @Override + public ServiceRegistration registerService(Class clazz, S service, Dictionary properties) { + // TODO Auto-generated method stub + return null; + } + + @Override + public ServiceRegistration registerService(Class clazz, ServiceFactory factory, + Dictionary properties) { + // TODO Auto-generated method stub + return null; + } + + @Override + public ServiceReference[] getServiceReferences(String clazz, String filter) throws InvalidSyntaxException { + // TODO Auto-generated method stub + return null; + } + + @Override + public ServiceReference[] getAllServiceReferences(String clazz, String filter) throws InvalidSyntaxException { + // TODO Auto-generated method stub + return null; + } + + @Override + public ServiceReference getServiceReference(String clazz) { + // TODO Auto-generated method stub + return null; + } + + @Override + public ServiceReference getServiceReference(Class clazz) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Collection> getServiceReferences(Class clazz, String filter) + throws InvalidSyntaxException { + // TODO Auto-generated method stub + return null; + } + + @Override + public S getService(ServiceReference reference) { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean ungetService(ServiceReference reference) { + // TODO Auto-generated method stub + return false; + } + + @Override + public ServiceObjects getServiceObjects(ServiceReference reference) { + // TODO Auto-generated method stub + return null; + } + + @Override + public File getDataFile(String filename) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Filter createFilter(String filter) throws InvalidSyntaxException { + // TODO Auto-generated method stub + return null; + } + + @Override + public Bundle getBundle(String location) { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/src/main/java/org/eclipse/gemoc/executionframework/engine/headless/FakeOSGI.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/src/main/java/org/eclipse/gemoc/executionframework/engine/headless/FakeOSGI.java new file mode 100644 index 000000000..c95257854 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/src/main/java/org/eclipse/gemoc/executionframework/engine/headless/FakeOSGI.java @@ -0,0 +1,103 @@ +package org.eclipse.gemoc.executionframework.engine.headless; + +import java.util.ResourceBundle; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IExtensionRegistry; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.RegistryFactory; +import org.eclipse.core.runtime.Status; +import org.eclipse.core.runtime.spi.IRegistryProvider; +import org.eclipse.core.runtime.spi.RegistryStrategy; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class FakeOSGI { + private static final Logger LOGGER = LoggerFactory.getLogger("FakeOSGI"); + + + public static void start() { + // If there isn't already a registry... + // + IExtensionRegistry registry = RegistryFactory.getRegistry(); + if (registry == null) + { + // Create a new registry. + // + final IExtensionRegistry newRegistry = + RegistryFactory.createRegistry + (new RegistryStrategy(null, null) + { + @Override + public void log(IStatus status) + { + switch (status.getSeverity()) { + case Status.ERROR: + LOGGER.error(status.toString()); + break; + case Status.WARNING: + LOGGER.warn(status.toString()); + break; + + default: + LOGGER.info(status.toString()); + break; + + } + } + + @Override + public String translate(String key, ResourceBundle resources) + { + try + { + // The org.eclipse.core.resources bundle has keys that aren't translated, so avoid exception propagation. + // + return super.translate(key, resources); + } + catch (Throwable throwable) + { + return key; + } + } + }, + null, + null); + + // Make the new registry the default. + // + try + { + RegistryFactory.setDefaultRegistryProvider + (new IRegistryProvider() + { + public IExtensionRegistry getRegistry() + { + return newRegistry; + } + }); + } + catch (CoreException e) + { + LOGGER.error(e.getMessage(), e); + } + + registry = newRegistry; + } + + + org.eclipse.gemoc.executionframework.engine.Activator activator = new org.eclipse.gemoc.executionframework.engine.Activator(); + org.eclipse.gemoc.executionframework.debugger.Activator activatorDebug = new org.eclipse.gemoc.executionframework.debugger.Activator(); + org.eclipse.gemoc.trace.gemoc.Activator activatorTrace = new org.eclipse.gemoc.trace.gemoc.Activator(); + FakeBundleContext context = new FakeBundleContext(); + try { + activator.start(context); + activatorDebug.start(context); + activatorTrace.start(context); + } catch (Exception e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/src/main/java/org/eclipse/gemoc/executionframework/engine/headless/HeadlessExecutionPlatform.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/src/main/java/org/eclipse/gemoc/executionframework/engine/headless/HeadlessExecutionPlatform.java new file mode 100644 index 000000000..531f28933 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/src/main/java/org/eclipse/gemoc/executionframework/engine/headless/HeadlessExecutionPlatform.java @@ -0,0 +1,61 @@ +package org.eclipse.gemoc.executionframework.engine.headless; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +import org.eclipse.gemoc.xdsmlframework.api.core.IExecutionPlatform; +import org.eclipse.gemoc.xdsmlframework.api.core.IModelLoader; +import org.eclipse.gemoc.xdsmlframework.api.engine_addon.EngineAddonSortingRule.EngineEvent; +import org.eclipse.gemoc.xdsmlframework.api.engine_addon.IEngineAddon; + +public class HeadlessExecutionPlatform implements IExecutionPlatform { + + + protected Collection _addons = new ArrayList(); + + @Override + public void dispose() { + // TODO Auto-generated method stub + + } + + @Override + public IModelLoader getModelLoader() { + // TODO Auto-generated method stub + return null; + } + + private Object _addonLock = new Object(); + + @Override + public void addEngineAddon(IEngineAddon addon) { + synchronized (_addonLock) { + _addons.add(addon); + } + } + + @Override + public void removeEngineAddon(IEngineAddon addon) { + synchronized (_addonLock) { + _addons.remove(addon); + } + } + + + @Override + public Iterable getEngineAddons() { + synchronized (_addonLock) { + return Collections.unmodifiableCollection(new ArrayList(_addons)); + } + } + + @Override + public List getSortedEngineAddons(EngineEvent engineEvent) { + synchronized (_addonLock) { + return Collections.unmodifiableList(new ArrayList(_addons)); + } + } + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/src/main/java/org/eclipse/gemoc/executionframework/engine/headless/HeadlessExecutionWorkspace.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/src/main/java/org/eclipse/gemoc/executionframework/engine/headless/HeadlessExecutionWorkspace.java new file mode 100644 index 000000000..9f2646574 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/src/main/java/org/eclipse/gemoc/executionframework/engine/headless/HeadlessExecutionWorkspace.java @@ -0,0 +1,45 @@ +package org.eclipse.gemoc.executionframework.engine.headless; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.Path; +import org.eclipse.gemoc.xdsmlframework.api.core.IExecutionWorkspace; + +public class HeadlessExecutionWorkspace implements IExecutionWorkspace { + + @Override + public IPath getProjectPath() { + // TODO Auto-generated method stub + return null; + } + + @Override + public IPath getModelPath() { + // TODO Auto-generated method stub + return null; + } + + @Override + public IPath getMoCPath() { + // TODO Auto-generated method stub + return null; + } + + @Override + public IPath getMSEModelPath() { + // TODO Auto-generated method stub + return null; + } + + @Override + public IPath getExecutionPath() { + return new Path(System.getProperty("user.home")).append("gemoc_headless_execution"); + } + + @Override + public void copyFileToExecutionFolder(IPath filePath) throws CoreException { + // TODO Auto-generated method stub + + } + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/src/main/java/org/eclipse/gemoc/executionframework/engine/headless/HeadlessJavaEngineSequentialRunConfiguration.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/src/main/java/org/eclipse/gemoc/executionframework/engine/headless/HeadlessJavaEngineSequentialRunConfiguration.java new file mode 100644 index 000000000..0116de12c --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.headless/src/main/java/org/eclipse/gemoc/executionframework/engine/headless/HeadlessJavaEngineSequentialRunConfiguration.java @@ -0,0 +1,111 @@ +package org.eclipse.gemoc.executionframework.engine.headless; + +import java.util.Collection; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.gemoc.executionframework.engine.commons.sequential.ISequentialRunConfiguration; +import org.eclipse.gemoc.xdsmlframework.api.extensions.engine_addon.EngineAddonSpecificationExtension; + +public class HeadlessJavaEngineSequentialRunConfiguration implements ISequentialRunConfiguration { + + URI modelURI; + String languageName; + String modelEntryPoint; + String methodEntryPoint; + String initializationMethod; + String initializationMethodArgs; + public HeadlessJavaEngineSequentialRunConfiguration(URI modelURI, String languageName, String modelEntryPoint, + String methodEntryPoint, String initializationMethod, String initializationMethodArgs) { + this.modelURI = modelURI; + this.languageName = languageName; + this.modelEntryPoint = modelEntryPoint; + this.methodEntryPoint = methodEntryPoint; + this.initializationMethod = initializationMethod; + this.initializationMethodArgs = initializationMethodArgs; + } + + @Override + public int getAnimationDelay() { + return 0; + } + + @Override + public URI getAnimatorURI() { + return null; + } + + @Override + public boolean getBreakStart() { + return false; + } + + @Override + public String getDebugModelID() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Collection getEngineAddonExtensions() { + return null; + } + + @Override + public URI getExecutedModelAsMelangeURI() { + // TODO Auto-generated method stub + return null; + } + + @Override + public URI getExecutedModelURI() { + return modelURI; + } + + @Override + public String getLanguageName() { + return this.languageName; + } + + @Override + public String getMelangeQuery() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getExecutionEntryPoint() { + return this.methodEntryPoint; + } + + @Override + public String getModelEntryPoint() { + return this.modelEntryPoint; + } + + @Override + public String getModelInitializationMethod() { + return this.initializationMethod; + } + + @Override + public String getModelInitializationArguments() { + return this.initializationMethodArgs; + } + + + public String getAttribute(String attributeName, String defaultValue) { + // there is no addon in this mode, so return the default value + return defaultValue; + } + + public Integer getAttribute(String attributeName, Integer defaultValue) { + // there is no addon in this mode, so return the default value + return defaultValue; + } + + public Boolean getAttribute(String attributeName, Boolean defaultValue) { + // there is no addon in this mode, so return the default value + return defaultValue; + } + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.mep/.project b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.mep/.project new file mode 100644 index 000000000..7b38d846b --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.engine.mep/.project @@ -0,0 +1,29 @@ + + + org.eclipse.gemoc.executionframework.engine.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/.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/META-INF/MANIFEST.MF b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/META-INF/MANIFEST.MF new file mode 100644 index 000000000..2ad0bfe21 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/META-INF/MANIFEST.MF @@ -0,0 +1,10 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Mep +Bundle-SymbolicName: org.eclipse.gemoc.executionframework.mep +Bundle-Version: 1.0.0.qualifier +Export-Package: org.eclipse.gemoc.executionframework.mep.engine, + org.eclipse.gemoc.executionframework.mep.events, + org.eclipse.gemoc.executionframework.mep.launch, + org.eclipse.gemoc.executionframework.mep.services, + org.eclipse.gemoc.executionframework.mep.types diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/build.properties b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/build.properties new file mode 100644 index 000000000..80bc25000 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/build.properties @@ -0,0 +1,6 @@ +source.. = src/main/java/,\ + src/main/resources/,\ + src/test/java/,\ + src/test/resources/ +bin.includes = META-INF/,\ + . 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..5d0171502 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/pom.xml @@ -0,0 +1,118 @@ + + 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.10.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.lsp4j + org.eclipse.lsp4j.jsonrpc + 0.8.0 + + + + org.eclipse.emf + org.eclipse.emf.edit + 2.16.0 + + + + org.eclipse.gemoc.modeldebugging.framework.commons + org.eclipse.gemoc.xdsmlframework.api + 4.0.0-SNAPSHOT + + + + org.eclipse.gemoc.pomfirst + org.eclipse.gemoc.executionframework.engine + 4.0.0-SNAPSHOT + + + + org.eclipse.gemoc.pomfirst + org.eclipse.gemoc.executionframework.debugger + 4.0.0-SNAPSHOT + + + + org.eclipse.gemoc.trace.commons + org.eclipse.gemoc.trace.gemoc.api + 3.0.1-SNAPSHOT + + + + DSLDebugger + org.eclipse.gemoc.dsl.debug.ide + 3.0.1-SNAPSHOT + + + + org.eclipse.gemoc.multidimensional_trace_management + org.eclipse.gemoc.trace.gemoc + 3.0.1-SNAPSHOT + + + + org.emfjson + emfjson-jackson + 1.3.0 + + + + + com.fasterxml.jackson.core + jackson-core + 2.12.1 + + + + + + + + + + + \ 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/engine/ExecutionEngineSingleton.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/engine/ExecutionEngineSingleton.java new file mode 100644 index 000000000..625516d8b --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/engine/ExecutionEngineSingleton.java @@ -0,0 +1,34 @@ +package org.eclipse.gemoc.executionframework.mep.engine; + + +import java.util.concurrent.Semaphore; + +public class ExecutionEngineSingleton { + + private static volatile IMEPEngine engine = null; + private static volatile Semaphore semaphore = new Semaphore(0); + + public static void setEngine(IMEPEngine engine) { + if (ExecutionEngineSingleton.engine == null) { + ExecutionEngineSingleton.engine = engine; + semaphore.release(); + } + } + + public static IMEPEngine acquireEngine() { + try { + semaphore.acquire(); + return engine; + } catch (InterruptedException e) { + e.printStackTrace(); + } + return null; + } + + public static void releaseEngine() { + if (engine != null) { + semaphore.release(); + } + } + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/engine/IMEPEngine.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/engine/IMEPEngine.java new file mode 100644 index 000000000..2116f3388 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/engine/IMEPEngine.java @@ -0,0 +1,41 @@ +package org.eclipse.gemoc.executionframework.mep.engine; + +import org.eclipse.gemoc.executionframework.debugger.IGemocDebugger; +import org.eclipse.gemoc.executionframework.mep.launch.MEPLauncherParameters; +import org.eclipse.gemoc.executionframework.mep.types.SourceBreakpoint; +import org.eclipse.gemoc.executionframework.mep.types.StackFrame; +import org.eclipse.gemoc.executionframework.mep.types.Variable; + +public interface IMEPEngine { + + abstract void internalLaunchEngine(MEPLauncherParameters launchParameters); + + abstract void internalNext(); + + abstract void internalStepIn(); + + abstract void internalStepOut(); + + abstract void internalSetBreakpoints(SourceBreakpoint[] breakpoints); + + abstract void internalTerminate(); + + abstract void internalContinue(); + + abstract Variable[] internalVariables(); + + abstract StackFrame[] internalStackTrace(); + + abstract String internalSource(); + + abstract void addMEPEventListener(IMEPEventListener listener); + + abstract void removeMEPEventListener(IMEPEventListener listener); + + abstract void removeAllMEPEventListeners(); + + default IGemocDebugger getDebugger() { + return null; + } + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/engine/IMEPEventListener.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/engine/IMEPEventListener.java new file mode 100644 index 000000000..f6d8bd5ce --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/engine/IMEPEventListener.java @@ -0,0 +1,14 @@ +package org.eclipse.gemoc.executionframework.mep.engine; + +import java.util.EventListener; + +import org.eclipse.gemoc.executionframework.mep.events.Output; +import org.eclipse.gemoc.executionframework.mep.events.Stopped; + +public interface IMEPEventListener extends EventListener { + + abstract void outputReceived(Output event); + + abstract void stopReceived(Stopped event); + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/engine/MEPEvent.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/engine/MEPEvent.java new file mode 100644 index 000000000..5aac5d173 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/engine/MEPEvent.java @@ -0,0 +1,11 @@ +package org.eclipse.gemoc.executionframework.mep.engine; + +import java.util.EventObject; + +public class MEPEvent extends EventObject { + + public MEPEvent(Object source) { + super(source); + } + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/events/Output.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/events/Output.java new file mode 100644 index 000000000..c4e6dff40 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/events/Output.java @@ -0,0 +1,18 @@ +package org.eclipse.gemoc.executionframework.mep.events; + +import org.eclipse.gemoc.executionframework.mep.engine.MEPEvent; + +public class Output extends MEPEvent { + + private String output; + + public Output(Object source, String output) { + super(source); + this.output = output; + } + + public String getOutput() { + return output; + } + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/events/Stopped.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/events/Stopped.java new file mode 100644 index 000000000..e9187e7a9 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/events/Stopped.java @@ -0,0 +1,18 @@ +package org.eclipse.gemoc.executionframework.mep.events; + +import org.eclipse.gemoc.executionframework.mep.engine.MEPEvent; + +public class Stopped extends MEPEvent { + + private StoppedReason reason; + + public Stopped(Object source, StoppedReason reason) { + super(source); + this.reason = reason; + } + + public StoppedReason getReason() { + return reason; + } + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/events/StoppedReason.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/events/StoppedReason.java new file mode 100644 index 000000000..b84c246b2 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/events/StoppedReason.java @@ -0,0 +1,19 @@ +package org.eclipse.gemoc.executionframework.mep.events; + +public enum StoppedReason { + REACHED_BREAKPOINT ("breakpoint"), + REACHED_NEXT_LOGICAL_STEP ("step"), + REACHED_SIMULATION_END ("end"), + TIME ("time"); + + private final String reason; + + private StoppedReason(String reason) { + this.reason = reason; + } + + @Override + public String toString() { + return this.reason; + } +} 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..d07c01841 --- /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,224 @@ +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.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.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..6984f2c8f --- /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,14 @@ +package org.eclipse.gemoc.executionframework.mep.launch; + +import org.eclipse.emf.ecore.resource.Resource; + +public class MEPLauncherParameters { + + public String languageName = ""; + 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/MEPServerLSP4J.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/launch/MEPServerLSP4J.java new file mode 100644 index 000000000..eb93d105a --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/launch/MEPServerLSP4J.java @@ -0,0 +1,560 @@ +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.HashSet; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +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.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.gemoc.executionframework.mep.engine.ExecutionEngineSingleton; +import org.eclipse.gemoc.executionframework.mep.engine.IMEPEventListener; +import org.eclipse.gemoc.executionframework.mep.events.Output; +import org.eclipse.gemoc.executionframework.mep.events.Stopped; +import org.eclipse.gemoc.executionframework.mep.events.StoppedReason; +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.StoppedEventArguments; +import org.eclipse.lsp4j.debug.TerminateArguments; +import org.eclipse.lsp4j.debug.TerminatedEventArguments; +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; + +import com.google.common.base.Objects; +import com.google.common.collect.LinkedListMultimap; +import com.google.common.collect.Multimap; + +abstract public class MEPServerLSP4J implements IModelExecutionProtocolServer, Endpoint, JsonRpcMethodProvider, ModelExecutionClientAware, IMEPEventListener { + + private static final Logger LOG = Logger.getLogger(MEPServerLSP4J.class); + + private Map supportedMethods; + + private final Set extensions = new HashSet<>(); + 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]; + + public MEPServerLSP4J() { + + } + + public void init() { + ExecutionEngineSingleton.acquireEngine().addMEPEventListener(this); + ExecutionEngineSingleton.releaseEngine(); + } + + public void addExtension(Endpoint extension) { + this.extensions.add(extension); + } + + @Override + public Map supportedMethods() { + if (supportedMethods != null) { + return supportedMethods; + } + + 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 (Endpoint ext : this.extensions) { + if (ext != null) { + 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)) { + endpoint.notify(method, parameter); + } + 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)) { + return endpoint.request(method, parameter); + } + 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); + + launcherParameters = getDefaultLauncherParameters(); + if (args != 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()); + launcherParameters.resourceModel = rs.createResource(URI.createURI("dummy:/example.k3fsm")); + + launcherParameters.resourceModel.load(in, rs.getLoadOptions()); + + //Model model = (Model) resource.getContents().get(0); + LOG.info("root element in model-content is "+launcherParameters.resourceModel.getContents().get(0)); + + } catch (IOException e) { + LOG.error(e.getMessage(), e); + } + } else if(args.containsKey(MEPLaunchParameterKey.modelURI.name())) { + String modelURIString = (String) args.get(MEPLaunchParameterKey.modelURI.name()); + URI uri = URI.createURI(modelURIString); + ResourceSet rs = createResourceSet(); + launcherParameters.resourceModel = rs.createResource(uri); + try { + launcherParameters.resourceModel.load(rs.getLoadOptions()); + launcherParameters.resourceModel.getContents().get(0); + LOG.info("root element in model uri is "+launcherParameters.resourceModel.getContents().get(0)); + } catch (IOException e) { + LOG.error(e.getMessage(), e); + } + } + if(args.containsKey(MEPLaunchParameterKey.language.name())) { + launcherParameters.languageName = (String) args.get(MEPLaunchParameterKey.language.name()); + } + if(args.containsKey(MEPLaunchParameterKey.methodEntryPoint.name())) { + launcherParameters.methodEntryPoint = (String) args.get(MEPLaunchParameterKey.methodEntryPoint.name()); + } + if(args.containsKey(MEPLaunchParameterKey.initializationMethod.name())) { + launcherParameters.initializationMethod = (String) args.get(MEPLaunchParameterKey.initializationMethod.name()); + } + if(args.containsKey(MEPLaunchParameterKey.modelEntryPoint.name())) { + launcherParameters.modelEntryPoint = (String) args.get(MEPLaunchParameterKey.modelEntryPoint.name()); + } + if(args.containsKey(MEPLaunchParameterKey.initializationArguments.name())) { + launcherParameters.initializationMethodArgs = (String) args.get(MEPLaunchParameterKey.initializationArguments.name()); + } + } + + 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); + } + + ExecutionEngineSingleton.acquireEngine().internalContinue(); + ExecutionEngineSingleton.releaseEngine(); + + 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); + } + + ExecutionEngineSingleton.acquireEngine().internalNext(); + ExecutionEngineSingleton.releaseEngine(); + } + }); + 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); + } + + ExecutionEngineSingleton.acquireEngine().internalStepIn(); + ExecutionEngineSingleton.releaseEngine(); + } + }); + return future; + } + + protected void manageStop(StoppedReason stopReason) { + switch (stopReason) { + case REACHED_BREAKPOINT: + StoppedEventArguments stoppedArgsBreakpoint = new StoppedEventArguments(); + stoppedArgsBreakpoint.setReason(stopReason.toString()); + stoppedArgsBreakpoint.setDescription("Reached breakpoint"); + client.stopped(stoppedArgsBreakpoint); + break; + case REACHED_NEXT_LOGICAL_STEP: + StoppedEventArguments stoppedArgsStep = new StoppedEventArguments(); + stoppedArgsStep.setReason(stopReason.toString()); + stoppedArgsStep.setDescription("Reached new logical step"); + client.stopped(stoppedArgsStep); + break; + case REACHED_SIMULATION_END: + TerminatedEventArguments terminatedArgs = new TerminatedEventArguments(); + client.terminated(terminatedArgs); + simulationStarted = false; + break; + case TIME: + break; + default: + break; + } + } + + @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); + } + + ExecutionEngineSingleton.acquireEngine().internalStepOut(); + ExecutionEngineSingleton.releaseEngine(); + } + }); + 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(); + + List bps = new ArrayList<>(); + org.eclipse.gemoc.executionframework.mep.types.SourceBreakpoint[] mepBreakpoints = + new org.eclipse.gemoc.executionframework.mep.types.SourceBreakpoint[args.getBreakpoints().length]; + int i = 0; + for (SourceBreakpoint sbp : args.getBreakpoints()) { + org.eclipse.gemoc.executionframework.mep.types.SourceBreakpoint mepBreakpoint = + new org.eclipse.gemoc.executionframework.mep.types.SourceBreakpoint(sbp.getLine()); + mepBreakpoints[i++] = mepBreakpoint; + Breakpoint bp = new Breakpoint(); + bp.setVerified(true); + bp.setLine(sbp.getLine()); + bps.add(bp); + } + ExecutionEngineSingleton.acquireEngine().internalSetBreakpoints(mepBreakpoints); + ExecutionEngineSingleton.releaseEngine(); + 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) { + ExecutionEngineSingleton.acquireEngine().internalTerminate(); + ExecutionEngineSingleton.releaseEngine(); + simulationStarted = false; + } + launchGemocEngine(launcherParameters); + simulationStarted = true; + org.eclipse.gemoc.executionframework.mep.types.SourceBreakpoint mepBreakpoints[] = + new org.eclipse.gemoc.executionframework.mep.types.SourceBreakpoint[breakpoints.length]; + int i = 0; + for (Breakpoint bp : breakpoints) { + mepBreakpoints[i++] = new org.eclipse.gemoc.executionframework.mep.types.SourceBreakpoint(bp.getLine().intValue()); + } + ExecutionEngineSingleton.acquireEngine().internalSetBreakpoints(mepBreakpoints); + ExecutionEngineSingleton.releaseEngine(); + } + }); + 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(); + org.eclipse.gemoc.executionframework.mep.types.StackFrame[] mepFrames = ExecutionEngineSingleton.acquireEngine().internalStackTrace(); + ExecutionEngineSingleton.releaseEngine(); + StackFrame[] dapFrames = new StackFrame[mepFrames.length]; + int i = 0; + for (org.eclipse.gemoc.executionframework.mep.types.StackFrame mepFrame : mepFrames) { + StackFrame dapFrame = new StackFrame(); + dapFrame.setId((int) mepFrame.getId()); + dapFrame.setName(mepFrame.getName()); + dapFrame.setLine((int) mepFrame.getLine()); + dapFrame.setColumn((int) mepFrame.getColumn()); + dapFrames[i++] = dapFrame; + } + response.setStackFrames(dapFrames); + 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(); + org.eclipse.gemoc.executionframework.mep.types.Variable[] mepVariables = ExecutionEngineSingleton.acquireEngine().internalVariables(); + ExecutionEngineSingleton.releaseEngine(); + Variable[] dapVariables = new Variable[mepVariables.length]; + int i = 0; + for (org.eclipse.gemoc.executionframework.mep.types.Variable mepVariable : mepVariables) { + Variable dapVariable = new Variable(); + dapVariable.setName(mepVariable.getName()); + dapVariable.setValue(mepVariable.getValue()); + dapVariables[i++] = dapVariable; + } + response.setVariables(dapVariables); + 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(ExecutionEngineSingleton.acquireEngine().internalSource()); + ExecutionEngineSingleton.releaseEngine(); + return response; + } + }); + return future; + } + + @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); + } + ExecutionEngineSingleton.acquireEngine().internalTerminate(); + ExecutionEngineSingleton.releaseEngine(); + simulationStarted = false; + } + }); + return future; + } + + public void sendOutput(String output) { + OutputEventArguments args = new OutputEventArguments(); + args.setCategory("stdout"); + args.setOutput(output); + client.output(args); + } + + /** + * 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 MEPLauncherParameters getDefaultLauncherParameters() { + return new MEPLauncherParameters(); + } + + public void launchGemocEngine(MEPLauncherParameters parameters) { + ExecutionEngineSingleton.acquireEngine().internalLaunchEngine(parameters); + ExecutionEngineSingleton.releaseEngine(); + } + + @Override + public void outputReceived(Output event) { + this.sendOutput(event.getOutput()); + } + + @Override + public void stopReceived(Stopped event) { + this.manageStop(event.getReason()); + } + +} 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/omniscient/IOmniscientDebugProtocolClient.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/omniscient/IOmniscientDebugProtocolClient.java new file mode 100644 index 000000000..d96ba8913 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/omniscient/IOmniscientDebugProtocolClient.java @@ -0,0 +1,5 @@ +package org.eclipse.gemoc.executionframework.mep.omniscient; + +public interface IOmniscientDebugProtocolClient { + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/omniscient/IOmniscientDebugProtocolServer.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/omniscient/IOmniscientDebugProtocolServer.java new file mode 100644 index 000000000..382c650a7 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/omniscient/IOmniscientDebugProtocolServer.java @@ -0,0 +1,39 @@ +package org.eclipse.gemoc.executionframework.mep.omniscient; + +import java.util.concurrent.CompletableFuture; + +import org.eclipse.lsp4j.jsonrpc.services.JsonRequest; + +public interface IOmniscientDebugProtocolServer { + + @JsonRequest + default CompletableFuture stepBackInto() { + throw new UnsupportedOperationException(); + } + + @JsonRequest + default CompletableFuture stepBackOver() { + throw new UnsupportedOperationException(); + } + + @JsonRequest + default CompletableFuture stepBackOut() { + throw new UnsupportedOperationException(); + } + + @JsonRequest + default CompletableFuture canStepBackInto() { + throw new UnsupportedOperationException(); + } + + @JsonRequest + default CompletableFuture canStepBackOver() { + throw new UnsupportedOperationException(); + } + + @JsonRequest + default CompletableFuture canStepBackOut() { + throw new UnsupportedOperationException(); + } + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/omniscient/OmniscientDebugProtocolClientAware.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/omniscient/OmniscientDebugProtocolClientAware.java new file mode 100644 index 000000000..b6a816bd5 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/omniscient/OmniscientDebugProtocolClientAware.java @@ -0,0 +1,6 @@ +package org.eclipse.gemoc.executionframework.mep.omniscient; + +public interface OmniscientDebugProtocolClientAware { + + void connect(IOmniscientDebugProtocolClient client); +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/omniscient/OmniscientDebugProtocolServer.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/omniscient/OmniscientDebugProtocolServer.java new file mode 100644 index 000000000..c5d38fb2f --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/omniscient/OmniscientDebugProtocolServer.java @@ -0,0 +1,165 @@ +package org.eclipse.gemoc.executionframework.mep.omniscient; + +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.concurrent.CompletableFuture; + +import org.apache.log4j.Logger; +import org.eclipse.gemoc.executionframework.debugger.IGemocDebugger; +import org.eclipse.gemoc.executionframework.debugger.OmniscientGenericSequentialModelDebugger; +import org.eclipse.gemoc.executionframework.mep.engine.ExecutionEngineSingleton; +import org.eclipse.lsp4j.jsonrpc.Endpoint; +import org.eclipse.lsp4j.jsonrpc.json.JsonRpcMethod; +import org.eclipse.lsp4j.jsonrpc.json.JsonRpcMethodProvider; +import org.eclipse.lsp4j.jsonrpc.services.ServiceEndpoints; + +import com.google.common.base.Supplier; + +public class OmniscientDebugProtocolServer + implements Endpoint, IOmniscientDebugProtocolServer, JsonRpcMethodProvider, OmniscientDebugProtocolClientAware { + + private static final Logger LOG = Logger.getLogger(OmniscientDebugProtocolServer.class); + + private IOmniscientDebugProtocolClient client; + + private Map supportedMethods; + + public OmniscientDebugProtocolServer() { + + } + + @Override + public CompletableFuture canStepBackInto() { + LOG.info("canStepBackInto"); + CompletableFuture future = CompletableFuture.supplyAsync(new Supplier() { + @Override + public Boolean get() { + boolean result = false; + IGemocDebugger debugger = ExecutionEngineSingleton.acquireEngine().getDebugger(); + if (debugger instanceof OmniscientGenericSequentialModelDebugger) { + result = ((OmniscientGenericSequentialModelDebugger) debugger).canStepBackInto(); + } + ExecutionEngineSingleton.releaseEngine(); + return result; + } + }); + return future; + } + + @Override + public CompletableFuture canStepBackOut() { + LOG.info("canStepBackOut"); + CompletableFuture future = CompletableFuture.supplyAsync(new Supplier() { + @Override + public Boolean get() { + boolean result = false; + IGemocDebugger debugger = ExecutionEngineSingleton.acquireEngine().getDebugger(); + if (debugger instanceof OmniscientGenericSequentialModelDebugger) { + result = ((OmniscientGenericSequentialModelDebugger) debugger).canStepBackOut(); + } + ExecutionEngineSingleton.releaseEngine(); + return result; + } + }); + return future; + } + + @Override + public CompletableFuture canStepBackOver() { + LOG.info("canStepBackOver"); + CompletableFuture future = CompletableFuture.supplyAsync(new Supplier() { + @Override + public Boolean get() { + boolean result = false; + IGemocDebugger debugger = ExecutionEngineSingleton.acquireEngine().getDebugger(); + if (debugger instanceof OmniscientGenericSequentialModelDebugger) { + result = ((OmniscientGenericSequentialModelDebugger) debugger).canStepBackOver(); + } + ExecutionEngineSingleton.releaseEngine(); + return result; + } + }); + return future; + } + + @Override + public void connect(IOmniscientDebugProtocolClient client) { + this.client = client; + } + + @Override + public void notify(String method, Object parameter) { + LOG.info("notify " + method); + } + + @Override + public CompletableFuture request(String method, Object parameter) { + throw new UnsupportedOperationException("The json request \'" + method + "\' is unknown."); + } + + @Override + public CompletableFuture stepBackInto() { + LOG.info("stepBackInto"); + CompletableFuture future = CompletableFuture.runAsync(new Runnable() { + @Override + public void run() { + IGemocDebugger debugger = ExecutionEngineSingleton.acquireEngine().getDebugger(); + if (debugger instanceof OmniscientGenericSequentialModelDebugger) { + ((OmniscientGenericSequentialModelDebugger) debugger).stepBackInto(); + } + ExecutionEngineSingleton.releaseEngine(); + } + }); + return future; + } + + @Override + public CompletableFuture stepBackOut() { + LOG.info("stepBackOut"); + CompletableFuture future = CompletableFuture.runAsync(new Runnable() { + @Override + public void run() { + IGemocDebugger debugger = ExecutionEngineSingleton.acquireEngine().getDebugger(); + if (debugger instanceof OmniscientGenericSequentialModelDebugger) { + ((OmniscientGenericSequentialModelDebugger) debugger).stepBackOut(); + } + ExecutionEngineSingleton.releaseEngine(); + } + }); + return future; + } + + @Override + public CompletableFuture stepBackOver() { + LOG.info("stepBackOver"); + CompletableFuture future = CompletableFuture.runAsync(new Runnable() { + @Override + public void run() { + IGemocDebugger debugger = ExecutionEngineSingleton.acquireEngine().getDebugger(); + if (debugger instanceof OmniscientGenericSequentialModelDebugger) { + ((OmniscientGenericSequentialModelDebugger) debugger).stepBackOver(); + } + ExecutionEngineSingleton.releaseEngine(); + } + }); + return future; + } + + @Override + public Map supportedMethods() { + if (supportedMethods != null) { + return supportedMethods; + } + + Map supportedMethods = new LinkedHashMap<>(); + supportedMethods.putAll(ServiceEndpoints.getSupportedMethods(getClass())); + + for (JsonRpcMethod supportedMethod : supportedMethods.values()) { + LOG.info("supported method " + supportedMethod.getMethodName() + " " + supportedMethod.getParameterTypes()); + } + + this.supportedMethods = supportedMethods; + return supportedMethods; + } + +} 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/main/java/org/eclipse/gemoc/executionframework/mep/trace/IRemoteTraceAddon.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/IRemoteTraceAddon.java new file mode 100644 index 000000000..15d5ef911 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/IRemoteTraceAddon.java @@ -0,0 +1,21 @@ +package org.eclipse.gemoc.executionframework.mep.trace; + +import org.eclipse.gemoc.trace.commons.model.trace.Dimension; +import org.eclipse.gemoc.trace.commons.model.trace.State; +import org.eclipse.gemoc.trace.commons.model.trace.Step; +import org.eclipse.gemoc.trace.commons.model.trace.TracedObject; +import org.eclipse.gemoc.trace.commons.model.trace.Value; +import org.eclipse.gemoc.trace.gemoc.api.ITraceExplorer; +import org.eclipse.gemoc.xdsmlframework.api.core.IExecutionContext; + +public interface IRemoteTraceAddon { + + void engineAboutToStart(IExecutionContext context); + + void aboutToExecuteStep(Step step); + + void stepExecuted(Step step); + + void setTraceExplorer(ITraceExplorer, State, TracedObject, Dimension, Value> traceExplorer); + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/IRemoteTraceExplorer.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/IRemoteTraceExplorer.java new file mode 100644 index 000000000..f35a8c84a --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/IRemoteTraceExplorer.java @@ -0,0 +1,12 @@ +package org.eclipse.gemoc.executionframework.mep.trace; + + +public interface IRemoteTraceExplorer { + + void addTraceExplorerEventListener(ITraceExplorerEventListener listener); + + void removeTraceExplorerEventListener(ITraceExplorerEventListener listener); + + void removeAllTraceExplorerEventListeners(); + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/ITraceExplorerEventListener.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/ITraceExplorerEventListener.java new file mode 100644 index 000000000..e13c5e933 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/ITraceExplorerEventListener.java @@ -0,0 +1,9 @@ +package org.eclipse.gemoc.executionframework.mep.trace; + +import java.util.EventListener; + +public interface ITraceExplorerEventListener extends EventListener { + + abstract void updatedCallStack(); + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/ITraceExplorerProtocolClient.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/ITraceExplorerProtocolClient.java new file mode 100644 index 000000000..c203387ce --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/ITraceExplorerProtocolClient.java @@ -0,0 +1,14 @@ +package org.eclipse.gemoc.executionframework.mep.trace; + +import java.util.concurrent.CompletableFuture; + +import org.eclipse.lsp4j.jsonrpc.services.JsonRequest; + +public interface ITraceExplorerProtocolClient { + + @JsonRequest + default CompletableFuture updatedCallStack() { + throw new UnsupportedOperationException(); + } + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/ITraceExplorerProtocolServer.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/ITraceExplorerProtocolServer.java new file mode 100644 index 000000000..62a3ba186 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/ITraceExplorerProtocolServer.java @@ -0,0 +1,71 @@ +package org.eclipse.gemoc.executionframework.mep.trace; + +import java.util.List; +import java.util.concurrent.CompletableFuture; + +import org.eclipse.gemoc.executionframework.mep.trace.types.SerializableStep; +import org.eclipse.lsp4j.jsonrpc.services.JsonRequest; + +public interface ITraceExplorerProtocolServer { + + @JsonRequest + default CompletableFuture inReplayMode() { + throw new UnsupportedOperationException(); + } + + @JsonRequest + default CompletableFuture loadLastState() { + throw new UnsupportedOperationException(); + } + + @JsonRequest + default CompletableFuture> getCallStack() { + throw new UnsupportedOperationException(); + } + + @JsonRequest + default CompletableFuture stepInto() { + throw new UnsupportedOperationException(); + } + + @JsonRequest + default CompletableFuture stepOver() { + throw new UnsupportedOperationException(); + } + + @JsonRequest + default CompletableFuture stepReturn() { + throw new UnsupportedOperationException(); + } + + @JsonRequest + default CompletableFuture stepBackInto() { + throw new UnsupportedOperationException(); + } + + @JsonRequest + default CompletableFuture stepBackOver() { + throw new UnsupportedOperationException(); + } + + @JsonRequest + default CompletableFuture stepBackOut() { + throw new UnsupportedOperationException(); + } + + @JsonRequest + default CompletableFuture canStepBackInto() { + throw new UnsupportedOperationException(); + } + + @JsonRequest + default CompletableFuture canStepBackOver() { + throw new UnsupportedOperationException(); + } + + @JsonRequest + default CompletableFuture canStepBackOut() { + throw new UnsupportedOperationException(); + } + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/ITraceManagerAddonProtocolClient.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/ITraceManagerAddonProtocolClient.java new file mode 100644 index 000000000..eca789267 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/ITraceManagerAddonProtocolClient.java @@ -0,0 +1,5 @@ +package org.eclipse.gemoc.executionframework.mep.trace; + +public interface ITraceManagerAddonProtocolClient { + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/ITraceManagerAddonProtocolServer.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/ITraceManagerAddonProtocolServer.java new file mode 100644 index 000000000..7dcfec028 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/ITraceManagerAddonProtocolServer.java @@ -0,0 +1,26 @@ +package org.eclipse.gemoc.executionframework.mep.trace; + +import java.util.concurrent.CompletableFuture; + +import org.eclipse.gemoc.executionframework.mep.trace.types.SerializableExecutionContext; +import org.eclipse.gemoc.executionframework.mep.trace.types.SerializableStep; +import org.eclipse.lsp4j.jsonrpc.services.JsonRequest; + +public interface ITraceManagerAddonProtocolServer { + + @JsonRequest + default CompletableFuture notifyEngineAboutToStart(SerializableExecutionContext context) { + throw new UnsupportedOperationException(); + } + + @JsonRequest + default CompletableFuture notifyAboutToExecuteStep(SerializableStep step) { + throw new UnsupportedOperationException(); + } + + @JsonRequest + default CompletableFuture notifyStepExecuted(SerializableStep step) { + throw new UnsupportedOperationException(); + } + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/TraceAddonSingleton.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/TraceAddonSingleton.java new file mode 100644 index 000000000..3d3399145 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/TraceAddonSingleton.java @@ -0,0 +1,38 @@ +package org.eclipse.gemoc.executionframework.mep.trace; + + +import java.util.concurrent.Semaphore; + +public class TraceAddonSingleton { + + private static volatile IRemoteTraceAddon traceAddon = null; + private static volatile Semaphore semaphore = new Semaphore(0); + + public static void setTraceAddon(IRemoteTraceAddon traceAddon) { + if (TraceAddonSingleton.traceAddon == null) { + TraceAddonSingleton.traceAddon = traceAddon; + semaphore.release(); + } + } + + public static IRemoteTraceAddon acquireTraceAddon() { + try { + semaphore.acquire(); + return traceAddon; + } catch (InterruptedException e) { + e.printStackTrace(); + } + return null; + } + + public static IRemoteTraceAddon getTraceAddon() { + return traceAddon; + } + + public static void releaseTraceAddon() { + if (traceAddon != null) { + semaphore.release(); + } + } + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/TraceExplorerProtocolClient.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/TraceExplorerProtocolClient.java new file mode 100644 index 000000000..e1ab9982b --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/TraceExplorerProtocolClient.java @@ -0,0 +1,113 @@ +package org.eclipse.gemoc.executionframework.mep.trace; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.CompletableFuture; + +import org.apache.log4j.Logger; +import org.eclipse.gemoc.executionframework.mep.trace.types.SerializableStep; +import org.eclipse.gemoc.trace.commons.model.trace.Step; +import org.eclipse.gemoc.trace.gemoc.traceaddon.GenericTraceExplorer; +import org.eclipse.lsp4j.jsonrpc.Endpoint; + +public class TraceExplorerProtocolClient extends GenericTraceExplorer implements Endpoint, ITraceExplorerProtocolClient, TraceExplorerProtocolServerAware { + + private static final Logger LOG = Logger.getLogger(TraceExplorerProtocolClient.class); + + private ITraceExplorerProtocolServer server; + + public TraceExplorerProtocolClient() { + super(null); + } + + @Override + public void connect(ITraceExplorerProtocolServer server) { + this.server = server; + } + + @Override + public CompletableFuture request(String method, Object parameter) { + throw new UnsupportedOperationException("The json request \'" + method + "\' is unknown."); + } + + @Override + public void notify(String method, Object parameter) { + LOG.info("notify " + method); + } + + @Override + public void loadLastState() { + this.server.loadLastState().join(); + } + + @Override + public boolean stepInto() { + return this.server.stepInto().join(); + } + + @Override + public boolean stepOver() { + return this.server.stepOver().join(); + } + + @Override + public boolean stepReturn() { + return this.server.stepReturn().join(); + } + + @Override + public boolean canStepBackInto() { + return this.server.canStepBackInto().join(); + } + + @Override + public boolean canStepBackOver() { + return this.server.canStepBackOver().join(); + } + + @Override + public boolean canStepBackOut() { + return this.server.canStepBackOut().join(); + } + + @Override + public boolean stepBackInto() { + return this.server.stepBackInto().join(); + } + + @Override + public boolean stepBackOver() { + return this.server.stepBackOver().join(); + } + + @Override + public boolean stepBackOut() { + return this.server.stepBackOut().join(); + } + + @Override + public boolean isInReplayMode() { + return this.server.inReplayMode().join(); + } + + @Override + public List> getCallStack() { + List> result = new ArrayList<>(); + for (SerializableStep step : this.server.getCallStack().join()) { + result.add(step.getStep()); + } + return result; + } + + @Override + public CompletableFuture updatedCallStack() { + CompletableFuture future = CompletableFuture.runAsync(new Runnable() { + @Override + public void run() { + notifyListeners(); + } + }); + return future; + } + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/TraceExplorerProtocolClientAware.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/TraceExplorerProtocolClientAware.java new file mode 100644 index 000000000..ae86189cc --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/TraceExplorerProtocolClientAware.java @@ -0,0 +1,6 @@ +package org.eclipse.gemoc.executionframework.mep.trace; + +public interface TraceExplorerProtocolClientAware { + + void connect(ITraceExplorerProtocolClient client); +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/TraceExplorerProtocolServer.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/TraceExplorerProtocolServer.java new file mode 100644 index 000000000..126582479 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/TraceExplorerProtocolServer.java @@ -0,0 +1,281 @@ +package org.eclipse.gemoc.executionframework.mep.trace; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CompletableFuture; + +import org.apache.log4j.Logger; +import org.eclipse.gemoc.executionframework.mep.trace.types.SerializableStep; +import org.eclipse.gemoc.trace.commons.model.trace.Step; +import org.eclipse.gemoc.trace.gemoc.api.ITraceExplorer; +import org.eclipse.gemoc.trace.gemoc.traceaddon.GenericTraceEngineAddon; +import org.eclipse.lsp4j.jsonrpc.Endpoint; +import org.eclipse.lsp4j.jsonrpc.json.JsonRpcMethod; +import org.eclipse.lsp4j.jsonrpc.json.JsonRpcMethodProvider; +import org.eclipse.lsp4j.jsonrpc.services.ServiceEndpoints; + +import com.google.common.base.Supplier; + +public class TraceExplorerProtocolServer implements Endpoint, ITraceExplorerProtocolServer, JsonRpcMethodProvider, TraceExplorerProtocolClientAware, ITraceExplorerEventListener { + + private static final Logger LOG = Logger.getLogger(TraceExplorerProtocolServer.class); + + ITraceExplorerProtocolClient client; + + private Map supportedMethods; + + @Override + public void connect(ITraceExplorerProtocolClient client) { + this.client = client; + } + + public void init() { + IRemoteTraceAddon traceAddon = TraceAddonSingleton.acquireTraceAddon(); + if (traceAddon instanceof GenericTraceEngineAddon) { + ITraceExplorer traceExplorer = ((GenericTraceEngineAddon) traceAddon).getTraceExplorer(); + if (traceExplorer instanceof IRemoteTraceExplorer) { + ((IRemoteTraceExplorer) traceExplorer).addTraceExplorerEventListener(this); + } + } + TraceAddonSingleton.releaseTraceAddon(); + } + + @Override + public Map supportedMethods() { + if (supportedMethods != null) { + return supportedMethods; + } + + Map supportedMethods = new LinkedHashMap<>(); + supportedMethods.putAll(ServiceEndpoints.getSupportedMethods(getClass())); + + for (JsonRpcMethod supportedMethod : supportedMethods.values()) { + LOG.info("supported method " + supportedMethod.getMethodName() + " " + supportedMethod.getParameterTypes()); + } + + this.supportedMethods = supportedMethods; + return supportedMethods; + } + + @Override + public void notify(String method, Object parameter) { + LOG.info("notify " + method); + } + + @Override + public CompletableFuture request(String method, Object parameter) { + throw new UnsupportedOperationException("The json request \'" + method + "\' is unknown."); + } + + @Override + public CompletableFuture inReplayMode() { + LOG.info("inReplayMode"); + CompletableFuture future = CompletableFuture.supplyAsync(new Supplier() { + @Override + public Boolean get() { + boolean result = false; + IRemoteTraceAddon traceAddon = TraceAddonSingleton.getTraceAddon(); + if (traceAddon instanceof GenericTraceEngineAddon) { + result = ((GenericTraceEngineAddon) traceAddon).getTraceExplorer().isInReplayMode(); + } + return result; + } + }); + return future; + } + + @Override + public CompletableFuture loadLastState() { + LOG.info("loadLastState"); + CompletableFuture future = CompletableFuture.runAsync(new Runnable() { + @Override + public void run() { + IRemoteTraceAddon traceAddon = TraceAddonSingleton.getTraceAddon(); + if (traceAddon instanceof GenericTraceEngineAddon) { + ((GenericTraceEngineAddon) traceAddon).getTraceExplorer().loadLastState(); + } + } + }); + return future; + } + + @Override + public CompletableFuture> getCallStack() { + LOG.info("getCallStack"); + CompletableFuture> future = CompletableFuture.supplyAsync(new Supplier>() { + @Override + public List get() { + List result = new ArrayList<>(); + IRemoteTraceAddon traceAddon = TraceAddonSingleton.getTraceAddon(); + if (traceAddon instanceof GenericTraceEngineAddon) { + for (Step step : ((GenericTraceEngineAddon) traceAddon).getTraceExplorer().getCallStack()) { + result.add(new SerializableStep(step)); + } + } + return result; + } + }); + return future; + } + + @Override + public CompletableFuture stepInto() { + LOG.info("stepInto"); + CompletableFuture future = CompletableFuture.supplyAsync(new Supplier() { + @Override + public Boolean get() { + boolean result = false; + IRemoteTraceAddon traceAddon = TraceAddonSingleton.getTraceAddon(); + if (traceAddon instanceof GenericTraceEngineAddon) { + result = ((GenericTraceEngineAddon) traceAddon).getTraceExplorer().stepInto(); + } + return result; + } + }); + return future; + } + + @Override + public CompletableFuture stepOver() { + LOG.info("stepOver"); + CompletableFuture future = CompletableFuture.supplyAsync(new Supplier() { + @Override + public Boolean get() { + boolean result = false; + IRemoteTraceAddon traceAddon = TraceAddonSingleton.getTraceAddon(); + if (traceAddon instanceof GenericTraceEngineAddon) { + result = ((GenericTraceEngineAddon) traceAddon).getTraceExplorer().stepOver(); + } + return result; + } + }); + return future; + } + + @Override + public CompletableFuture stepReturn() { + LOG.info("stepReturn"); + CompletableFuture future = CompletableFuture.supplyAsync(new Supplier() { + @Override + public Boolean get() { + boolean result = false; + IRemoteTraceAddon traceAddon = TraceAddonSingleton.getTraceAddon(); + if (traceAddon instanceof GenericTraceEngineAddon) { + result = ((GenericTraceEngineAddon) traceAddon).getTraceExplorer().stepReturn(); + } + return result; + } + }); + return future; + } + + @Override + public CompletableFuture stepBackInto() { + LOG.info("stepBackInto"); + CompletableFuture future = CompletableFuture.supplyAsync(new Supplier() { + @Override + public Boolean get() { + boolean result = false; + IRemoteTraceAddon traceAddon = TraceAddonSingleton.getTraceAddon(); + if (traceAddon instanceof GenericTraceEngineAddon) { + result = ((GenericTraceEngineAddon) traceAddon).getTraceExplorer().stepBackInto(); + } + return result; + } + }); + return future; + } + + @Override + public CompletableFuture stepBackOver() { + LOG.info("stepBackOver"); + CompletableFuture future = CompletableFuture.supplyAsync(new Supplier() { + @Override + public Boolean get() { + boolean result = false; + IRemoteTraceAddon traceAddon = TraceAddonSingleton.getTraceAddon(); + if (traceAddon instanceof GenericTraceEngineAddon) { + result = ((GenericTraceEngineAddon) traceAddon).getTraceExplorer().stepBackOver(); + } + return result; + } + }); + return future; + } + + @Override + public CompletableFuture stepBackOut() { + LOG.info("stepBackOut"); + CompletableFuture future = CompletableFuture.supplyAsync(new Supplier() { + @Override + public Boolean get() { + boolean result = false; + IRemoteTraceAddon traceAddon = TraceAddonSingleton.getTraceAddon(); + if (traceAddon instanceof GenericTraceEngineAddon) { + result = ((GenericTraceEngineAddon) traceAddon).getTraceExplorer().stepBackOut(); + } + return result; + } + }); + return future; + } + + @Override + public CompletableFuture canStepBackInto() { + LOG.info("canStepBackInto"); + CompletableFuture future = CompletableFuture.supplyAsync(new Supplier() { + @Override + public Boolean get() { + boolean result = false; + IRemoteTraceAddon traceAddon = TraceAddonSingleton.getTraceAddon(); + if (traceAddon instanceof GenericTraceEngineAddon) { + result = ((GenericTraceEngineAddon) traceAddon).getTraceExplorer().canStepBackInto(); + } + return result; + } + }); + return future; + } + + @Override + public CompletableFuture canStepBackOver() { + LOG.info("canStepBackOver"); + CompletableFuture future = CompletableFuture.supplyAsync(new Supplier() { + @Override + public Boolean get() { + boolean result = false; + IRemoteTraceAddon traceAddon = TraceAddonSingleton.getTraceAddon(); + if (traceAddon instanceof GenericTraceEngineAddon) { + result = ((GenericTraceEngineAddon) traceAddon).getTraceExplorer().canStepBackOver(); + } + return result; + } + }); + return future; + } + + @Override + public CompletableFuture canStepBackOut() { + LOG.info("canStepBackOut"); + CompletableFuture future = CompletableFuture.supplyAsync(new Supplier() { + @Override + public Boolean get() { + boolean result = false; + IRemoteTraceAddon traceAddon = TraceAddonSingleton.getTraceAddon(); + if (traceAddon instanceof GenericTraceEngineAddon) { + result = ((GenericTraceEngineAddon) traceAddon).getTraceExplorer().canStepBackOut(); + } + return result; + } + }); + return future; + } + + @Override + public void updatedCallStack() { + this.client.updatedCallStack().join(); + } + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/TraceExplorerProtocolServerAware.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/TraceExplorerProtocolServerAware.java new file mode 100644 index 000000000..598cc5ea2 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/TraceExplorerProtocolServerAware.java @@ -0,0 +1,6 @@ +package org.eclipse.gemoc.executionframework.mep.trace; + +public interface TraceExplorerProtocolServerAware { + + void connect(ITraceExplorerProtocolServer server); +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/TraceManagerAddonProtocolClient.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/TraceManagerAddonProtocolClient.java new file mode 100644 index 000000000..132a3d2ab --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/TraceManagerAddonProtocolClient.java @@ -0,0 +1,65 @@ +package org.eclipse.gemoc.executionframework.mep.trace; + +import java.util.concurrent.CompletableFuture; + +import org.apache.log4j.Logger; +import org.eclipse.gemoc.executionframework.mep.trace.types.SerializableExecutionContext; +import org.eclipse.gemoc.executionframework.mep.trace.types.SerializableStep; +import org.eclipse.gemoc.trace.commons.model.trace.Dimension; +import org.eclipse.gemoc.trace.commons.model.trace.State; +import org.eclipse.gemoc.trace.commons.model.trace.Step; +import org.eclipse.gemoc.trace.commons.model.trace.TracedObject; +import org.eclipse.gemoc.trace.commons.model.trace.Value; +import org.eclipse.gemoc.trace.gemoc.api.ITraceExplorer; +import org.eclipse.gemoc.trace.gemoc.traceaddon.GenericTraceEngineAddon; +import org.eclipse.gemoc.xdsmlframework.api.core.IExecutionEngine; +import org.eclipse.lsp4j.jsonrpc.Endpoint; + +public class TraceManagerAddonProtocolClient extends GenericTraceEngineAddon implements Endpoint, ITraceManagerAddonProtocolClient, TraceManagerAddonProtocolServerAware { + + private static final Logger LOG = Logger.getLogger(TraceManagerAddonProtocolClient.class); + + private ITraceManagerAddonProtocolServer server; + + @Override + public void connect(ITraceManagerAddonProtocolServer server) { + this.server = server; + } + + @Override + public void notify(String method, Object parameter) { + LOG.info("notify " + method); + } + + @Override + public CompletableFuture request(String method, Object parameter) { + throw new UnsupportedOperationException("The json request \'" + method + "\' is unknown."); + } + + @Override + public void engineAboutToStart(IExecutionEngine engine) { + this.server.notifyEngineAboutToStart(new SerializableExecutionContext(engine.getExecutionContext())).join(); + } + + @Override + public void aboutToExecuteStep(IExecutionEngine executionEngine, Step step) { + this.server.notifyAboutToExecuteStep(new SerializableStep(step)).join(); + } + + @Override + public void stepExecuted(IExecutionEngine executionEngine, Step step) { + this.server.notifyStepExecuted(new SerializableStep(step)).join(); + } + + private TraceExplorerProtocolClient headlessTraceExplorer; + + public void setTraceExplorer(TraceExplorerProtocolClient traceExplorer) { + this.headlessTraceExplorer = traceExplorer; + } + + @Override + public ITraceExplorer, State, TracedObject, Dimension, Value> getTraceExplorer() { + return this.headlessTraceExplorer; + } + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/TraceManagerAddonProtocolClientAware.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/TraceManagerAddonProtocolClientAware.java new file mode 100644 index 000000000..eff73725b --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/TraceManagerAddonProtocolClientAware.java @@ -0,0 +1,6 @@ +package org.eclipse.gemoc.executionframework.mep.trace; + +public interface TraceManagerAddonProtocolClientAware { + + void connect(ITraceManagerAddonProtocolClient client); +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/TraceManagerAddonProtocolServer.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/TraceManagerAddonProtocolServer.java new file mode 100644 index 000000000..4acc12d3c --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/TraceManagerAddonProtocolServer.java @@ -0,0 +1,91 @@ +package org.eclipse.gemoc.executionframework.mep.trace; + +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.concurrent.CompletableFuture; + +import org.apache.log4j.Logger; +import org.eclipse.gemoc.executionframework.mep.trace.types.SerializableExecutionContext; +import org.eclipse.gemoc.executionframework.mep.trace.types.SerializableStep; +import org.eclipse.lsp4j.jsonrpc.Endpoint; +import org.eclipse.lsp4j.jsonrpc.json.JsonRpcMethod; +import org.eclipse.lsp4j.jsonrpc.json.JsonRpcMethodProvider; +import org.eclipse.lsp4j.jsonrpc.services.ServiceEndpoints; + +public class TraceManagerAddonProtocolServer implements Endpoint, ITraceManagerAddonProtocolServer, JsonRpcMethodProvider, TraceManagerAddonProtocolClientAware { + + private static final Logger LOG = Logger.getLogger(TraceManagerAddonProtocolServer.class); + + ITraceManagerAddonProtocolClient client; + + private Map supportedMethods; + + @Override + public void connect(ITraceManagerAddonProtocolClient client) { + this.client = client; + } + + @Override + public Map supportedMethods() { + if (supportedMethods != null) { + return supportedMethods; + } + + Map supportedMethods = new LinkedHashMap<>(); + supportedMethods.putAll(ServiceEndpoints.getSupportedMethods(getClass())); + + for (JsonRpcMethod supportedMethod : supportedMethods.values()) { + LOG.info("supported method " + supportedMethod.getMethodName() + " " + supportedMethod.getParameterTypes()); + } + + this.supportedMethods = supportedMethods; + return supportedMethods; + } + + @Override + public void notify(String method, Object parameter) { + LOG.info("notify " + method); + } + + @Override + public CompletableFuture request(String method, Object parameter) { + throw new UnsupportedOperationException("The json request \'" + method + "\' is unknown."); + } + + @Override + public CompletableFuture notifyEngineAboutToStart(SerializableExecutionContext serializableExecutionContext) { + LOG.info("notifyEngineAboutToStart"); + CompletableFuture future = CompletableFuture.runAsync(new Runnable() { + @Override + public void run() { + TraceAddonSingleton.getTraceAddon().engineAboutToStart(serializableExecutionContext.getExecutionContext()); + } + }); + return future; + } + + @Override + public CompletableFuture notifyAboutToExecuteStep(SerializableStep serializableStep) { + LOG.info("notifyAboutToExecuteStep"); + CompletableFuture future = CompletableFuture.runAsync(new Runnable() { + @Override + public void run() { + TraceAddonSingleton.getTraceAddon().aboutToExecuteStep(serializableStep.getStep()); + } + }); + return future; + } + + @Override + public CompletableFuture notifyStepExecuted(SerializableStep serializableStep) { + LOG.info("notifyStepExecuted"); + CompletableFuture future = CompletableFuture.runAsync(new Runnable() { + @Override + public void run() { + TraceAddonSingleton.getTraceAddon().stepExecuted(serializableStep.getStep()); + } + }); + return future; + } + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/TraceManagerAddonProtocolServerAware.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/TraceManagerAddonProtocolServerAware.java new file mode 100644 index 000000000..c1853c221 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/TraceManagerAddonProtocolServerAware.java @@ -0,0 +1,6 @@ +package org.eclipse.gemoc.executionframework.mep.trace; + +public interface TraceManagerAddonProtocolServerAware { + + void connect(ITraceManagerAddonProtocolServer server); +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/types/SerializableExecutionContext.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/types/SerializableExecutionContext.java new file mode 100644 index 000000000..47feb562a --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/types/SerializableExecutionContext.java @@ -0,0 +1,120 @@ +package org.eclipse.gemoc.executionframework.mep.trace.types; + +import java.io.Serializable; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.gemoc.trace.commons.model.trace.MSEModel; +import org.eclipse.gemoc.xdsmlframework.api.core.ExecutionMode; +import org.eclipse.gemoc.xdsmlframework.api.core.IExecutionContext; +import org.eclipse.gemoc.xdsmlframework.api.core.IExecutionPlatform; +import org.eclipse.gemoc.xdsmlframework.api.core.IExecutionWorkspace; +import org.eclipse.gemoc.xdsmlframework.api.core.IRunConfiguration; +import org.eclipse.gemoc.xdsmlframework.api.extensions.languages.LanguageDefinitionExtension; +import org.eclipse.xtext.EcoreUtil2; +import org.emfjson.jackson.databind.EMFContext; +import org.emfjson.jackson.module.EMFModule; +import org.osgi.framework.Bundle; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class SerializableExecutionContext implements Serializable { + + private String resourceURI; + private String jsonModel; + + public SerializableExecutionContext(IExecutionContext executionContext) { + Resource resourceModel = executionContext.getResourceModel(); + EcoreUtil2.resolveAll(resourceModel); + ObjectMapper mapper = EMFModule.setupDefaultMapper(); + try { + this.jsonModel = mapper.writeValueAsString(resourceModel.getContents().get(0)); + this.resourceURI = resourceModel.getURI().toFileString(); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + } + + public IExecutionContext getExecutionContext() { + return new IExecutionContext() { + private Resource resourceModel = null; + + @Override + public void initializeResourceModel() { + + } + + @Override + public IExecutionWorkspace getWorkspace() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Resource getResourceModel() { + if (this.resourceModel == null) { + this.resourceModel = new ResourceSetImpl().createResource(URI.createFileURI(resourceURI)); + ObjectMapper mapper = EMFModule.setupDefaultMapper(); + try { + this.resourceModel.getContents().add(mapper.reader() + .withAttribute(EMFContext.Attributes.RESOURCE_SET, this.resourceModel.getResourceSet()) + .withAttribute(EMFContext.Attributes.RESOURCE_URI, resourceURI) + .forType(EObject.class).readValue(jsonModel)); + } catch (JsonMappingException e) { + e.printStackTrace(); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + } + return this.resourceModel; + } + + @Override + public ExecutionMode getExecutionMode() { + // TODO Auto-generated method stub + return null; + } + + @Override + public MSEModel getMSEModel() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Bundle getDslBundle() { + // TODO Auto-generated method stub + return null; + } + + @Override + public LanguageDefinitionExtension getLanguageDefinitionExtension() { + // TODO Auto-generated method stub + return null; + } + + @Override + public IExecutionPlatform getExecutionPlatform() { + // TODO Auto-generated method stub + return null; + } + + @Override + public IRunConfiguration getRunConfiguration() { + // TODO Auto-generated method stub + return null; + } + + @Override + public void dispose() { + // TODO Auto-generated method stub + + } + }; + } + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/types/SerializableStep.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/types/SerializableStep.java new file mode 100644 index 000000000..3ec7edd8e --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/trace/types/SerializableStep.java @@ -0,0 +1,105 @@ +package org.eclipse.gemoc.executionframework.mep.trace.types; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EObject; +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.trace.commons.model.trace.Step; +import org.eclipse.gemoc.trace.commons.model.trace.impl.MSEOccurrenceImpl; +import org.eclipse.xtext.EcoreUtil2; +import org.emfjson.jackson.annotations.EcoreIdentityInfo; +import org.emfjson.jackson.module.EMFModule; +import org.emfjson.jackson.resource.JsonResourceFactory; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; + +public class SerializableStep implements Serializable { + + private String jsonStep; + + public SerializableStep(Step step) { + EcoreUtil2.resolveAll(step); + + ObjectMapper mapper = new ObjectMapper(); + // Optional + mapper.configure(SerializationFeature.INDENT_OUTPUT, true); + + EMFModule module = new EMFModule(); + module.configure(EMFModule.Feature.OPTION_USE_ID, true); + // Optional + module.configure(EMFModule.Feature.OPTION_SERIALIZE_TYPE, true); + + module.setIdentityInfo(new EcoreIdentityInfo("_id")); + mapper.registerModule(module); + + try { + System.err.println(mapper.writeValueAsString(step)); + System.err.println(mapper.writeValueAsString(step.getMseoccurrence().getMse())); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + + ResourceSet jsonRS = new ResourceSetImpl(); + jsonRS.getResourceFactoryRegistry().getExtensionToFactoryMap().put("json", new JsonResourceFactory()); + Resource jsonResource = jsonRS.createResource(URI.createFileURI("step.json")); + EObject container = step; + while (container.eContainer() != null) { + container = container.eContainer(); + } + jsonResource.getContents().add(container); + jsonResource.getContents().add(step.getMseoccurrence().getMse()); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try { + jsonResource.save(baos, null); + this.jsonStep = new String(baos.toByteArray()); + baos.close(); + } catch (IOException e1) { + e1.printStackTrace(); + } + } + + public Step getStep() { + ResourceSet rs = new ResourceSetImpl(); + if (!rs.getResourceFactoryRegistry().getExtensionToFactoryMap().containsKey("json")) { + rs.getResourceFactoryRegistry().getExtensionToFactoryMap().put("json", new JsonResourceFactory()); + } + Resource jsonResource = rs.createResource(URI.createFileURI("step.json")); + ByteArrayInputStream bios = new ByteArrayInputStream(this.jsonStep.getBytes()); + try { + jsonResource.load(bios, null); + } catch (IOException e) { + e.printStackTrace(); + } + EObject rootObj = jsonResource.getContents().get(0); + EcoreUtil2.resolveAll(jsonResource.getContents().get(1)); + if (rootObj instanceof Step && ((Step) rootObj).getMseoccurrence() != null + && ((Step) rootObj).getMseoccurrence().getMse() == jsonResource.getContents().get(1)) { + return (Step) rootObj; + } else { + List> foundStep = new ArrayList<>(); + rootObj.eAllContents().forEachRemaining(obj -> { + if (obj instanceof Step) { + Step step = (Step) obj; + if (step.getMseoccurrence() != null && + !((MSEOccurrenceImpl)step.getMseoccurrence()).basicGetMse().eIsProxy() && + step.getMseoccurrence().getMse() == jsonResource.getContents().get(1)) { + //EcoreUtil2.resolveAll(step); + foundStep.add(step); + } + } + }); + return foundStep.get(0); + } + } + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/types/SourceBreakpoint.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/types/SourceBreakpoint.java new file mode 100644 index 000000000..7476a63f4 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/types/SourceBreakpoint.java @@ -0,0 +1,15 @@ +package org.eclipse.gemoc.executionframework.mep.types; + +public class SourceBreakpoint { + + private long line; + + public SourceBreakpoint(long line) { + this.line = line; + } + + public long getLine() { + return this.line; + } + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/types/StackFrame.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/types/StackFrame.java new file mode 100644 index 000000000..3f0a383ec --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/types/StackFrame.java @@ -0,0 +1,33 @@ +package org.eclipse.gemoc.executionframework.mep.types; + +public class StackFrame { + + private long id; + private String name; + private long line; + private long column; + + public StackFrame(long id, String name, long line, long column) { + this.id = id; + this.name = name; + this.line = line; + this.column = column; + } + + public long getId() { + return id; + } + + public String getName() { + return name; + } + + public long getLine() { + return line; + } + + public long getColumn() { + return column; + } + +} diff --git a/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/types/Variable.java b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/types/Variable.java new file mode 100644 index 000000000..c751d1963 --- /dev/null +++ b/framework/execution_framework/pomfirst/org.eclipse.gemoc.executionframework.mep/src/main/java/org/eclipse/gemoc/executionframework/mep/types/Variable.java @@ -0,0 +1,22 @@ +package org.eclipse.gemoc.executionframework.mep.types; + +public class Variable { + + private String name; + private String value; + + + public Variable(String name, String value) { + this.name = name; + this.value = value; + } + + public String getName() { + return name; + } + + public String getValue() { + return value; + } + +} 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..e294309c3 --- /dev/null +++ b/framework/execution_framework/pomfirst/pom.xml @@ -0,0 +1,75 @@ + + + 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.engine.headless + 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 + + + + + + + diff --git a/framework/framework_commons/.project b/framework/framework_commons/.project index d15b71066..ef5d854a8 100644 --- a/framework/framework_commons/.project +++ b/framework/framework_commons/.project @@ -5,7 +5,13 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature 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/plugin.xml b/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/plugin.xml index 760840a29..53a6816df 100644 --- a/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/plugin.xml +++ b/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/plugin.xml @@ -28,8 +28,14 @@ + dependencies=" " + name="org.eclipse.gemoc.metaprog.ecore"> + + 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.api/schema/org.eclipse.gemoc.gemoc_language_workbench.metaprog.exsd b/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/schema/org.eclipse.gemoc.gemoc_language_workbench.metaprog.exsd index b54bc9dd7..b2feecfe2 100644 --- a/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/schema/org.eclipse.gemoc.gemoc_language_workbench.metaprog.exsd +++ b/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/schema/org.eclipse.gemoc.gemoc_language_workbench.metaprog.exsd @@ -15,6 +15,9 @@ + + Extension point for the definition of meta-programming approaches. + @@ -48,7 +51,15 @@ + + + Meta-programmation approach + + + + + @@ -56,13 +67,53 @@ - + + + + Dependencies of the meta-programming approach + + + + + + + + + + Allows to define an entry for a meta-programming approach. +Each languageComponent must specify a name, a description, states whether it is optional or not. +A validation rule can also be specify but is not required. + + + + + + + State whether the languageComponent is optional or not. + + + + + + + Name of the languageComponent, the name will be used as the key of the entry in the dsl file. + + + + + + + Description of the languageComponent, the description can be used by the tools present in the GEMOC Studio. + + + + - Validator for the metaprogramming approach, provides checks for the DSLValidator to perform. + (optional) Validation Rule for the languageComponent, this validation implements the ILanguageComponentValidator. - + diff --git a/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/src/org/eclipse/gemoc/xdsmlframework/api/extensions/metaprog/EcoreRule.java b/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/src/org/eclipse/gemoc/xdsmlframework/api/extensions/metaprog/EcoreRule.java index 2ea09b7b4..b9bb45240 100644 --- a/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/src/org/eclipse/gemoc/xdsmlframework/api/extensions/metaprog/EcoreRule.java +++ b/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/src/org/eclipse/gemoc/xdsmlframework/api/extensions/metaprog/EcoreRule.java @@ -11,7 +11,6 @@ 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.dsl.Dsl; import org.eclipse.gemoc.dsl.Entry; /** @@ -20,30 +19,7 @@ * @author GUEGUEN Ronan * */ -public class EcoreRule implements IRule{ - - /* - * The method checks for the presence of an "ecore" entry in the dsl file. - * (non-Javadoc) - * @see metaprogramming.extensionpoint.IRule#execute(org.eclipse.gemoc.dsl.Dsl) - */ - @Override - public Message execute(Dsl dsl) { - - ArrayList entriesNames = new ArrayList(); - - for (Entry e : dsl.getEntries()) { - entriesNames.add(e.getKey()); - } - - if(!entriesNames.contains("ecore")) { - return (new Message("Missing entry \"ecore\"", Severity.ERROR)); - } - - return (new Message("",Severity.DEFAULT)); - - } - +public class EcoreRule implements ILanguageComponentValidator{ /* * This method checks if the adress given in the "ecore" entry in the dsl file points to an existing file, @@ -52,7 +28,7 @@ public Message execute(Dsl dsl) { * @see metaprogramming.extensionpoint.IRule#execute(org.eclipse.gemoc.dsl.Entry) */ @Override - public Message execute(Entry entry) { + public Message validate(Entry entry) { if("ecore".matches(entry.getKey())) { URI uri = URI.createURI(entry.getValue()); diff --git a/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/src/org/eclipse/gemoc/xdsmlframework/api/extensions/metaprog/EcoreRuleProvider.java b/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/src/org/eclipse/gemoc/xdsmlframework/api/extensions/metaprog/EcoreRuleProvider.java deleted file mode 100644 index bff03643e..000000000 --- a/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/src/org/eclipse/gemoc/xdsmlframework/api/extensions/metaprog/EcoreRuleProvider.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.eclipse.gemoc.xdsmlframework.api.extensions.metaprog; - -import java.util.ArrayList; -import java.util.Collection; - -public class EcoreRuleProvider implements IRuleProvider { - - private ArrayList ruleSet = new ArrayList(); - - public EcoreRuleProvider() { - ruleSet.add(new EcoreRule()); - } - - @Override - public Collection getValidationRules() { - return ruleSet; - } - -} diff --git a/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/src/org/eclipse/gemoc/xdsmlframework/api/extensions/metaprog/IRule.java b/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/src/org/eclipse/gemoc/xdsmlframework/api/extensions/metaprog/ILanguageComponentValidator.java similarity index 59% rename from framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/src/org/eclipse/gemoc/xdsmlframework/api/extensions/metaprog/IRule.java rename to framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/src/org/eclipse/gemoc/xdsmlframework/api/extensions/metaprog/ILanguageComponentValidator.java index 134dad000..29ca8904c 100644 --- a/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/src/org/eclipse/gemoc/xdsmlframework/api/extensions/metaprog/IRule.java +++ b/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/src/org/eclipse/gemoc/xdsmlframework/api/extensions/metaprog/ILanguageComponentValidator.java @@ -1,6 +1,5 @@ package org.eclipse.gemoc.xdsmlframework.api.extensions.metaprog; -import org.eclipse.gemoc.dsl.Dsl; import org.eclipse.gemoc.dsl.Entry; /** @@ -10,22 +9,14 @@ * @author GUEGUEN Ronan * */ -public interface IRule { - - /** - * Returns a Message containing informations regarding the Dsl with a specific Severity depending on the Message send. - * If nothing wrong is noticed in the Dsl, the Severity should be set as DEFAULT. - * @param dsl -Dsl on which the validation will be performed - * @return Message pointing to the Dsl - */ - public abstract Message execute(Dsl dsl); - +public interface ILanguageComponentValidator { + /** * Returns a Message containing informations regarding the Dsl Entry with a specific Severity depending on the Message send. * If nothing wrong is noticed in the Entry, the Severity should be set as DEFAULT. * @param entry -Dsl entry on which the validation is performed * @return Message pointing to the Entry */ - public abstract Message execute(Entry entry); + public abstract Message validate(Entry entry); } diff --git a/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/src/org/eclipse/gemoc/xdsmlframework/api/extensions/metaprog/IRuleProvider.java b/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/src/org/eclipse/gemoc/xdsmlframework/api/extensions/metaprog/IRuleProvider.java deleted file mode 100644 index d1c1daf69..000000000 --- a/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/src/org/eclipse/gemoc/xdsmlframework/api/extensions/metaprog/IRuleProvider.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.eclipse.gemoc.xdsmlframework.api.extensions.metaprog; - -import java.util.Collection; - -/** - * Interface used to create RuleProvider. - * RuleProviders provide rules to the DslValidator. - * - * @author GUEGUEN Ronan - * - */ -public interface IRuleProvider { - - /** - * Returns a Collection of IRules from the IRuleProvider - * - * @return a Collection of IRules from the IRuleProvider - */ - public abstract Collection getValidationRules(); - -} diff --git a/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/src/org/eclipse/gemoc/xdsmlframework/api/extensions/metaprog/LanguageComponentHelper.java b/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/src/org/eclipse/gemoc/xdsmlframework/api/extensions/metaprog/LanguageComponentHelper.java new file mode 100644 index 000000000..26a7e2744 --- /dev/null +++ b/framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/src/org/eclipse/gemoc/xdsmlframework/api/extensions/metaprog/LanguageComponentHelper.java @@ -0,0 +1,80 @@ +package org.eclipse.gemoc.xdsmlframework.api.extensions.metaprog; + +import java.util.ArrayList; + +import org.eclipse.core.runtime.IConfigurationElement; + +public class LanguageComponentHelper { + + private IConfigurationElement[] exts = org.eclipse.core.runtime.Platform.getExtensionRegistry().getConfigurationElementsFor("org.eclipse.gemoc.gemoc_language_workbench.metaprog"); + + public LanguageComponentHelper() { + + } + + public ArrayList getAllMetaprogKeys() { + + ArrayList allKeys = new ArrayList(); + + for(IConfigurationElement appr : exts) { + IConfigurationElement[] keys = appr.getChildren("languageComponent"); + for (IConfigurationElement key : keys) { + allKeys.add(key.getAttribute("name")); + } + } + + return allKeys; + + } + + + public ArrayList getApproachKeys(IConfigurationElement approach){ + + ArrayList allKeys = new ArrayList(); + + for(IConfigurationElement comp : approach.getChildren("languageComponent")) { + allKeys.add(comp); + } + + return allKeys; + } + + + public ArrayList getApproachKeys(String approachName){ + + ArrayList allKeys = new ArrayList(); + + for (IConfigurationElement appr : exts) { + if(approachName.matches(appr.getAttribute("name"))){ + for(IConfigurationElement comp : appr.getChildren("languageComponent")) { + allKeys.add(comp); + } + } + } + + return allKeys; + } + + + public ArrayList getFullApproachKeys(String approach){ + + ArrayList allKeys = new ArrayList(); + + for(IConfigurationElement appr : exts) { + if(approach.matches(appr.getAttribute("name"))){ + allKeys.addAll(getApproachKeys(appr)); + + String[] dependencies = appr.getAttribute("dependencies").split(","); + + for(String depen : dependencies){ + allKeys.addAll(getApproachKeys(depen)); + } + + } + } + + return allKeys; + } + + +} 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/framework/pom.xml b/framework/pom.xml index 0d569108e..63189ef84 100644 --- a/framework/pom.xml +++ b/framework/pom.xml @@ -8,7 +8,7 @@ org.eclipse.gemoc org.eclipse.gemoc.modeldebugging.root - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT .. @@ -34,10 +34,11 @@ p2 ${melange.p2.url} + - Sirius + efxclipse p2 - ${sirius.p2.url} + ${efxclipse.p2.url} @@ -50,4 +51,4 @@ - \ No newline at end of file + diff --git a/framework/xdsml_framework/.project b/framework/xdsml_framework/.project index 9578f21ec..ef4b3812c 100644 --- a/framework/xdsml_framework/.project +++ b/framework/xdsml_framework/.project @@ -5,7 +5,13 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature diff --git a/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/.project b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/.project index b84825244..81c06b0a2 100644 --- a/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/.project +++ b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/.project @@ -20,8 +20,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature diff --git a/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/src/org/eclipse/gemoc/xdsmlframework/extensions/kermeta3/Kermeta3Rule.java b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/src/org/eclipse/gemoc/xdsmlframework/extensions/kermeta3/Kermeta3Rule.java deleted file mode 100644 index 830f16eb2..000000000 --- a/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/src/org/eclipse/gemoc/xdsmlframework/extensions/kermeta3/Kermeta3Rule.java +++ /dev/null @@ -1,95 +0,0 @@ -package org.eclipse.gemoc.xdsmlframework.extensions.kermeta3; - -import java.util.ArrayList; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IWorkspaceRoot; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.Path; -import org.eclipse.gemoc.dsl.Dsl; -import org.eclipse.gemoc.dsl.Entry; -import org.eclipse.gemoc.xdsmlframework.api.extensions.metaprog.IRule; -import org.eclipse.gemoc.xdsmlframework.api.extensions.metaprog.Message; -import org.eclipse.gemoc.xdsmlframework.api.extensions.metaprog.Severity; -import org.eclipse.jdt.core.IAnnotation; -import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jdt.core.IMethod; -import org.eclipse.jdt.core.IType; -import org.eclipse.jdt.core.JavaCore; - -public class Kermeta3Rule implements IRule{ - - boolean tagTests; - - public Kermeta3Rule(boolean performsTagTest) { - tagTests = performsTagTest; - } - - @Override - public Message execute(Dsl dsl) { - ArrayList entriesNames = new ArrayList(); - - for (Entry e : dsl.getEntries()) { - entriesNames.add(e.getKey()); - } - - if(!entriesNames.contains("k3")) { - return (new Message("Missing entry \"k3\"", Severity.ERROR)); - } - - return (new Message("",Severity.DEFAULT)); - } - - @Override - public Message execute(Entry entry) { - if("k3".matches(entry.getKey())) { - String aspectsFields = entry.getValue(); - - IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); - IFile file = root.getFile(new Path(entry.eResource().getURI().toPlatformString(true))); - - IProject proj = file.getProject(); - IJavaProject jProj = JavaCore.create(proj); - - if(jProj == null) { - return (new Message("No project dsa in the workspace", Severity.ERROR)); - } - - ArrayList aspectsName = new ArrayList<>(); - ArrayList aspectsAnnotation = new ArrayList<>(); - - for(String s : aspectsFields.split(",")) { - aspectsName.add(s.trim()); - } - - - for(String asp : aspectsName) { - try { - IType type = jProj.findType(asp); - for(IMethod meth : type.getMethods()) { - for(IAnnotation annot : meth.getAnnotations()) { - aspectsAnnotation.add(annot.getElementName()); - } - } - } catch (Exception e) { - return (new Message("No aspect matching \""+asp+ "\" in the project", Severity.ERROR)); - } - } - - if(tagTests) { - - if(!aspectsAnnotation.contains("Main")) { - return (new Message("No method annotated with \"Main\" in the project", Severity.ERROR)); - } - - if(!aspectsAnnotation.contains("InitializeModel")) { - return (new Message("No method annotated with \"InitializeModel\" in the project", Severity.WARNING)); - } - - } - - } - return (new Message("", Severity.DEFAULT)); - } -} diff --git a/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/src/org/eclipse/gemoc/xdsmlframework/extensions/kermeta3/Kermeta3RuleHelper.java b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/src/org/eclipse/gemoc/xdsmlframework/extensions/kermeta3/Kermeta3RuleHelper.java new file mode 100644 index 000000000..eaa936173 --- /dev/null +++ b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/src/org/eclipse/gemoc/xdsmlframework/extensions/kermeta3/Kermeta3RuleHelper.java @@ -0,0 +1,74 @@ +package org.eclipse.gemoc.xdsmlframework.extensions.kermeta3; + +import java.util.ArrayList; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.Path; +import org.eclipse.emf.common.util.URI; +import org.eclipse.gemoc.xdsmlframework.api.extensions.metaprog.Message; +import org.eclipse.gemoc.xdsmlframework.api.extensions.metaprog.Severity; +import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jdt.core.IMethod; +import org.eclipse.jdt.core.IType; +import org.eclipse.jdt.core.JavaCore; + +public class Kermeta3RuleHelper{ + + boolean tagTests; + + public Kermeta3RuleHelper(boolean performsTagTest) { + tagTests = performsTagTest; + } + + public Message execute(String aspects, URI uri ) { + IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); + IFile file = root.getFile(new Path(uri.toPlatformString(true))); + + IProject proj = file.getProject(); + IJavaProject jProj = JavaCore.create(proj); + + if(jProj == null) { + return (new Message("No project dsa in the workspace", Severity.ERROR)); + } + + return (executeAux(aspects.split(","), jProj)); + + } + + public Message executeAux(String[] aspects, IJavaProject jProj) { + + ArrayList aspectsAnnotation = new ArrayList<>(); + + for(String asp : aspects) { + asp = asp.trim(); + try { + IType type = jProj.findType(asp); + for(IMethod meth : type.getMethods()) { + for(IAnnotation annot : meth.getAnnotations()) { + aspectsAnnotation.add(annot.getElementName()); + } + } + } catch (Exception e) { + return (new Message("No aspect matching \""+asp+ "\" in the project", Severity.ERROR)); + } + } + + if(tagTests) { + + if(!aspectsAnnotation.contains("Main")) { + return (new Message("No method annotated with \"Main\" in the project", Severity.ERROR)); + } + + if(!aspectsAnnotation.contains("InitializeModel")) { + return (new Message("No method annotated with \"InitializeModel\" in the project", Severity.WARNING)); + } + + } + + return (new Message("", Severity.DEFAULT)); + } +} diff --git a/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.sirius/.project b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.sirius/.project index 8342ee142..c4d7af6e0 100644 --- a/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.sirius/.project +++ b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.sirius/.project @@ -25,8 +25,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature net.sf.eclipsecs.core.CheckstyleNature diff --git a/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.sirius/src/main/java/org/eclipse/gemoc/xdsmlframework/extensions/sirius/wizards/pages/AddDebugRepresentationPage.java b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.sirius/src/main/java/org/eclipse/gemoc/xdsmlframework/extensions/sirius/wizards/pages/AddDebugRepresentationPage.java index 9b7dbd586..3f8885cda 100644 --- a/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.sirius/src/main/java/org/eclipse/gemoc/xdsmlframework/extensions/sirius/wizards/pages/AddDebugRepresentationPage.java +++ b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.sirius/src/main/java/org/eclipse/gemoc/xdsmlframework/extensions/sirius/wizards/pages/AddDebugRepresentationPage.java @@ -11,6 +11,7 @@ package org.eclipse.gemoc.xdsmlframework.extensions.sirius.wizards.pages; import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.sirius.diagram.business.internal.metamodel.helper.LayerHelper; import org.eclipse.sirius.diagram.description.DiagramDescription; import org.eclipse.sirius.diagram.description.Layer; import org.eclipse.swt.SWT; @@ -77,7 +78,10 @@ public void modifyText(ModifyEvent e) { public void setDiagram(DiagramDescription diagram) { debugLayerCombo.removeAll(); - for (Layer layer : diagram.getAllLayers()) { + if(diagram.getDefaultLayer() != null) { + debugLayerCombo.add(diagram.getDefaultLayer().getName()); + } + for (Layer layer : diagram.getAdditionalLayers()) { debugLayerCombo.add(layer.getName()); } debugLayerCombo.setText("Debug"); diff --git a/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.ide.ui/.project b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.ide.ui/.project index 69c129ac8..606b3c6e7 100644 --- a/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.ide.ui/.project +++ b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.ide.ui/.project @@ -25,8 +25,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature diff --git a/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.ui.utils/.project b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.ui.utils/.project index fb0a0de72..2b52a0674 100644 --- a/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.ui.utils/.project +++ b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.ui.utils/.project @@ -25,8 +25,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature net.sf.eclipsecs.core.CheckstyleNature diff --git a/framework/xdsml_framework/tests/org.eclipse.gemoc.xdsmlframework.test.lib/.project b/framework/xdsml_framework/tests/org.eclipse.gemoc.xdsmlframework.test.lib/.project index 9cf8d086a..25a1de08b 100644 --- a/framework/xdsml_framework/tests/org.eclipse.gemoc.xdsmlframework.test.lib/.project +++ b/framework/xdsml_framework/tests/org.eclipse.gemoc.xdsmlframework.test.lib/.project @@ -25,8 +25,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature org.eclipse.xtext.ui.shared.xtextNature diff --git a/pom.xml b/pom.xml index e6d979a23..4fdeceb30 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ org.eclipse.gemoc org.eclipse.gemoc.modeldebugging.root - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT @@ -27,22 +27,24 @@ - 1.5.1 - 2.14.0 + 1.7.0 + 2.21.0 UTF-8 scm:git:https://github.com/eclipse/gemoc-studio-modeldebugging.git - http://download.eclipse.org/releases/photon + http://download.eclipse.org/releases/2020-03 http://www.kermeta.org/k3/update_2018-09-05 - http://melange.inria.fr/updatesite/nightly/update_2018-12-03/ + http://melange.inria.fr/updatesite/nightly/update_2020-06-19 http://download.eclipse.org/elk/updates/releases/0.4.1 http://download.eclipse.org/tools/ajdt/48/dev/update - https://download.eclipse.org/sirius/updates/releases/6.1.3/photon - + + https://downloads.efxclipse.bestsolution.at/p2-repos/openjfx-11/repository/ + https://download.eclipse.org/efxclipse/updates-released/3.6.0/site + - 1.8 - 1.8 + 11 + 11 false @@ -55,33 +57,28 @@ ${tycho-version} true - - - org.eclipse.tycho - tycho-compiler-plugin - ${tycho-version} - - UTF-8 - 1.8 - 1.8 - - - com.oracle - javafx - 3.0.0-SNAPSHOT - ${java.home}/lib/jfxrt.jar - system - - - com.oracle - javafxswt - 3.0.0-SNAPSHOT - ${java.home}/lib/jfxswt.jar - system - - - - + + org.eclipse.tycho + tycho-compiler-plugin + ${tycho-version} + + UTF-8 + + + org.openjfx + javafx-controls + 11.0.2 + + + org.openjfx + javafx-swt + 11.0.2 + ${env.JAVAFX_HOME}/lib/javafx-swt.jar + system + + + + org.eclipse.tycho @@ -199,7 +196,7 @@ org.eclipse.gemoc org.eclipse.gemoc.modeldebugging.target-platform - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT --> @@ -221,31 +218,6 @@ - - - - - - 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 - - @@ -253,8 +225,8 @@ maven-compiler-plugin 3.8.0 - 1.8 - 1.8 + 11 + 11 ${project.build.sourceEncoding} @@ -283,6 +255,14 @@ + + org.openjfx + javafx-maven-plugin + 0.0.5 + + + + @@ -293,8 +273,16 @@ org.apache.maven.plugins maven-antrun-plugin - 1.8 + 11 + + org.openjfx + javafx-maven-plugin + 0.0.5 + + + + @@ -374,6 +362,32 @@ + + + org.openjfx + javafx + 11 + pom + + + + + org.openjfx + javafx-controls + 11 + + + + org.openjfx + javafx-base + 11 + + + + org.openjfx + javafx-graphics + 11 + org.eclipse.xtend xtend-maven-plugin diff --git a/pomfirst/pom.xml b/pomfirst/pom.xml new file mode 100644 index 000000000..c0e93f188 --- /dev/null +++ b/pomfirst/pom.xml @@ -0,0 +1,107 @@ + + + 4.0.0 + + org.eclipse.gemoc + org.eclipse.gemoc.modeldebugging.pomfirst + 1.0.0-SNAPSHOT + + pom + + + 1.7.0 + 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/execution_framework/plugins/org.eclipse.gemoc.executionframework.engine.model/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/ + + + diff --git a/releng/gemoc.sonar/pom.xml b/releng/gemoc.sonar/pom.xml index 85220a791..3ca759903 100644 --- a/releng/gemoc.sonar/pom.xml +++ b/releng/gemoc.sonar/pom.xml @@ -10,5 +10,5 @@ ../../pom.xml GEMOC ModelDebugging - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT diff --git a/releng/pom.xml b/releng/pom.xml index 9a68c4d5f..37f21a3d0 100644 --- a/releng/pom.xml +++ b/releng/pom.xml @@ -8,7 +8,7 @@ org.eclipse.gemoc.modeldebugging.root org.eclipse.gemoc - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT .. @@ -43,5 +43,11 @@ p2 ${aspectJ.p2.url} + + + efxclipse + p2 + ${efxclipse.p2.url} + diff --git a/simulationmodelanimation/.project b/simulationmodelanimation/.project index 483b821f4..b38d04bcd 100644 --- a/simulationmodelanimation/.project +++ b/simulationmodelanimation/.project @@ -5,7 +5,13 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature diff --git a/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug.edit/.project b/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug.edit/.project index 9fc910745..b0d90f2a1 100644 --- a/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug.edit/.project +++ b/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug.edit/.project @@ -25,8 +25,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.jdt.core.javanature org.eclipse.pde.PluginNature net.sf.eclipsecs.core.CheckstyleNature 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.sirius.ui/.project b/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug.ide.sirius.ui/.project index 0ce8a2dfc..e91ca493e 100644 --- a/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug.ide.sirius.ui/.project +++ b/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug.ide.sirius.ui/.project @@ -25,8 +25,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.jdt.core.javanature org.eclipse.pde.PluginNature net.sf.eclipsecs.core.CheckstyleNature diff --git a/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug.ide.sirius.ui/docs/asciidoc/user_lw_DefineSiriusDebug.asciidoc b/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug.ide.sirius.ui/docs/asciidoc/user_lw_DefineSiriusDebug.asciidoc index 3f11ec4f5..ede2dc422 100644 --- a/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug.ide.sirius.ui/docs/asciidoc/user_lw_DefineSiriusDebug.asciidoc +++ b/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug.ide.sirius.ui/docs/asciidoc/user_lw_DefineSiriusDebug.asciidoc @@ -76,6 +76,25 @@ The debugger services class is use to tell which representations should be activ image::images/workbench/language/debug_services.png[Debug services] + +[IMPORTANT] +==== + +The line `res.add(new StringCouple("DD_or_RN", "LAYER_ID"));` indicates +which layers are part of the "debug" animation. Ie. if these layers must be activated automatically +and updated when an execution is in debug mode. + +The way to indicate the layer depends on how you have created the layer: + +* in case of a single odesign with all layers in a single viewpoint: +** the first String _DD_or_RN_ is the _id_ of the Diagram Description +** the second String _LAYER_ID_ is the _id_ of the Layer +* in case of a diagram extension: +** the first String _DD_or_RN_ is the _Representation Name_ of the Diagram Extension (do not confuse with the Name !!) +** the second String _LAYER_ID_ is the _id_ of the Layer + +==== + ====== Debug layer The default debug layer adds action to start the simulation in debug mode and to toggle breakpoints (1). When a breakpoint exists for an element of the diagram, a visual feedback is displayed according to the breakpoint state (2). The current instruction is also highlighted in yellow by default (3). diff --git a/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug.ide.ui/.project b/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug.ide.ui/.project index 10dd90520..9c28fcbca 100644 --- a/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug.ide.ui/.project +++ b/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug.ide.ui/.project @@ -25,8 +25,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.jdt.core.javanature org.eclipse.pde.PluginNature net.sf.eclipsecs.core.CheckstyleNature diff --git a/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug.ide/.project b/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug.ide/.project index c8f90293f..5965cb1be 100644 --- a/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug.ide/.project +++ b/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug.ide/.project @@ -25,8 +25,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.jdt.core.javanature org.eclipse.pde.PluginNature net.sf.eclipsecs.core.CheckstyleNature 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/.project b/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug/.project index 68e26ece9..77e89a85a 100644 --- a/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug/.project +++ b/simulationmodelanimation/plugins/org.eclipse.gemoc.dsl.debug/.project @@ -25,8 +25,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature fr.obeo.dsl.viewpoint.nature.modelingproject org.eclipse.jdt.core.javanature net.sf.eclipsecs.core.CheckstyleNature 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/simulationmodelanimation/pom.xml b/simulationmodelanimation/pom.xml index 62257837d..5a78f9560 100644 --- a/simulationmodelanimation/pom.xml +++ b/simulationmodelanimation/pom.xml @@ -27,7 +27,7 @@ - 1.5.1 + 1.7.0 scm:git:https://github.com/SiriusLab/ModelDebugging.git @@ -87,7 +87,7 @@ - + @@ -115,8 +115,8 @@ ${tycho-version} UTF-8 - 1.8 - 1.8 + 11 + 11 diff --git a/simulationmodelanimation/releng/org.eclipse.gemoc.dsl.debug.feature/.project b/simulationmodelanimation/releng/org.eclipse.gemoc.dsl.debug.feature/.project index 7eb2ae543..7dd179f2f 100644 --- a/simulationmodelanimation/releng/org.eclipse.gemoc.dsl.debug.feature/.project +++ b/simulationmodelanimation/releng/org.eclipse.gemoc.dsl.debug.feature/.project @@ -10,8 +10,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.FeatureNature diff --git a/simulationmodelanimation/releng/org.eclipse.gemoc.dsl.debug.sirius.ui.feature/.project b/simulationmodelanimation/releng/org.eclipse.gemoc.dsl.debug.sirius.ui.feature/.project index c11d989d6..702310efc 100644 --- a/simulationmodelanimation/releng/org.eclipse.gemoc.dsl.debug.sirius.ui.feature/.project +++ b/simulationmodelanimation/releng/org.eclipse.gemoc.dsl.debug.sirius.ui.feature/.project @@ -10,8 +10,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.FeatureNature diff --git a/simulationmodelanimation/releng/org.eclipse.gemoc.dsl.debug.ui.feature/.project b/simulationmodelanimation/releng/org.eclipse.gemoc.dsl.debug.ui.feature/.project index 0800288a6..1ab6c1fe2 100644 --- a/simulationmodelanimation/releng/org.eclipse.gemoc.dsl.debug.ui.feature/.project +++ b/simulationmodelanimation/releng/org.eclipse.gemoc.dsl.debug.ui.feature/.project @@ -10,8 +10,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.FeatureNature diff --git a/simulationmodelanimation/tests/org.eclipse.gemoc.dsl.debug.tests/.project b/simulationmodelanimation/tests/org.eclipse.gemoc.dsl.debug.tests/.project index e1be638f2..392e0b4bc 100644 --- a/simulationmodelanimation/tests/org.eclipse.gemoc.dsl.debug.tests/.project +++ b/simulationmodelanimation/tests/org.eclipse.gemoc.dsl.debug.tests/.project @@ -25,8 +25,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.jdt.core.javanature org.eclipse.pde.PluginNature net.sf.eclipsecs.core.CheckstyleNature diff --git a/trace/commons/.project b/trace/commons/.project index 6b3e6f87b..103956814 100644 --- a/trace/commons/.project +++ b/trace/commons/.project @@ -5,7 +5,13 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature diff --git a/trace/commons/plugins/org.eclipse.gemoc.trace.commons.model/.project b/trace/commons/plugins/org.eclipse.gemoc.trace.commons.model/.project index 89df75095..3987bd5af 100644 --- a/trace/commons/plugins/org.eclipse.gemoc.trace.commons.model/.project +++ b/trace/commons/plugins/org.eclipse.gemoc.trace.commons.model/.project @@ -25,8 +25,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.jdt.core.javanature org.eclipse.pde.PluginNature org.eclipse.xtext.ui.shared.xtextNature 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/.project b/trace/commons/plugins/org.eclipse.gemoc.trace.commons/.project index 0429c3e7e..74c536683 100644 --- a/trace/commons/plugins/org.eclipse.gemoc.trace.commons/.project +++ b/trace/commons/plugins/org.eclipse.gemoc.trace.commons/.project @@ -30,8 +30,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature org.eclipse.xtext.ui.shared.xtextNature 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/.project b/trace/commons/plugins/org.eclipse.gemoc.trace.gemoc.api/.project index 08d725ae5..aa8686c2b 100644 --- a/trace/commons/plugins/org.eclipse.gemoc.trace.gemoc.api/.project +++ b/trace/commons/plugins/org.eclipse.gemoc.trace.gemoc.api/.project @@ -25,8 +25,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature 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 diff --git a/trace/commons/releng/org.eclipse.gemoc.trace.commons.feature/.project b/trace/commons/releng/org.eclipse.gemoc.trace.commons.feature/.project index 6efe1f5f3..ae5e2d05a 100644 --- a/trace/commons/releng/org.eclipse.gemoc.trace.commons.feature/.project +++ b/trace/commons/releng/org.eclipse.gemoc.trace.commons.feature/.project @@ -10,8 +10,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.FeatureNature diff --git a/trace/generator/.project b/trace/generator/.project index d089a1bfa..76fda9671 100644 --- a/trace/generator/.project +++ b/trace/generator/.project @@ -5,7 +5,13 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature diff --git a/trace/generator/plugins/org.eclipse.gemoc.trace.annotations/.project b/trace/generator/plugins/org.eclipse.gemoc.trace.annotations/.project index 365900d6a..e6325b28b 100644 --- a/trace/generator/plugins/org.eclipse.gemoc.trace.annotations/.project +++ b/trace/generator/plugins/org.eclipse.gemoc.trace.annotations/.project @@ -25,8 +25,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.jdt.core.javanature org.eclipse.pde.PluginNature net.sf.eclipsecs.core.CheckstyleNature diff --git a/trace/generator/plugins/org.eclipse.gemoc.trace.gemoc.generator/.project b/trace/generator/plugins/org.eclipse.gemoc.trace.gemoc.generator/.project index 28c494197..105cdc06b 100644 --- a/trace/generator/plugins/org.eclipse.gemoc.trace.gemoc.generator/.project +++ b/trace/generator/plugins/org.eclipse.gemoc.trace.gemoc.generator/.project @@ -30,8 +30,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature org.eclipse.xtext.ui.shared.xtextNature diff --git a/trace/generator/plugins/org.eclipse.gemoc.trace.gemoc.ui/.project b/trace/generator/plugins/org.eclipse.gemoc.trace.gemoc.ui/.project index 7b406b5e2..ada6147ec 100644 --- a/trace/generator/plugins/org.eclipse.gemoc.trace.gemoc.ui/.project +++ b/trace/generator/plugins/org.eclipse.gemoc.trace.gemoc.ui/.project @@ -30,8 +30,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature org.eclipse.xtext.ui.shared.xtextNature diff --git a/trace/generator/plugins/org.eclipse.gemoc.trace.gemoc/.project b/trace/generator/plugins/org.eclipse.gemoc.trace.gemoc/.project index 2a5a4fc99..bd7eefbd7 100644 --- a/trace/generator/plugins/org.eclipse.gemoc.trace.gemoc/.project +++ b/trace/generator/plugins/org.eclipse.gemoc.trace.gemoc/.project @@ -25,8 +25,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature org.eclipse.xtext.ui.shared.xtextNature diff --git a/trace/generator/plugins/org.eclipse.gemoc.trace.gemoc/src/org/eclipse/gemoc/trace/gemoc/traceaddon/AbstractTraceAddon.xtend b/trace/generator/plugins/org.eclipse.gemoc.trace.gemoc/src/org/eclipse/gemoc/trace/gemoc/traceaddon/AbstractTraceAddon.xtend index 4c6f41f96..33e245a00 100644 --- a/trace/generator/plugins/org.eclipse.gemoc.trace.gemoc/src/org/eclipse/gemoc/trace/gemoc/traceaddon/AbstractTraceAddon.xtend +++ b/trace/generator/plugins/org.eclipse.gemoc.trace.gemoc/src/org/eclipse/gemoc/trace/gemoc/traceaddon/AbstractTraceAddon.xtend @@ -47,15 +47,15 @@ import org.eclipse.gemoc.xdsmlframework.api.extensions.engine_addon.EngineAddonS abstract class AbstractTraceAddon implements IEngineAddon, IMultiDimensionalTraceAddon, State, TracedObject, Dimension, Value> { - IExecutionContext _executionContext - ITraceExplorer, State, TracedObject, Dimension, Value> traceExplorer - ITraceExtractor, State, TracedObject, Dimension, Value> traceExtractor - ITraceConstructor traceConstructor - ITraceNotifier traceNotifier - BatchModelChangeListener traceListener - var boolean needTransaction = true - BatchModelChangeListener listenerAddon - Trace, TracedObject, State> trace + protected IExecutionContext _executionContext + protected ITraceExplorer, State, TracedObject, Dimension, Value> traceExplorer + protected ITraceExtractor, State, TracedObject, Dimension, Value> traceExtractor + protected ITraceConstructor traceConstructor + protected ITraceNotifier traceNotifier + protected BatchModelChangeListener traceListener + protected var boolean needTransaction = true + protected BatchModelChangeListener listenerAddon + protected Trace, TracedObject, State> trace protected boolean activateUpdateEquivalenceClasses = true; @@ -111,7 +111,7 @@ abstract class AbstractTraceAddon implements IEngineAddon, IMultiDimensionalTrac manageStep(step, false) } - private def manageStep(Step step, boolean add) { + protected def manageStep(Step step, boolean add) { if (step !== null) { modifyTrace([ traceConstructor.addState(listenerAddon.getChanges(this)) @@ -217,7 +217,7 @@ abstract class AbstractTraceAddon implements IEngineAddon, IMultiDimensionalTrac /** * Same as above, but without message. */ - private def void modifyTrace(Runnable r) { + protected def void modifyTrace(Runnable r) { modifyTrace(r, "") } diff --git a/trace/generator/plugins/org.eclipse.gemoc.trace.metamodel.generator/.project b/trace/generator/plugins/org.eclipse.gemoc.trace.metamodel.generator/.project index c11cfa9ee..f34137931 100644 --- a/trace/generator/plugins/org.eclipse.gemoc.trace.metamodel.generator/.project +++ b/trace/generator/plugins/org.eclipse.gemoc.trace.metamodel.generator/.project @@ -25,8 +25,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature org.eclipse.xtext.ui.shared.xtextNature diff --git a/trace/generator/releng/org.eclipse.gemoc.trace.generator.feature/.project b/trace/generator/releng/org.eclipse.gemoc.trace.generator.feature/.project index 6efe1f5f3..ae5e2d05a 100644 --- a/trace/generator/releng/org.eclipse.gemoc.trace.generator.feature/.project +++ b/trace/generator/releng/org.eclipse.gemoc.trace.generator.feature/.project @@ -10,8 +10,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.FeatureNature diff --git a/trace/manager/.project b/trace/manager/.project index 90b38edd1..8752ebf8e 100644 --- a/trace/manager/.project +++ b/trace/manager/.project @@ -5,7 +5,13 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature diff --git a/trace/manager/plugins/org.eclipse.gemoc.addon.diffviewer/.classpath b/trace/manager/plugins/org.eclipse.gemoc.addon.diffviewer/.classpath index eca7bdba8..79cfc1f4a 100644 --- a/trace/manager/plugins/org.eclipse.gemoc.addon.diffviewer/.classpath +++ b/trace/manager/plugins/org.eclipse.gemoc.addon.diffviewer/.classpath @@ -1,7 +1,16 @@ - +<<<<<<< HEAD + +======= + +>>>>>>> branch 'master' of https://github.com/eclipse/gemoc-studio-modeldebugging.git + + + + + diff --git a/trace/manager/plugins/org.eclipse.gemoc.addon.diffviewer/.project b/trace/manager/plugins/org.eclipse.gemoc.addon.diffviewer/.project index cb91a1342..3ed2a1b12 100644 --- a/trace/manager/plugins/org.eclipse.gemoc.addon.diffviewer/.project +++ b/trace/manager/plugins/org.eclipse.gemoc.addon.diffviewer/.project @@ -20,8 +20,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature diff --git a/trace/manager/plugins/org.eclipse.gemoc.addon.diffviewer/.settings/org.eclipse.jdt.core.prefs b/trace/manager/plugins/org.eclipse.gemoc.addon.diffviewer/.settings/org.eclipse.jdt.core.prefs index 0c68a61dc..7adc0fb9a 100644 --- a/trace/manager/plugins/org.eclipse.gemoc.addon.diffviewer/.settings/org.eclipse.jdt.core.prefs +++ b/trace/manager/plugins/org.eclipse.gemoc.addon.diffviewer/.settings/org.eclipse.jdt.core.prefs @@ -1,7 +1,10 @@ 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.codegen.targetPlatform=11 +org.eclipse.jdt.core.compiler.compliance=11 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.8 +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=11 diff --git a/trace/manager/plugins/org.eclipse.gemoc.addon.diffviewer/META-INF/MANIFEST.MF b/trace/manager/plugins/org.eclipse.gemoc.addon.diffviewer/META-INF/MANIFEST.MF index 8b55d1ff8..9ec69d9b4 100644 --- a/trace/manager/plugins/org.eclipse.gemoc.addon.diffviewer/META-INF/MANIFEST.MF +++ b/trace/manager/plugins/org.eclipse.gemoc.addon.diffviewer/META-INF/MANIFEST.MF @@ -12,7 +12,10 @@ Require-Bundle: org.eclipse.ui, org.eclipse.gemoc.xdsmlframework.api;bundle-version="0.1.0", org.eclipse.emf.ecore.xmi, org.eclipse.emf.compare, - org.eclipse.gemoc.trace.commons.model;bundle-version="2.4.0" -Bundle-RequiredExecutionEnvironment: JavaSE-1.8 + org.eclipse.gemoc.trace.commons.model;bundle-version="2.4.0", + openjfx.base;bundle-version="11.0.0", + openjfx.controls;bundle-version="11.0.0", + openjfx.swt;bundle-version="11.0.0" +Bundle-RequiredExecutionEnvironment: JavaSE-11 Bundle-ActivationPolicy: lazy Automatic-Module-Name: org.eclipse.gemoc.addon.diffviewer diff --git a/trace/manager/plugins/org.eclipse.gemoc.addon.diffviewer/pom.xml b/trace/manager/plugins/org.eclipse.gemoc.addon.diffviewer/pom.xml index 65dbac0be..dd22cd72e 100644 --- a/trace/manager/plugins/org.eclipse.gemoc.addon.diffviewer/pom.xml +++ b/trace/manager/plugins/org.eclipse.gemoc.addon.diffviewer/pom.xml @@ -23,4 +23,47 @@ org.eclipse.gemoc.addon.diffviewer eclipse-plugin 3.0.1-SNAPSHOT - \ No newline at end of file + + + + + org.eclipse.tycho + tycho-compiler-plugin + ${tycho-version} + + UTF-8 + + + com.oracle + javafx-swt + 11.0.0-SNAPSHOT + ${java.home}/../java-11-openjfx/lib/javafx-swt.jar + system + + + com.oracle + javafx-base + 11.0.0-SNAPSHOT + ${java.home}/../java-11-openjfx/lib/javafx.base.jar + system + + + com.oracle + javafx-controls + 11.0.0-SNAPSHOT + ${java.home}/../java-11-openjfx/lib/javafx.controls.jar + system + + + com.oracle + javafx-graphics + 11.0.0-SNAPSHOT + ${java.home}/../java-11-openjfx/lib/javafx.graphics.jar + system + + + + + + + diff --git a/trace/manager/plugins/org.eclipse.gemoc.addon.multidimensional.timeline/.classpath b/trace/manager/plugins/org.eclipse.gemoc.addon.multidimensional.timeline/.classpath index 35506931e..417830766 100644 --- a/trace/manager/plugins/org.eclipse.gemoc.addon.multidimensional.timeline/.classpath +++ b/trace/manager/plugins/org.eclipse.gemoc.addon.multidimensional.timeline/.classpath @@ -1,6 +1,10 @@ - + + + + + diff --git a/trace/manager/plugins/org.eclipse.gemoc.addon.multidimensional.timeline/.project b/trace/manager/plugins/org.eclipse.gemoc.addon.multidimensional.timeline/.project index 65027049f..c070b7ab5 100644 --- a/trace/manager/plugins/org.eclipse.gemoc.addon.multidimensional.timeline/.project +++ b/trace/manager/plugins/org.eclipse.gemoc.addon.multidimensional.timeline/.project @@ -20,8 +20,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature diff --git a/trace/manager/plugins/org.eclipse.gemoc.addon.multidimensional.timeline/.settings/org.eclipse.jdt.core.prefs b/trace/manager/plugins/org.eclipse.gemoc.addon.multidimensional.timeline/.settings/org.eclipse.jdt.core.prefs index 87b7a7a3a..a58ebdcad 100644 --- a/trace/manager/plugins/org.eclipse.gemoc.addon.multidimensional.timeline/.settings/org.eclipse.jdt.core.prefs +++ b/trace/manager/plugins/org.eclipse.gemoc.addon.multidimensional.timeline/.settings/org.eclipse.jdt.core.prefs @@ -1,13 +1,15 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.compliance=11 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.release=disabled -org.eclipse.jdt.core.compiler.source=1.8 +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=11 diff --git a/trace/manager/plugins/org.eclipse.gemoc.addon.multidimensional.timeline/META-INF/MANIFEST.MF b/trace/manager/plugins/org.eclipse.gemoc.addon.multidimensional.timeline/META-INF/MANIFEST.MF index e35895931..0a6322c02 100644 --- a/trace/manager/plugins/org.eclipse.gemoc.addon.multidimensional.timeline/META-INF/MANIFEST.MF +++ b/trace/manager/plugins/org.eclipse.gemoc.addon.multidimensional.timeline/META-INF/MANIFEST.MF @@ -21,10 +21,9 @@ Require-Bundle: org.eclipse.gemoc.timeline;bundle-version="1.0.0", org.eclipse.gemoc.dsl.debug.ide.sirius.ui;bundle-version="1.0.0", org.eclipse.gemoc.dsl.debug.ide, org.eclipse.gemoc.xdsmlframework.api, - org.eclipse.gemoc.executionframework.debugger, - org.eclipse.fx.core + org.eclipse.gemoc.executionframework.debugger Bundle-ActivationPolicy: lazy -Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Bundle-RequiredExecutionEnvironment: JavaSE-11 Export-Package: org.eclipse.gemoc.addon.multidimensional.timeline, org.eclipse.gemoc.addon.multidimensional.timeline.views Automatic-Module-Name: org.eclipse.gemoc.addon.multidimensional.timeline diff --git a/trace/manager/plugins/org.eclipse.gemoc.addon.multidimensional.timeline/pom.xml b/trace/manager/plugins/org.eclipse.gemoc.addon.multidimensional.timeline/pom.xml index bf19025e5..d58ff522e 100644 --- a/trace/manager/plugins/org.eclipse.gemoc.addon.multidimensional.timeline/pom.xml +++ b/trace/manager/plugins/org.eclipse.gemoc.addon.multidimensional.timeline/pom.xml @@ -23,4 +23,47 @@ org.eclipse.gemoc.addon.multidimensional.timeline eclipse-plugin 3.0.1-SNAPSHOT - \ No newline at end of file + + + + + org.eclipse.tycho + tycho-compiler-plugin + ${tycho-version} + + UTF-8 + + + com.oracle + javafx-swt + 11.0.0-SNAPSHOT + ${java.home}/../java-11-openjfx/lib/javafx-swt.jar + system + + + com.oracle + javafx-base + 11.0.0-SNAPSHOT + ${java.home}/../java-11-openjfx/lib/javafx.base.jar + system + + + com.oracle + javafx-controls + 11.0.0-SNAPSHOT + ${java.home}/../java-11-openjfx/lib/javafx.controls.jar + system + + + com.oracle + javafx-graphics + 11.0.0-SNAPSHOT + ${java.home}/../java-11-openjfx/lib/javafx.graphics.jar + system + + + + + + + diff --git a/trace/manager/plugins/org.eclipse.gemoc.addon.stategraph/.classpath b/trace/manager/plugins/org.eclipse.gemoc.addon.stategraph/.classpath index eca7bdba8..4a00becd8 100644 --- a/trace/manager/plugins/org.eclipse.gemoc.addon.stategraph/.classpath +++ b/trace/manager/plugins/org.eclipse.gemoc.addon.stategraph/.classpath @@ -1,6 +1,10 @@ - + + + + + diff --git a/trace/manager/plugins/org.eclipse.gemoc.addon.stategraph/.project b/trace/manager/plugins/org.eclipse.gemoc.addon.stategraph/.project index a0993d523..0bb5718ee 100644 --- a/trace/manager/plugins/org.eclipse.gemoc.addon.stategraph/.project +++ b/trace/manager/plugins/org.eclipse.gemoc.addon.stategraph/.project @@ -20,8 +20,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature diff --git a/trace/manager/plugins/org.eclipse.gemoc.addon.stategraph/.settings/org.eclipse.jdt.core.prefs b/trace/manager/plugins/org.eclipse.gemoc.addon.stategraph/.settings/org.eclipse.jdt.core.prefs index 0c68a61dc..7adc0fb9a 100644 --- a/trace/manager/plugins/org.eclipse.gemoc.addon.stategraph/.settings/org.eclipse.jdt.core.prefs +++ b/trace/manager/plugins/org.eclipse.gemoc.addon.stategraph/.settings/org.eclipse.jdt.core.prefs @@ -1,7 +1,10 @@ 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.codegen.targetPlatform=11 +org.eclipse.jdt.core.compiler.compliance=11 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.8 +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=11 diff --git a/trace/manager/plugins/org.eclipse.gemoc.addon.stategraph/META-INF/MANIFEST.MF b/trace/manager/plugins/org.eclipse.gemoc.addon.stategraph/META-INF/MANIFEST.MF index edc817ebf..996a6a683 100644 --- a/trace/manager/plugins/org.eclipse.gemoc.addon.stategraph/META-INF/MANIFEST.MF +++ b/trace/manager/plugins/org.eclipse.gemoc.addon.stategraph/META-INF/MANIFEST.MF @@ -9,7 +9,6 @@ Bundle-Localization: plugin Bundle-Activator: org.eclipse.gemoc.addon.stategraph.Activator Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, - org.eclipse.fx.ui.workbench3, org.eclipse.gemoc.executionframework.ui, org.eclipse.gemoc.xdsmlframework.api, org.eclipse.emf.ecore;visibility:=reexport, @@ -20,8 +19,7 @@ Require-Bundle: org.eclipse.ui, org.eclipse.elk.core.service;bundle-version="0.1.0", org.eclipse.elk.graph;bundle-version="0.1.0", com.google.guava;bundle-version="15.0.0", - org.eclipse.elk.alg.layered;bundle-version="0.1.0", - org.eclipse.fx.core -Bundle-RequiredExecutionEnvironment: JavaSE-1.8 + org.eclipse.elk.alg.layered;bundle-version="0.1.0" +Bundle-RequiredExecutionEnvironment: JavaSE-11 Bundle-ActivationPolicy: lazy Automatic-Module-Name: org.eclipse.gemoc.addon.stategraph diff --git a/trace/manager/plugins/org.eclipse.gemoc.addon.stategraph/pom.xml b/trace/manager/plugins/org.eclipse.gemoc.addon.stategraph/pom.xml index 38e76804c..9af09f7ed 100644 --- a/trace/manager/plugins/org.eclipse.gemoc.addon.stategraph/pom.xml +++ b/trace/manager/plugins/org.eclipse.gemoc.addon.stategraph/pom.xml @@ -23,4 +23,47 @@ org.eclipse.gemoc.addon.stategraph eclipse-plugin 3.0.1-SNAPSHOT - \ No newline at end of file + + + + + org.eclipse.tycho + tycho-compiler-plugin + ${tycho-version} + + UTF-8 + + + com.oracle + javafx-swt + 11.0.0-SNAPSHOT + ${java.home}/../java-11-openjfx/lib/javafx-swt.jar + system + + + com.oracle + javafx-base + 11.0.0-SNAPSHOT + ${java.home}/../java-11-openjfx/lib/javafx.base.jar + system + + + com.oracle + javafx-controls + 11.0.0-SNAPSHOT + ${java.home}/../java-11-openjfx/lib/javafx.controls.jar + system + + + com.oracle + javafx-graphics + 11.0.0-SNAPSHOT + ${java.home}/../java-11-openjfx/lib/javafx.graphics.jar + system + + + + + + + diff --git a/trace/manager/pom.xml b/trace/manager/pom.xml index af3d689bc..7076cc2ce 100644 --- a/trace/manager/pom.xml +++ b/trace/manager/pom.xml @@ -28,7 +28,7 @@ - 1.7 + 11 UTF-8 @@ -61,12 +61,45 @@ + + org.openjfx + javafx-maven-plugin + 0.0.5 + + + + - - + + + org.openjfx + javafx + 11 + pom + + + + + org.openjfx + javafx-controls + 11 + + + + org.openjfx + javafx-base + 11 + + + + org.openjfx + javafx-graphics + 11 + + org.eclipse.xtend xtend-maven-plugin diff --git a/trace/manager/releng/org.eclipse.gemoc.trace.manager.feature/.project b/trace/manager/releng/org.eclipse.gemoc.trace.manager.feature/.project index 6efe1f5f3..ae5e2d05a 100644 --- a/trace/manager/releng/org.eclipse.gemoc.trace.manager.feature/.project +++ b/trace/manager/releng/org.eclipse.gemoc.trace.manager.feature/.project @@ -10,8 +10,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.pde.FeatureNature diff --git a/trace/pom.xml b/trace/pom.xml index 8b39e8f17..0f85c0893 100644 --- a/trace/pom.xml +++ b/trace/pom.xml @@ -8,7 +8,7 @@ org.eclipse.gemoc org.eclipse.gemoc.modeldebugging.root - 3.0.0-SNAPSHOT + 3.3.0-SNAPSHOT .. @@ -39,5 +39,16 @@ p2 ${elk.p2.url} + + + efxclipse + p2 + ${efxclipse.p2.url} + + + efxclipse2 + p2 + ${efxclipse2.p2.url} + - \ No newline at end of file +