You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There are severalinstancesinour codebase where domain object composition is being changed by directly mutating the composition property of domain objects. This is problematic for two reasons:
It will not trigger composition listeners.
It will not work at all with anything other than the default composition provider.
We see a lot of bugs that are some version of "removing an object from X does not update Y". This issue may underlie a lot of these kinds of issues that keep coming up. There was legacy code that used to plaster over this issue by automatically detecting composition changes in object mutation in order to bridge the legacy and current APIs, but this code has been removed along with the legacy codebase.
Expected vs Current Behavior
Object composition operations should always use the composition API.
The text was updated successfully, but these errors were encountered:
Add / Remove objects to / from composition-able objects (particular focus on scatter plots, gauge, display layout, and flexible layout)
Add / Remove objects to/ from composition-able objects using the RemoveAction (selecting 'Remove' from the right-click context menu in the object tree or elsewhere)
Verify the composition is correct after save by calling this.openmct.composition.get(domainObject) in console
Summary
There are several instances in our codebase where domain object composition is being changed by directly mutating the
composition
property of domain objects. This is problematic for two reasons:We see a lot of bugs that are some version of "removing an object from X does not update Y". This issue may underlie a lot of these kinds of issues that keep coming up. There was legacy code that used to plaster over this issue by automatically detecting composition changes in object mutation in order to bridge the legacy and current APIs, but this code has been removed along with the legacy codebase.
Expected vs Current Behavior
Object composition operations should always use the composition API.
The text was updated successfully, but these errors were encountered: