Community
Participate
Working Groups
There are some common patterns for walking/searching inside EMF models that are repeated very often in Sirius, and which are implemented each time using the core EMF mechanisms. Beyond the code duplication, doing it this ways prevents any context-dependent optimizations. For example, we often directly use eAllContents() or equivalent to search for elements of some kind. We could provide a higher-level service for this, which could be smarter than the "dumb" implementation (for example by not looking inside elements which can be proven statically to not contain the kind of elements we look for), and more importantly we could allow client code to provide custom implementations that are optimized for their context. Examples of services/operations that could be abstracted: * looking inside a model for elements of a given type. The "dumb and costly" way is a plain eAllcontenst() with calls to EClassifier.instanceOf(). * searching for inverse references towards a given element. The "dumb and costly" way is to maintain a complete inverse cross referencer. * given a resource, knowing which other resources it references or that references it (i.e. the resource-level incoming and outgoing references). The "dumb and costly" is to load/resolve all the concerned resources and do a complete walk of all of them.
The APIs and basic/generic implementations should probably live in org.eclipse.sirius.ext.emf, and be independant of Sirius. The Session should provide access to implementations of these appropriate in its context. By default it would be either the versions from org.eclipse.sirius.ext.emf or customized/extended versions adapted to the context of a Sirius session. Some extension mechanism must be provided so that clients can customize the implementations or provide alternate implementations for individual sessions.
New Gerrit change created: https://git.eclipse.org/r/45945
New Gerrit change created: https://git.eclipse.org/r/47005
Gerrit change https://git.eclipse.org/r/47005 was merged to [master]. Commit: http://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=8a5ddb85f9b3e3066a7122d47ecf424932839bbc
New Gerrit change created: https://git.eclipse.org/r/47845
New Gerrit change created: https://git.eclipse.org/r/47847
Gerrit change https://git.eclipse.org/r/47845 was merged to [master]. Commit: http://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=b1b3dc6c18375fa57359de240fa3589aed4b5021
Moving to 4.0, we do not want to break APIs for 3.1.
Moving out of the 4.0 scope for now, along with all the other issues which were there "by default". This does not mean some of these will not be re-integrated at some point, but for now these issues are not part of the roadmap for 4.0. If you feel strongly about this removal from 4.0 and/or are ready to sponsor the corresponding work, feel free to comment.