Community
Participate
Working Groups
Because the frameworks we rely on (EMF and EMF Tx in particular) support it, we have had a tendency to solve a lot of individual issues by just adding a new adapter/listener. This has several drawbacks: * each adapter has (or can have) a slightly different scope and lifecyle that must be managed individually; * some adapters depend on others ones to be present, and sometimes even to be activated before them (typical case: an adapter/listener which needs up-to-date inverse cross-references to do its job, but maintaining these is done by another adapter, which must be present and executed first); * the global system behavior is almost impossible to completely understand and reason about, as it depends on so many parts which have no clear relations to each other in the code; * some listeners (in particulier pre/post-commit listener) have to perform sometimes complex and costly analyses of the changed which occurred inside a transaction. Because the listeners do not know about each other they all have to redo some common parts of the analysis that can not be shared. This concerns both EMF Adapters and EMF Transaction ResourceSetListeners, used as pre or post-commit listeners, and our own ModelChangeTrigger (built on top of ResourceSetListeners).