Package org.osgi.resource

# Interface Wiring

All Known Subinterfaces:
  `BundleWiring`

@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.

## Method Summary

Modifier and Type
Method
Description
`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 Details

### 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.