org.osgi.framework.connect

## Interface ModuleConnector

    @ConsumerType
    public interface ModuleConnector

A `ModuleConnector` provides connections to instances of `ConnectModule` that are used by a `Framework` instance to connect installed bundles locations with content provided by the `ModuleConnector`.

This allows a `ModuleConnector` to provide content and classes for a connected bundle installed in the `Framework`. A `ModuleConnector` is provided when `creating` a framework instance. Because a `ModuleConnector` instance can participate in the initialization of the `Framework` and the life cycle of a `Framework` instance the `ModuleConnector` instance should only be used with a single `Framework` instance at a time.

Author:
  $Id: 5ee358acfec177e4bf92994fee8e61c9c841ec06 $

### Method Summary

All Methods Instance Methods Abstract Methods
`Optional<ConnectModule>` `connect(String location)` Connects a bundle location with a `ConnectModule`.
`void` `initialize(File storage, Map<String,String> configuration)` Initializes this `ModuleConnector` with the `framework persistent storage` file and framework properties configured for a `Framework` instance.
`Optional<BundleActivator>` `newBundleActivator()` Creates a new activator for this `ModuleConnector`.

### Method Detail

#### initialize

    void initialize(File storage,
                    Map<String,String> configuration)

Initializes this `ModuleConnector` with the `framework persistent storage` file and framework properties configured for a `Framework` instance.

This method is called once by a `Framework` instance and is called before any other methods on this module connector are called.

Parameters:
  `storage` - The persistent storage area used by the `Framework` or `null` if the platform does not have file system support.
  `configuration` - An unmodifiable map of framework configuration properties that were used to configure the new framework instance.

#### connect

    Optional<ConnectModule> connect(String location)
                             throws BundleException

Connects a bundle location with a `ConnectModule`.

When the result is empty, then the framework must handle reading the content of the bundle itself. Otherwise, the returned `ConnectModule` must be used by the framework to access the content of the bundle.

Parameters:
  `location` - The bundle location used to install a bundle.
Returns:
  An `Optional` containing the `ConnectModule` for the specified bundle location, or an empty `Optional` if the framework must handle reading the content of the bundle itself.
Throws:
  `BundleException` - If the location cannot be handled.

#### newBundleActivator

    Optional<BundleActivator> newBundleActivator()

Creates a new activator for this `ModuleConnector`.

This method is called by the framework during framework `initialization`. Returning an activator allows this `ModuleConnector` to participate in the framework life cycle. If an activator is returned:

- The framework will call the activator's `start` method prior to activating any extension bundles.
- The framework will call the activator's `stop` method after deactivating any extension bundles.

Returns:
  An `Optional` containing a new `BundleActivator` for this `ModuleConnector`, or an empty `Optional` if no `BundleActivator` is necessary.