org.osgi.resource

## Interface Wiring

All Known Subinterfaces:
  BundleWiring

All Known Implementing Classes:
  BundleWiringImpl

    @ConsumerType
    public interface Wiring

A wiring for a resource. A wiring is associated with a resource and represents the dependencies with other wirings.

Instances of this type must be effectively immutable. That is, for a given instance of this interface, the methods defined by this interface must always return the same result.

Author:
  $Id: 7cb1384266be355d3e727b55e789d36a88299cf6 $

### Method Summary

All Methods Instance Methods Abstract Methods
`List<Wire>` `getProvidedResourceWires(String namespace)` Returns the `Wire`s to the provided `capabilities` of this wiring.
`List<Wire>` `getRequiredResourceWires(String namespace)` Returns the `Wire`s to the `requirements` in use by this wiring.
`Resource` `getResource()` Returns the resource associated with this wiring.
`List<Capability>` `getResourceCapabilities(String namespace)` Returns the capabilities provided by this wiring.
`List<Requirement>` `getResourceRequirements(String namespace)` Returns the requirements of this wiring.

### Method Detail

#### getResourceCapabilities

    List<Capability> getResourceCapabilities(String namespace)

Returns the capabilities provided by this wiring.

Only capabilities considered by the resolver are returned. For example, capabilities with `effective` directive not equal to `resolve` are not returned.

A capability may not be required by any wiring and thus there may be no `wires` for the capability.

A wiring for a non-fragment resource provides a subset of the declared capabilities from the resource and all attached fragment resources†. Not all declared capabilities may be provided since some may be discarded. For example, if a package is declared to be both exported and imported, only one is selected and the other is discarded.

A wiring for a fragment resource with a symbolic name must provide exactly one `osgi.identity` capability.

† The `osgi.identity` capability provided by attached fragment resource must not be included in the capabilities of the host wiring.

Parameters:
  `namespace` - The namespace of the capabilities to return or `null` to return the capabilities from all namespaces.
Returns:
  A list containing a snapshot of the `Capability`s, or an empty list if this wiring provides no capabilities in the specified namespace. For a given namespace, the list contains the capabilities in the order the capabilities were specified in the manifests of the `resource` and the attached fragment resources† of this wiring. There is no ordering defined between capabilities in different namespaces.

#### getResourceRequirements

    List<Requirement> getResourceRequirements(String namespace)

Returns the requirements of this wiring.

Only requirements considered by the resolver are returned. For example, requirements with `effective` directive not equal to `resolve` are not returned.

A wiring for a non-fragment resource has a subset of the declared requirements from the resource and all attached fragment resources. Not all declared requirements may be present since some may be discarded. For example, if a package is declared to be both exported and imported, only one is selected and the other is discarded.

Parameters:
  `namespace` - The namespace of the requirements to return or `null` to return the requirements from all namespaces.
Returns:
  A list containing a snapshot of the `Requirement`s, or an empty list if this wiring uses no requirements in the specified namespace. For a given namespace, the list contains the requirements in the order the requirements were specified in the manifests of the `resource` and the attached fragment resources of this wiring. There is no ordering defined between requirements in different namespaces.

#### getProvidedResourceWires

    List<Wire> getProvidedResourceWires(String namespace)

Returns the `Wire`s to the provided `capabilities` of this wiring.

Parameters:
  `namespace` - The namespace of the capabilities for which to return wires or `null` to return the wires for the capabilities in all namespaces.
Returns:
  A list containing a snapshot of the `Wire`s for the `capabilities` of this wiring, or an empty list if this wiring has no capabilities in the specified namespace. For a given namespace, the list contains the wires in the order the capabilities were specified in the manifests of the `resource` and the attached fragment resources of this wiring. There is no ordering defined between capabilities in different namespaces.

#### getRequiredResourceWires

    List<Wire> getRequiredResourceWires(String namespace)

Returns the `Wire`s to the `requirements` in use by this wiring.

Parameters:
  `namespace` - The namespace of the requirements for which to return wires or `null` to return the wires for the requirements in all namespaces.
Returns:
  A list containing a snapshot of the `Wire`s for the `requirements` of this wiring, or an empty list if this wiring has no requirements in the specified namespace. For a given namespace, the list contains the wires in the order the requirements were specified in the manifests of the `resource` and the attached fragment resources of this wiring. There is no ordering defined between requirements in different namespaces.

#### getResource

    Resource getResource()

Returns the resource associated with this wiring.

Returns:
  The resource associated with this wiring.