Interface BundleWiring
-
- All Superinterfaces:
BundleReference
,Wiring
- All Known Implementing Classes:
BundleWiringImpl
@ProviderType public interface BundleWiring extends BundleReference, Wiring
A wiring for a bundle. Each time a bundle is resolved, a new bundle wiring for the bundle is created. A bundle wiring is associated with a bundle revision and represents the dependencies with other bundle wirings.The bundle wiring for a bundle is the
current
bundle wiring if it is the most recent bundle wiring for the current bundle revision. A bundle wiring isin use
if it is the current bundle wiring or if some other in use bundle wiring is dependent upon it. For example, another bundle wiring is wired to a capability provided by the bundle wiring. An in use bundle wiring for a non-fragment bundle has a class loader. All bundles with non-current, in use bundle wirings are considered removal pending. Once a bundle wiring is no longer in use, it is considered stale and is discarded by the framework.The current bundle wiring for a bundle can be obtained by calling
bundle.adapt
(BundleWiring.class). A bundle in the INSTALLED or UNINSTALLED state does not have a current wiring, adapting such a bundle returnsnull
.- Author:
- $Id: 367499c4b37683c52e622f479242a9caf7e59b0f $
-
-
Field Summary
Fields Modifier and Type Field Description static int
FINDENTRIES_RECURSE
The find entries operation must recurse into subdirectories.static int
LISTRESOURCES_LOCAL
The list resource names operation must limit the result to the names of matching resources contained in this bundle wiring'sbundle revision
and its attached fragment revisions.static int
LISTRESOURCES_RECURSE
The list resource names operation must recurse into subdirectories.
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description java.util.List<java.net.URL>
findEntries(java.lang.String path, java.lang.String filePattern, int options)
Returns entries in this bundle wiring'sbundle revision
and its attached fragment revisions.java.util.List<BundleCapability>
getCapabilities(java.lang.String namespace)
Returns the capabilities provided by this bundle wiring.java.lang.ClassLoader
getClassLoader()
Returns the class loader for this bundle wiring.java.util.List<Wire>
getProvidedResourceWires(java.lang.String namespace)
Returns theWire
s to the providedcapabilities
of this wiring.java.util.List<BundleWire>
getProvidedWires(java.lang.String namespace)
Returns theBundleWire
s to the providedcapabilities
of this bundle wiring.java.util.List<Wire>
getRequiredResourceWires(java.lang.String namespace)
Returns theWire
s to therequirements
in use by this wiring.java.util.List<BundleWire>
getRequiredWires(java.lang.String namespace)
Returns theBundleWire
s to therequirements
in use by this bundle wiring.java.util.List<BundleRequirement>
getRequirements(java.lang.String namespace)
Returns the requirements of this bundle wiring.BundleRevision
getResource()
Returns the resource associated with this wiring.java.util.List<Capability>
getResourceCapabilities(java.lang.String namespace)
Returns the capabilities provided by this wiring.java.util.List<Requirement>
getResourceRequirements(java.lang.String namespace)
Returns the requirements of this wiring.BundleRevision
getRevision()
Returns the bundle revision for the bundle in this bundle wiring.boolean
isCurrent()
Returnstrue
if this bundle wiring is the current bundle wiring.boolean
isInUse()
Returnstrue
if this bundle wiring is in use.java.util.Collection<java.lang.String>
listResources(java.lang.String path, java.lang.String filePattern, int options)
Returns the names of resources visible to this bundle wiring'sclass loader
.-
Methods inherited from interface org.osgi.framework.BundleReference
getBundle
-
-
-
-
Field Detail
-
FINDENTRIES_RECURSE
static final int FINDENTRIES_RECURSE
The find entries operation must recurse into subdirectories.This bit may be set when calling
findEntries(String, String, int)
to specify the result must include the matching entries from the specified path and its subdirectories. If this bit is not set, then the result must only include matching entries from the specified path.
-
LISTRESOURCES_RECURSE
static final int LISTRESOURCES_RECURSE
The list resource names operation must recurse into subdirectories.This bit may be set when calling
listResources(String, String, int)
to specify the result must include the names of matching resources from the specified path and its subdirectories. If this bit is not set, then the result must only include names of matching resources from the specified path.
-
LISTRESOURCES_LOCAL
static final int LISTRESOURCES_LOCAL
The list resource names operation must limit the result to the names of matching resources contained in this bundle wiring'sbundle revision
and its attached fragment revisions. The result must not include resource names for resources inpackage
names which areimported
by this wiring.This bit may be set when calling
listResources(String, String, int)
to specify the result must only include the names of matching resources contained in this bundle wiring's bundle revision and its attached fragment revisions. If this bit is not set, then the result must include the names of matching resources reachable from this bundle wiring's class loader which may include the names of matching resources contained in imported packages and required bundles.
-
-
Method Detail
-
isCurrent
boolean isCurrent()
Returnstrue
if this bundle wiring is the current bundle wiring. The bundle wiring for a bundle is the current bundle wiring if it is the most recent bundle wiring for the current bundle revision. All bundles with non-current, in use bundle wirings are consideredremoval pending
.- Returns:
true
if this bundle wiring is the current bundle wiring;false
otherwise.
-
isInUse
boolean isInUse()
Returnstrue
if this bundle wiring is in use. A bundle wiring is in use if it is thecurrent
wiring or if some other in use bundle wiring is dependent upon it. Once a bundle wiring is no longer in use, it is considered stale and is discarded by the framework.- Returns:
true
if this bundle wiring is in use;false
otherwise.
-
getCapabilities
java.util.List<BundleCapability> getCapabilities(java.lang.String namespace)
Returns the capabilities provided by this bundle wiring.Only capabilities considered by the resolver are returned. For example, capabilities with
effective
directive not equal toresolve
are not returned.A capability may not be required by any bundle wiring and thus there may be no
wires
for the capability.A bundle wiring for a non-fragment revision provides a subset of the declared capabilities from the bundle revision and all attached fragment revisions†. 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 bundle wiring for a fragment revision with a symbolic name must provide exactly one
identity
capability.† The
identity
capability provided by attached fragment revisions must not be included in the capabilities of the host bundle wiring.- Parameters:
namespace
- The namespace of the capabilities to return ornull
to return the capabilities from all namespaces.- Returns:
- A list containing a snapshot of the
BundleCapability
s, or an empty list if this bundle wiring provides no capabilities in the specified namespace. If this bundle wiring is notin use
,null
will be returned. For a given namespace, the list contains the capabilities in the order the capabilities were specified in the manifests of thebundle revision
and the attached fragments† of this bundle wiring. There is no ordering defined between capabilities in different namespaces.
-
getRequirements
java.util.List<BundleRequirement> getRequirements(java.lang.String namespace)
Returns the requirements of this bundle wiring.Only requirements considered by the resolver are returned. For example, requirements with
effective
directive not equal toresolve
are not returned.A bundle wiring for a non-fragment revision has a subset of the declared requirements from the bundle revision and all attached fragment revisions. Not all declared requirements may be present since some may be discarded. For example, if a package is declared to be optionally imported and is not actually imported, the requirement must be discarded.
- Parameters:
namespace
- The namespace of the requirements to return ornull
to return the requirements from all namespaces.- Returns:
- A list containing a snapshot of the
BundleRequirement
s, or an empty list if this bundle wiring uses no requirements in the specified namespace. If this bundle wiring is notin use
,null
will be returned. For a given namespace, the list contains the requirements in the order the requirements were specified in the manifests of thebundle revision
and the attached fragments of this bundle wiring. There is no ordering defined between requirements in different namespaces.
-
getProvidedWires
java.util.List<BundleWire> getProvidedWires(java.lang.String namespace)
Returns theBundleWire
s to the providedcapabilities
of this bundle wiring.- Parameters:
namespace
- The namespace of the capabilities for which to return wires ornull
to return the wires for the capabilities in all namespaces.- Returns:
- A list containing a snapshot of the
BundleWire
s for thecapabilities
of this bundle wiring, or an empty list if this bundle wiring has no capabilities in the specified namespace. If this bundle wiring is notin use
,null
will be returned. For a given namespace, the list contains the wires in the order the capabilities were specified in the manifests of thebundle revision
and the attached fragments of this bundle wiring. There is no ordering defined between capabilities in different namespaces.
-
getRequiredWires
java.util.List<BundleWire> getRequiredWires(java.lang.String namespace)
Returns theBundleWire
s to therequirements
in use by this bundle wiring.This method may return different results if this bundle wiring establishes additional wires to more requirements. For example, dynamically importing a package will establish a new wire to the dynamically imported package.
- Parameters:
namespace
- The namespace of the requirements for which to return wires ornull
to return the wires for the requirements in all namespaces.- Returns:
- A list containing a snapshot of the
BundleWire
s for therequirements
of this bundle wiring, or an empty list if this bundle wiring has no requirements in the specified namespace. If this bundle wiring is notin use
,null
will be returned. For a given namespace, the list contains the wires in the order the requirements were specified in the manifests of thebundle revision
and the attached fragments of this bundle wiring followed by dynamically established wires, if any, in the order they were established. There is no ordering defined between requirements in different namespaces.
-
getRevision
BundleRevision getRevision()
Returns the bundle revision for the bundle in this bundle wiring. Since a bundle update can change the entries in a bundle, different bundle wirings for the same bundle can have different bundle revisions.The bundle object
referenced
by the returnedBundleRevision
may return different information than the returnedBundleRevision
since the returnedBundleRevision
may refer to an older revision of the bundle.- Returns:
- The bundle revision for this bundle wiring.
- See Also:
BundleRevision.getWiring()
-
getClassLoader
java.lang.ClassLoader getClassLoader()
Returns the class loader for this bundle wiring. Since a bundle refresh creates a new bundle wiring for a bundle, different bundle wirings for the same bundle will have different class loaders.- Returns:
- The class loader for this bundle wiring. If this bundle wiring is
not
in use
or this bundle wiring is for a fragment revision,null
will be returned. - Throws:
java.lang.SecurityException
- If the caller does not have the appropriateRuntimePermission("getClassLoader")
, and the Java Runtime Environment supports permissions.
-
findEntries
java.util.List<java.net.URL> findEntries(java.lang.String path, java.lang.String filePattern, int options)
Returns entries in this bundle wiring'sbundle revision
and its attached fragment revisions. This bundle wiring's class loader is not used to search for entries. Only the contents of this bundle wiring's bundle revision and its attached fragment revisions are searched for the specified entries.This method takes into account that the "contents" of this bundle wiring can have attached fragments. This "bundle space" is not a namespace with unique members; the same entry name can be present multiple times. This method therefore returns a list of URL objects. These URLs can come from different JARs but have the same path name. This method can either return only entries in the specified path or recurse into subdirectories returning entries in the directory tree beginning at the specified path.
URLs for directory entries must have their path end with "/".
Note: Jar and zip files are not required to include directory entries. URLs to directory entries will not be returned if the bundle contents do not contain directory entries.
- Parameters:
path
- The path name in which to look. The path is always relative to the root of this bundle wiring and may begin with "/". A path value of "/" indicates the root of this bundle wiring.filePattern
- The file name pattern for selecting entries in the specified path. The pattern is only matched against the last element of the entry path. If the entry is a directory then the trailing "/" is not used for pattern matching. Substring matching is supported, as specified in the Filter specification, using the wildcard character ("*"). Ifnull
is specified, this is equivalent to "*" and matches all files.options
- The options for listing resource names. SeeFINDENTRIES_RECURSE
. The method must ignore unrecognized options.- Returns:
- An unmodifiable list of URL objects for each matching entry, or
an empty list if no matching entry could be found, if this bundle
wiring is for a fragment revision or if the caller does not have
the appropriate
AdminPermission[bundle,RESOURCE]
and the Java Runtime Environment supports permissions. The list is ordered such that entries from thebundle revision
are returned first followed by the entries from attached fragment revisions in attachment order. If this bundle wiring is notin use
,null
must be returned. - See Also:
Bundle.findEntries(String, String, boolean)
-
listResources
java.util.Collection<java.lang.String> listResources(java.lang.String path, java.lang.String filePattern, int options)
Returns the names of resources visible to this bundle wiring'sclass loader
. The returned names can be used to access the resources via this bundle wiring's class loader.- Only the resource names for resources in bundle wirings will be returned. The names of resources visible to a bundle wiring's parent class loader, such as the bootstrap class loader, must not be included in the result.
- Only established wires will be examined for resources. This method must not cause new wires for dynamic imports to be established.
- Parameters:
path
- The path name in which to look. The path is always relative to the root of this bundle wiring's class loader and may begin with "/". A path value of "/" indicates the root of this bundle wiring's class loader.filePattern
- The file name pattern for selecting resource names in the specified path. The pattern is only matched against the last element of the resource path. If the resource is a directory then the trailing "/" is not used for pattern matching. Substring matching is supported, as specified in the Filter specification, using the wildcard character ("*"). Ifnull
is specified, this is equivalent to "*" and matches all files.options
- The options for listing resource names. SeeLISTRESOURCES_LOCAL
andLISTRESOURCES_RECURSE
. This method must ignore unrecognized options.- Returns:
- An unmodifiable collection of resource names for each matching
resource, or an empty collection if no matching resource could be
found, if this bundle wiring is for a fragment revision or if the
caller does not have the appropriate
AdminPermission[bundle,RESOURCE]
and the Java Runtime Environment supports permissions. The collection is unordered and must contain no duplicate resource names. If this bundle wiring is notin use
,null
must be returned.
-
getResourceCapabilities
java.util.List<Capability> getResourceCapabilities(java.lang.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 toresolve
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.This method returns the same value as
getCapabilities(String)
.- Specified by:
getResourceCapabilities
in interfaceWiring
- Parameters:
namespace
- The namespace of the capabilities to return ornull
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 theresource
and the attached fragment resources† of this wiring. There is no ordering defined between capabilities in different namespaces. - Since:
- 1.1
-
getResourceRequirements
java.util.List<Requirement> getResourceRequirements(java.lang.String namespace)
Returns the requirements of this wiring.Only requirements considered by the resolver are returned. For example, requirements with
effective
directive not equal toresolve
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 optionally imported and is not actually imported, the requirement must be discarded.
This method returns the same value as
getRequirements(String)
.- Specified by:
getResourceRequirements
in interfaceWiring
- Parameters:
namespace
- The namespace of the requirements to return ornull
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 theresource
and the attached fragment resources of this wiring. There is no ordering defined between requirements in different namespaces. - Since:
- 1.1
-
getProvidedResourceWires
java.util.List<Wire> getProvidedResourceWires(java.lang.String namespace)
Returns theWire
s to the providedcapabilities
of this wiring.This method returns the same value as
getProvidedWires(String)
.- Specified by:
getProvidedResourceWires
in interfaceWiring
- Parameters:
namespace
- The namespace of the capabilities for which to return wires ornull
to return the wires for the capabilities in all namespaces.- Returns:
- A list containing a snapshot of the
Wire
s for thecapabilities
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 theresource
and the attached fragment resources of this wiring. There is no ordering defined between capabilities in different namespaces. - Since:
- 1.1
-
getRequiredResourceWires
java.util.List<Wire> getRequiredResourceWires(java.lang.String namespace)
Returns theWire
s to therequirements
in use by this wiring.This method returns the same value as
getRequiredWires(String)
.- Specified by:
getRequiredResourceWires
in interfaceWiring
- Parameters:
namespace
- The namespace of the requirements for which to return wires ornull
to return the wires for the requirements in all namespaces.- Returns:
- A list containing a snapshot of the
Wire
s for therequirements
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 theresource
and the attached fragment resources of this wiring. There is no ordering defined between requirements in different namespaces. - Since:
- 1.1
-
getResource
BundleRevision getResource()
Returns the resource associated with this wiring.This method returns the same value as
getRevision()
.- Specified by:
getResource
in interfaceWiring
- Returns:
- The resource associated with this wiring.
- Since:
- 1.1
-
-