Graphical Modeling Framweork/Reconciler
Model reconciler is a piece of GMF that preserves some gmfgen model parts when it is regenerated from gmfmap model. Mostly they are properties that are available only in gmfgen model and may be customized by toolsmith such as class names.
Here is a brief outline of transformation logic (see TransformToGenModelOperation for actual implementation):
- Source models are being loaded (gmfmap, genmodel)
- Visual IDs dispenser is acquired; it may be the default one that assigns IDs incrementialy or merging one that uses trace file to preserve IDs distributed earlier
- Mapping model is being transformed to generator model (deprecated names dispenser assigns names here, the new one does nothing)
- New generator model is being reconciled with the old one if it's available; class names from the old model are copied into the new one
- New names dispenser traverses reconciled model twice: during the first pass it collects assigned class names and during the second pass it generates missing class names so they are unique
- New model is saved and validated
If class names are dispensed after the generator model was reconciled it's clear which names should be preserved (names that are not nulls). If class names are dispensed during model transformation and restored after that chances are that there may be collisions between dispensed and restored names.
- TransformToGenModelOperation - transforms mapping to generator model
- Reconciler - reconciles new generator model with the new one; uses matchers and decisions to describe behaviour
- GMFGenConfig - reconciler configuration for generator model
- GenNamingMediatorImpl - names dispenser that generates class unique names using pluggable strategies