| Summary: | Introduce support for an alternative implementation of the Acceleo Query Language | ||
|---|---|---|---|
| Product: | [Modeling] Sirius | Reporter: | Cedric Brun <cedric.brun> |
| Component: | Core | Assignee: | Cedric Brun <cedric.brun> |
| Status: | CLOSED FIXED | QA Contact: | Pierre-Charles David <pierre-charles.david> |
| Severity: | enhancement | ||
| Priority: | P3 | CC: | laurent.goubet, laurent.redor, philippe.dul, pierre-charles.david |
| Version: | 2.0.0 | Keywords: | triaged |
| Target Milestone: | 3.0.0M6 | ||
| Hardware: | All | ||
| OS: | All | ||
| See Also: |
https://git.eclipse.org/r/40055 https://git.eclipse.org/r/41455 https://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=fbf8869240014b6cebf5c94d05eba12eda1adbe5 https://git.eclipse.org/r/43726 https://git.eclipse.org/r/44113 https://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=7b2b4a07e00a1e9d2c5dfc91c645b3949deb5091 https://git.eclipse.org/r/47046 https://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=626daee13e2eec2f8652d8b36da1df0734f40dd9 |
||
| Whiteboard: | |||
| Bug Depends on: | 459767, 459884 | ||
| Bug Blocks: | 459472 | ||
|
Description
Cedric Brun
Cedric, do you know if there are specific changes required to the core of Sirius to properly support AQL, or if it would be a completely separate plug-in using the existing extension point and APIs? Also, we should probably have a "debug" mode which does not require an explicit change in the VSM to switch to AQL. This would allow us to use the existing Sirius test suites (which contain hundreds of Acceleo expressions) to find differences between MTL and AQL, and fix AQL when appropriate. This could take two forms: - a flag which simply uses AQL for all "[/]" expressions; - a mode that runs all expressions through both MTL and AQL engines, compares the results and the execution time, and returns either MTL or AQL. This could probably be implemented by a "wrapping interpreter" using only the existing APIs. So far I have a dedicated bridge which reacts to the 'aql:' prefix. No specific change *required* in the core of Sirius that being said if Sirius would leverage and pass around infered type information from one intepreter to another that could make the specifier's life easier. An MTL expression is not always a valid AQL expression : the design choice of not supporting an implicit "self" variable in AQL means most of the time one has to review its expressions anyway. The other way around can be more obvious, most AQL expressions should work *just fine* with the MTL engine. ->select( expression would then have to move to the common form which is the verbose a SomeType| a.somethingPredicate), but that means we should be able to update the test cases to make sure they are compatible with both. Do we actually have many test cases which are using the MTL engine ? (In reply to Cedric Brun from comment #2) > Do we actually have many test cases which are using the MTL engine ? A quick grep finds 1104 expressions in 66 different VSMs: % git grep -l '/\]"' -- '**/*.odesign' | wc -l 66 % find . -name "*.odesign" | xargs cat | sed -e 's|/\]"|/]"\n|g' | grep -c "/]" 1104 Pushed a first review here : https://git.eclipse.org/r/#/c/40055/ I did not had the chance to review all the name and the code so far, so please do not submit as is, but feel free to have a look and give your opinion. (In reply to Cedric Brun from comment #4) > Pushed a first review here : > > https://git.eclipse.org/r/#/c/40055/ > > I did not had the chance to review all the name and the code so far, so > please do not submit as is, but feel free to have a look and give your > opinion. By convention the commit message should contain "DRAFT" for such patches which ones want to be visible but are not ready for an actual merge. A build of Acceleo including preliminary support for AQL has been published at [1] and added to the aggregation for Mars M5. This will thus be available in the result of the aggregation starting from [2] (as long as this build passes, still running at the time of writing). The AQL feature id is 'org.eclipse.acceleo.query'. [1] http://download.eclipse.org/acceleo/updates/milestones/3.6/S201501301201 [2] https://hudson.eclipse.org/hudson/job/simrel.mars.runaggregator/384/ (In reply to Laurent Goubet from comment #6) > A build of Acceleo including preliminary support for AQL has been published > at [1] and added to the aggregation for Mars M5. This will thus be available > in the result of the aggregation starting from [2] (as long as this build > passes, still running at the time of writing). > > The AQL feature id is 'org.eclipse.acceleo.query'. > > [1] http://download.eclipse.org/acceleo/updates/milestones/3.6/S201501301201 > [2] https://hudson.eclipse.org/hudson/job/simrel.mars.runaggregator/384/ Actually, AQL will not be part of M5 because of an issue with the ANTLR jar it needs in Orbit; see https://bugs.eclipse.org/bugs/show_bug.cgi?id=458925 for the details. (In reply to Pierre-Charles David from comment #7) > (In reply to Laurent Goubet from comment #6) > > A build of Acceleo including preliminary support for AQL has been published > > at [1] and added to the aggregation for Mars M5. This will thus be available > > in the result of the aggregation starting from [2] (as long as this build > > passes, still running at the time of writing). > > > > The AQL feature id is 'org.eclipse.acceleo.query'. > > > > [1] http://download.eclipse.org/acceleo/updates/milestones/3.6/S201501301201 > > [2] https://hudson.eclipse.org/hudson/job/simrel.mars.runaggregator/384/ > > Actually, AQL will not be part of M5 because of an issue with the ANTLR jar > it needs in Orbit; see https://bugs.eclipse.org/bugs/show_bug.cgi?id=458925 > for the details. It looks like this is actually fixed, on time for inclusion in M5: https://bugs.eclipse.org/bugs/show_bug.cgi?id=458925#c8 WARNING: this patchset contains 3004 new lines of code and may require a Contribution Questionnaire (CQ) if the author is not a committer on the project. Please see:https://wiki.eclipse.org/Project_Management_Infrastructure/Creating_A_Contribution_Questionnaire Patchset https://git.eclipse.org/r/#/c/41455/ is failing becaose of Bug 459767 The migration of interactions.odesign to use something else than the legacy query language was already tracked by bug 452318 "Replace all expressions written with legacy query langage in the Interaction Sequence sample". Cédric, the part of your work here which concerns interactions.odesign could reference that other ticket instead (or maybe we should close the other as duplicate?). WARNING: this patchset contains 3004 new lines of code and may require a Contribution Questionnaire (CQ) if the author is not a committer on the project. Please see:https://wiki.eclipse.org/Project_Management_Infrastructure/Creating_A_Contribution_Questionnaire WARNING: this patchset contains 3018 new lines of code and may require a Contribution Questionnaire (CQ) if the author is not a committer on the project. Please see:https://wiki.eclipse.org/Project_Management_Infrastructure/Creating_A_Contribution_Questionnaire WARNING: this patchset contains 3035 new lines of code and may require a Contribution Questionnaire (CQ) if the author is not a committer on the project. Please see:https://wiki.eclipse.org/Project_Management_Infrastructure/Creating_A_Contribution_Questionnaire WARNING: this patchset contains 3035 new lines of code and may require a Contribution Questionnaire (CQ) if the author is not a committer on the project. Please see:https://wiki.eclipse.org/Project_Management_Infrastructure/Creating_A_Contribution_Questionnaire WARNING: this patchset contains 3035 new lines of code and may require a Contribution Questionnaire (CQ) if the author is not a committer on the project. Please see:https://wiki.eclipse.org/Project_Management_Infrastructure/Creating_A_Contribution_Questionnaire WARNING: this patchset contains 3051 new lines of code and may require a Contribution Questionnaire (CQ) if the author is not a committer on the project. Please see:https://wiki.eclipse.org/Project_Management_Infrastructure/Creating_A_Contribution_Questionnaire WARNING: this patchset contains 3053 new lines of code and may require a Contribution Questionnaire (CQ) if the author is not a committer on the project. Please see:https://wiki.eclipse.org/Project_Management_Infrastructure/Creating_A_Contribution_Questionnaire Gerrit change https://git.eclipse.org/r/40055 was merged to [master]. Commit: http://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=fbf8869240014b6cebf5c94d05eba12eda1adbe5 WARNING: this patchset contains 3053 new lines of code and may require a Contribution Questionnaire (CQ) if the author is not a committer on the project. Please see:https://wiki.eclipse.org/Project_Management_Infrastructure/Creating_A_Contribution_Questionnaire New Gerrit change created: https://git.eclipse.org/r/43726 New Gerrit change created: https://git.eclipse.org/r/44113 Gerrit change https://git.eclipse.org/r/44113 was merged to [master]. Commit: http://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=7b2b4a07e00a1e9d2c5dfc91c645b3949deb5091 The main feature is here. There are some additional imrpovements and related tasks left, but they will be handled in different tickets. New Gerrit change created: https://git.eclipse.org/r/47046 Gerrit change https://git.eclipse.org/r/47046 was merged to [master]. Commit: http://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=626daee13e2eec2f8652d8b36da1df0734f40dd9 Verified on Sirius 3.0.0rc1a. I only verified the basics of evaluation, completion and validation. For the details, I thinkg we can rely on the fact that the full SWTBot Sequence test suites uses a modeler which uses AQL extensively, and also on EcoreTools 3.0. Available in Sirius 3.0.0. See https://wiki.eclipse.org/Sirius/3.0.0. |