== Status Update
=== Dynamic Classpath handling
For Counterclockwise User plugins, the mid/long-term goal is to switch to real dynamically created bundles (not as jars, just as exploded bundles), with dynamic creation of MANIFEST.MF if missing.
This will be especially necessary when users will want to use dependencies that are not already available through ccw.core bundle's classpath.
=== Cleanup of the Application Model
tl;dr: is there somewhere a global utility method to remove any kind of MApplicationElement (MUIElement, MCommand, MHandler, MWindow, etc.) from an MApplication by tag and presence/absence of transient keys?
When user plugins are launched, all the Model Elements they add to the Application Model are appropriately tagged with "ccw-<user-plugin-id>", and a transient "launch key".
At the end of the launch of user plugins, all the Application Model Elements that have "ccw-<user-plugin-id>" but not the right transient "launch key" are removed from the Model.
My question is: how to write the code to find & remove arbitrary elements from the model ?
- The EModelService provides a method to find MUIElements, which can then be removed by calling element.getParent().getChildren().remove(element), right ?
- But what about MCommands, MHandlers, MKeybindings, MWindows, and probably many other special cases I'm still not aware of?
Currently I wrote specific code for MCommands, MHandlers, MKeybindings.
And now I see that MWindows can also contain MHandlers, so my code for removing MHandlers is incomplete ....
Thanks in advance,
--
Laurent Petit