Open eclipse-qvtd-bot opened 2 weeks ago
By Ed Willink on Aug 17, 2019 02:47
(In reply to Ed Willink from comment #0)
QVTr requires a particular transformation to be almost self-contained; no submodules are possible.
Given the utility of global analyses, it is not clear that partial compilation is practical. Once the full compilation is supported as an incremental compilation then the speed benefits of sub-modules is undermined. WONTFIX
Sub-modules would therefore seem to be no more than a way for a user to partition one 10,000 line .qvtr file into ten 1,000 line .qvtr files; a much simpler import challenge. But once the editor is sensibly incremental the utility of this partitioning is reduced.
| --- | --- | | Bugzilla Link | 506818 | | Status | NEW | | Importance | P3 enhancement | | Reported | Nov 01, 2016 05:11 EDT | | Modified | Aug 17, 2019 02:47 EDT | | See also | 506817, 494243 | | Reporter | Ed Willink |
Description
Java automatically discovers a larger source from the file-space folder hierarchy. The folder hierarchy can be incrementally recompiled. QVTr requires a particular transformation to be almost self-contained; no submodules are possible.
It might be possible to enhance an import capability to allow one import to pull in some contextual queries and properties, while further imports pull in relations for particular concerns.
If an imported module of QVTr relations lacks a Transformation declaration, how does it know what TypedModels it is dealing with? If it duplicates the Transformation declaration, how do we know it is a partial Transformation?
Perhaps a new top level application/deployment/module concept allows a top-level QVTr/QVTc module to list and configure the sub-modules that it imports.
Configuration could identify the required direction, whether incremental support is needed, and how actual metamodels substitute placeholders metamodels.
Redeploying a QVTr transformation from e.g. UML 2.5 to UML 2.6 can then be done by cloning/rewriting the module, leaving sub-modules unchanged.
Each sub-module should be self-standing allowing conventional as-is use. Multiple sub-modules merge by simple name collision mediatable in the module.