Mappings not updated when elements from other aspects are mapped

Issue #58 resolved
Matthias Schoettle created an issue

Steps to reproduce:

  • Create a domain aspect with a class and a setter method (e.g., Reel with setPosition(...))
  • Create a GUI aspect with a class (and a method optionally)
  • Let the GUI aspect extend the domain aspect
  • Instantiate Observer
    • map |Subject to the class in the domain aspect
    • map |modify to the setter
    • map |Observer to the class in the GUI aspect
    • map |update to the method or create it in the mapping
  • Weave

Result:

When the (extended) domain aspect is woven into the GUI aspect, the mappings in the Observer instantiation are not updated to reflect the woven changes (i.e., the class in the domain was woven into the GUI). When weaving Observer into it the final model is incorrect.

Two Reel class are contained. One exactly as defined in the domain aspect, the other includes in addition the features from |Subject. The message view for the setter of the second class is also incorrect.

Expected result:

Update all instantiations using the weaving information in case the mapped elements are affected. This probably only applies to the to elements. This will then allow correct weaving.

Comments (5)

  1. Matthias Schoettle reporter

    Fixed issue #58: All instantiations are updated using the weaving information. If in a mapping the to element was woven, it is replaced with the woven one.

    → <<cset 930e570b6158>>

  2. Matthias Schoettle reporter

    Code Maintenance: Improved the code for copying instantiations from the lower-level to the higher-level aspect. Since fixing issue #58 (previous commit) introduced updating of all instantiations, it is now possible to just copy the instantiations as-is and let them be updated after.

    → <<cset 039c979b8fe6>>

  3. Matthias Schoettle reporter

    References issue #160: Introcuded postprocessing operation to PostProcessor, which then internally performs the required postprocessing steps.

    Added postprocessing step to update the references of the woven aspect (higher-level) using the ReferenceUpdater.

    The updating of references in the updateInstantiationDeclaratives step (addressed in issue #58) is now handled by ReferenceUpdater in the second postprocessing step.

    → <<cset 97b5484b806f>>

  4. Log in to comment