equinox
dynamic plugins > Enabling/Disabling Plugins

 
Enabling/Disabling Plugins

Design


Note: Extension and Extensions Points will be added later


RegistryResolver will be changed so it operates independent of a registry (i.e., arguments are a list of plugins and fragements) and such the functions are resolving dependencing, trimming the registry, and matching extensions and extension points are independent.

RegistryModel will be changed to maintain two additional lists - unresolved and disabled plugins. Currently after resolution, the registry only contains resolved plugins.

Startup registry resolution will occur as today except that instead of discarding unresolved plugins, these will be added to the above mentioned list.

Plugins get on the disabled list as a result of the new disable method or as a result of discovery after registry resolution (i..e, some sort of "install" method).

Enable(plugin[]) will occur as follows:

Disable(plugin[]) will occur as folows:
Note: I would have preferred to have done the disablement in a single step but can't determine an order to add/remove plugins to the registry which keep it consist when the disablement of certain plugins result in other plugins becoming resolved.

Note: One other option is one you know the state you want the registry in, to someone disable access to it and then make the changes as a single atomic operation. I've done the opposite - figure out the final state and find small steps which get there without making the regisrtry inconsistent.

Milestones

Milestones
Milestone Deliverables
Issues

Open Issues

API Changes