Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Provide-Bundle - a comma-delimited set of symbolic names specifying the constituent bundles provided by the composite bundle to the parent framework.

The provided bundles will be manifested in the parent framework as virtual bundles themselves.

These declarative headers define the entire capabilities of a composite bundle. To summarize, these capabilities are: containing bundles, importing/exporting packages, requiring/providing bundles, and importing/exporting services.

NOTE: It is not clear if Import-Package should essentially support an "export as" directive where the composite creator explicitly specifies how the imported package gets converted to an export internally or if this should be automatically converted by the eventually injected wire. If the latter, then this relates to the rich wiring section in the open issues.

Composite lifecycle management

Since composite bundles are implemented as virtual bundles, access to their content and portions of their lifecycle are controlled by an external manager. As a result, their lifecycle handling is slightly different from normal bundles. This section describes various composite lifecycle management issues.

Composite manager

The composite manager results from the use of virtual bundles. The composite manager is largely responsible for actually realizing the capabilities embodied in the composite declaration headers. This means it is the composite manager's responsibility to:

  • Manage a composite bundle's constituent bundles.
  • Provide constituent bundles access to imported packages, required bundles, and imported services.
  • Provide the parent framework access to exported packages, provided bundles, and exported services.
  • Manage the overall lifecycle of composite bundles.

The precise approach the composite manager uses to accomplish these responsibilities is not specified.

General lifecycle management

In general, composite lifecycle management follows that of any virtual bundle, which is not completely fleshed out in all cases. For installation, if an "install hook" is introduced for virtual bundle, then the composite manager can use it to seamlessly install composite bundles via the BundleContext.installBundle() method, like any normal bundle. If install hooks are not proposed, then it could provide a simple service for installing composites.

For resolving a composite, the wires for the required

Resolving a composite

Refreshing a composite

Provided bundles

Open issues

Rich wiring information

Currently, the wiring information provided by the virtual bundle proposal has been kept purposely simplistic. To fully implement aspects of composites, like requiring/providing bundles, it is necessary to get richer information from the wires, such as the type of capability. Further, the wiring information needs to be at the module-level (i.e., bundle revision level), not at the bundle level.

Considered alternatives

TBD