org.osgi.framework.connect

## Interface ConnectContent

    @ConsumerType
    public interface ConnectContent

A `ConnectContent` provides a `Framework` instance access to the content of a `ConnectModule`.

A framework may `open` and `close` the content for a `ConnectModule` multiple times while the `ConnectContent` is in use by the framework. The framework must close the `ConnectContent` once the `ConnectContent` is no longer used as the content of a current bundle revision or an in use bundle revision.

An entry in a `ConnectContent` is identified by a path name that is a solidus (`'/' /`) separated path. A `ConnectContent` may treat directories as entries. A directory entry path name will end with a solidus. A directory entry may be located using a path name that omits the trailing solidus.

Author:
  $Id: 9e455f9d467f0e38daea0ea52a59a5ccb8c81257 $
See Also:
  `BundleRevisions`

### Nested Class Summary

Nested Classes
`static interface` `ConnectContent.ConnectEntry` Represents the entry of a `ConnectContent`.

### Field Summary

Fields
`static String` `TAG_OSGI_CONNECT` The `osgi.identity` `tags` attribute value used by the framework to tag connect bundle revisions.

### Method Summary

All Methods Instance Methods Abstract Methods
`void` `close()` Closes this `ConnectContent`.
`Optional<ClassLoader>` `getClassLoader()` Returns a class loader for this `ConnectContent`.
`Iterable<String>` `getEntries()` Returns the entry names available in this `ConnectContent`.
`Optional<ConnectContent.ConnectEntry>` `getEntry(String path)` Returns the `ConnectContent.ConnectEntry` for the specified path name in this content.
`Optional<Map<String,String>>` `getHeaders()` Returns the Manifest headers and values of this `ConnectContent`.
`void` `open()` Opens this `ConnectContent`.

### Field Detail

#### TAG_OSGI_CONNECT

    static final String TAG_OSGI_CONNECT

The `osgi.identity` `tags` attribute value used by the framework to tag connect bundle revisions.

See Also:
  Constant Field Values

### Method Detail

#### getHeaders

    Optional<Map<String,String>> getHeaders()

Returns the Manifest headers and values of this `ConnectContent`.

Returns:
  An `Optional` containing the Manifest headers and values for this `ConnectContent`, or an empty `Optional` if the framework should handle parsing the Manifest of the content itself.
Throws:
  `IllegalStateException` - If this `ConnectContent` has been closed.

#### getEntries

    Iterable<String> getEntries()
                         throws IOException

Returns the entry names available in this `ConnectContent`.

Returns:
  An `Iterable` which can supply the available entry names.
Throws:
  `IOException` - If an error occurs reading this `ConnectContent`.
  `IllegalStateException` - If this `ConnectContent` has been closed.

#### getEntry

    Optional<ConnectContent.ConnectEntry> getEntry(String path)

Returns the `ConnectContent.ConnectEntry` for the specified path name in this content.

The `empty` value is returned if an entry with the specified path name does not exist. The path must not start with a "/" and is relative to the root of this content. A connect entry for a directory will have a path name that ends with a slash ('/').

Parameters:
  `path` - The path name of the entry.
Returns:
  An `Optional` containing the `ConnectContent.ConnectEntry` for the specified path, or an empty `Optional` if no entry for specified path can be found.
Throws:
  `IllegalStateException` - If this `ConnectContent` has been closed.

#### getClassLoader

    Optional<ClassLoader> getClassLoader()

Returns a class loader for this `ConnectContent`.

This method is called by the framework for `resolved` bundles only and will be called at most once while a bundle is resolved. If a bundle associated with a `ConnectModule` is refreshed and resolved again, the framework will ask the `ConnectContent` for the class loader again. This allows for a `ConnectContent` to reuse or create a new class loader each time the bundle revision is resolved.

Returns:
  An `Optional` containing the class loader for this `ConnectContent`, or an empty `Optional` if framework should handle creating a class loader for the bundle revision associated with this `ConnectContent`.
Throws:
  `IllegalStateException` - If this `ConnectContent` has been closed.

#### open

    void open()
       throws IOException

Opens this `ConnectContent`.

The framework will open the content when it needs to access the content for a bundle revision associated with this `ConnectContent`. The framework may defer calling this method until requests to access the bundle revision content are made.

Throws:
  `IOException` - If an error occurred opening this `ConnectContent`.

#### close

    void close()
        throws IOException

Closes this `ConnectContent`.

Throws:
  `IOException` - If an error occurred closing this `ConnectContent`.