Update Metamodel to add references
The metamodel needs to be updated in CORE and RAM to reflect the new changes introduced in regards to references.
Following that, the code needs to be updated in order to create references whenever an element is selected which is located in another model. The best place to accomplish this is inside the controllers. Probably, a generic method could be implemented that takes care of this.
Comments (47)
-
reporter -
reporter References #456: Updates model and edit code (code generated).
Compile errors due to metamodel changes are not fixed yet.
→ <<cset 5bd90593b114>>
-
reporter References #456: Fixes compile errors in controllers and tests.
Also, refactors CORE controllers to make them independent of RAM. Renames InstantiationController to MappingsController.
→ <<cset d4743cf0fe41>>
-
reporter References #456: Adds missing support for void type when updating properties.
→ <<cset eca6ae95e2a4>>
-
reporter References #456: Updates call to new util method.
→ <<cset deaef56744e1>>
-
References #456: Fixed compilation errors due to removal of Instantiation in Class Controller
→ <<cset 47eb4b42ba3a>>
-
I am working on the references, but unfortunately I think we need to do another meta model change, because it now is necessary to be able to map enumeration types :)
For instance, it is possible in an aspect A that extends aspect B to define a class X with an attribute C that has as a type an enum Y defined in B... In this case the correct behaviour would be to create a "ghost" enum Y in A, and create a reference mapping for it.
-
reporter We also need to change the way message view references work. Currently, the
MessageViewReference
links to an externalMessageView
. Since we can't localize it, but have to localize the operation anyhow, it would be better to have anOperationReference
or something (maybeEmptyMessageView
, which can also be used for partial operations that require anaffectedBy
) instead.So to summarize we need:
- mapping of enums
- mapping of association ends (associations maybe too?)
- different way of referencing external message views to advice them
-
reporter References #456: Re-generates model and edit code after CORE updates.
→ <<cset 8f3c86a52740>>
-
reporter References #456: Improves reference handling in views.
Views respond to reference notifications and don't store the reference property anymore.
In order to support that, the RAMReferenceUtil executes a separate SetCommand to set the reference property of the corresponding mapping to trigger updates in the view. This is required, because the cloned/local element is added first, and after the mapping is added. Therefore, when the clone is added, it cannot be determined yet that the element is a reference.
→ <<cset 700ab70198b5>>
-
reporter References #456: Removes calls to setLocalizedPropertyValue when not necessary and fixes some typos in the controllers.
→ <<cset 6c629edb195e>>
-
reporter References #456: Moves filtering of mapped elements to helper method.
Small refactoring of filtering to make use of eAllContents, which includes nested children.
→ <<cset 9d5462fd23ee>>
-
reporter @djeminy Can you confirm that in mappings, when selecting as the "to element" an element from another extended model, that that element should be localized as well?
-
reporter References #456: Removes custom label providers.
The custom label providers prefixed the label for elements from external models with the model name. Because referenced elements will now be localized, this is not required anymore.
→ <<cset bdfc30daa431>>
-
reporter References #456: Adds localizing of property for EnumLiteralValue's value.
→ <<cset 84529cbb992c>>
-
reporter References #456: Ensures that to elements of mappings are localized as well.
→ <<cset 939cabe473aa>>
-
reporter References #456: Fixes OCL queries to ensure only local types are allowed and adds constraint for message signature.
→ <<cset be36be8f75e4>>
-
reporter References #456: Adds safety checks for possible null values.
→ <<cset de237660dbb4>>
-
reporter References #456: Temporarily adds RAMReferenceUtilTest to controller project due to current test structure.
Access required to utility classes and methods in test's controller.util package.
→ <<cset 5652e326d89c>>
-
reporter References #456: Refactors RAMReferenceUtil to be more generic.
Distinguishes between containers (classes, enums) and elements of those containers right now due to the additional layout requirement for containers.
→ <<cset f2096fe2568e>>
-
reporter References #456: Refactors localizeElement method to be more generic.
→ <<cset 44063f1b2f66>>
-
reporter References #456: Adds a ParameterMapping for each parameter of a cloned operation.
→ <<cset 44bb36f4b777>>
-
-
-
References #456
Fixes placeholder text to display enum instead of class/attribute
→ <<cset b259ea24acd3>>
-
-
References #456
Updates needed to deal with removal of reference attribute of COREMapping in CORE metamodel
→ <<cset 5c8c3e01f62a>>
-
References #456
Ensure that the style of Enums is updated when a mapping is created / deleted.
→ <<cset dd6e986e93e3>>
-
reporter References #456: Adds OCL constraints to check for existing types.
→ <<cset f318e1efc7af>>
-
reporter References #456: Ensures that the mapping.to is set using a command to force a notification for the derived property (COREModelElement.reference).
Also ensures that containing references are never updated, as this would cause problems. The container is already localized at this point.
→ <<cset e27d8a24057d>>
-
-
reporter References #456: Adds unset command for to element in order to force update of derived isReference property on deletion of mappings.
→ <<cset 9d97f214c1f6>>
-
reporter References #456: Moves handling of filtering extended choices and mapped elements to CORE.
→ <<cset c47a8f5814f2>>
-
reporter References #456: Ensures that enums are not filtered out and can be mapped to empty classes.
→ <<cset 78b9fd1fb707>>
-
reporter References #456: Removes type names to be shown visually different than they are.
This is not necessary anymore since they will have to be localized and have the appropriate name.
→ <<cset f1ca3c21c6d1>>
-
reporter References #456: Fixes merging of compositions to merge duplicate extensions instead of reuses. Only extensions can be duplicated during weaving of the extension hierarchy.
→ <<cset 700d814dc9de>>
-
-
References #456
Working on new weaver. Now implementation class can again be imported.
→ <<cset 868fdfe74882>>
-
References #456
Working on references. Now it is possible to import enums again. That was fast :)
→ <<cset f3c33fa5e022>>
-
-
References #456
Working on weaver. Now we can weave classes with attributes and operations.
→ <<cset 6b19447760dc>>
-
-
-
References #456
COREModelReferenceUpdater now working. This means that the structural weaver does not need to use the RAMReferenceUpdater any more. Whether we still need it or not remains to be determined when we start working on updating the MessageViewWeaver.
→ <<cset 1fed8b4fc5eb>>
-
reporter References #456: Removes COREModelElement from StructuralView as it breaks the RAMReferenceUtil (see tests) and is not necessary.
→ <<cset 5c48d3549042>>
-
-
reporter - Log in to comment
References #456: Updates RAM metamodel to use new references.
Also, removes Instantiation and InstantiationType.
→ <<cset ab24a5a7d2d9>>