Package Plugins
From CoreASM Wiki
After some discussions we have the following framework for package plugins:
- Package plugins implement
org.coreasm.engine.plugin.PackagePluginand provide a list of the names of the plugins they contain as a package. - All the listed plugins in a package must themselves be listed in the catalog (they must be loadable individually).
- Loading of enclosed plugins occurs in
org.coreasm.engine.Engine#loadSpecPlugins(). -
Engine#loadPlugin(p)is modified to prevent multiple loading of the same plugin.
Additionally, a number of services must be provided to external users of the Engine API to (optionally) make package plugins "invisible". These include:
- an API to get the list/ordered multiset/set of plugins mentioned in a Specification (here package plugins would appear as such).
- an API to get the list/ordered set of plugins loaded in a Specification (here package plugins would be hidden and replaced by their contents, recursively).
- an API to inquire from a plugin whether it is a package plugin or not (possibly an instanceof is enough).
- an API to inquire from a package plugin which plugins it contains.
Among other uses, one could imagine an IDE trying to provide tooltip help on a use line...
--Vincenzo 07:39, 29 September 2006 (PDT)

