Papyrus/Mars Work Description/Improvments/EMF Compare
This page is outdated, please use Papyrus Compare instead
EMF is integrated into Papyrus to compare either UML semantic models or diagrams. Since Luna the EMF Compare integration in Papyrus was broken because of the empty di files. Furthermore several context popup menus disappeared. These issues are fixed in Mars thanks to the collaboration between CEA and Eclipse Source.
Frontend Changes and Improvements
There is now a new context popup menu in the Model Explorer view of Papyrus, which launches EMF Compare:
The Compare With > Each Other action is enabled when 2-3 model elements are selected in the Model Explorer. The action launches the EObject comparison by EMF Compare. It is then possible to compare two selected diagrams or UML elements. Three-way comparison is also enabled as this is a feature of EMF Compare.
Backend Changes and Improvements
It is now possible to compare 2 Papyrus project files again (.di files). Extension points are added to EMF Compare in order to extend model resolvers. The extension point is used for integrating the Papyrus ModelSet approach where the .di file is used as "master" file without actually linking to other files.
A partial ModelSet comparison is also implemented since simply comparing .notation, and .uml files is not enough in all cases.
The following bugs are fixed:
- Problem: The context popup menu for comparison disappeared.
- Solution: Added a new menu contribution, command, and handler in Papyrus Compare UI plugin.
- Problem: Comparing two .di files gives empty results.
- Solution: Added an extension point to EMF Compare which allows to integrate special model resolving behavior into EMF Compare. The extension point can be used when dependencies between resources exist by design but do not manifest in the resources themselves.
- Problem: Papyrus UML Compare plugin should depend on latest version of EMF Compare where bug 456699 is fixed.
- Solution: Updated plugin.xml of corresponding plugins
Ongoing and Future Work
- Comparison between Model Explorer selected element (and only selected element) with Local History, HEAD revision, etc...
- Full ModelSet comparison implementation (e.g. snippet handling)
- Handling of sub-models when comparing