@ProviderType public interface Bundle extends java.lang.Comparable<Bundle>
A Bundle
object is the access point to define the lifecycle of an
installed bundle. Each bundle installed in the OSGi environment must have an
associated Bundle
object.
A bundle must have a unique identity, a long
, chosen by the
Framework. This identity must not change during the lifecycle of a bundle,
even when the bundle is updated. Uninstalling and then reinstalling the
bundle must create a new unique identity.
A bundle can be in one of six states:
Values assigned to these states have no specified ordering; they represent bit values that may be ORed together to determine if a bundle is in one of the valid states.
A bundle should only have active threads of execution when its state is one
of STARTING
,ACTIVE
, or STOPPING
. An
UNINSTALLED
bundle can not be set to another state; it is a zombie
and can only be reached because references are kept somewhere.
The Framework is the only entity that is allowed to create Bundle
objects, and these objects are only valid within the Framework that created
them.
Bundles have a natural ordering such that if two Bundle
s have the
same bundle id
they are equal. A Bundle
is
less than another Bundle
if it has a lower bundle id
and is greater if it has a higher bundle id.
Modifier and Type | Field and Description |
---|---|
static int |
ACTIVE
The bundle is now running.
|
static int |
INSTALLED
The bundle is installed but not yet resolved.
|
static int |
RESOLVED
The bundle is resolved and is able to be started.
|
static int |
SIGNERS_ALL
Request that all certificates used to sign the bundle be returned.
|
static int |
SIGNERS_TRUSTED
Request that only certificates used to sign the bundle that are trusted
by the framework be returned.
|
static int |
START_ACTIVATION_POLICY
The bundle start operation must activate the bundle according to the
bundle's declared
activation
policy . |
static int |
START_TRANSIENT
The bundle start operation is transient and the persistent autostart
setting of the bundle is not modified.
|
static int |
STARTING
The bundle is in the process of starting.
|
static int |
STOP_TRANSIENT
The bundle stop is transient and the persistent autostart setting of the
bundle is not modified.
|
static int |
STOPPING
The bundle is in the process of stopping.
|
static int |
UNINSTALLED
The bundle is uninstalled and may not be used.
|
Modifier and Type | Method and Description |
---|---|
<A> A |
adapt(java.lang.Class<A> type)
Adapt this bundle to the specified type.
|
java.util.Enumeration<java.net.URL> |
findEntries(java.lang.String path,
java.lang.String filePattern,
boolean recurse)
Returns entries in this bundle and its attached fragments.
|
BundleContext |
getBundleContext()
Returns this bundle's
BundleContext . |
long |
getBundleId()
Returns this bundle's unique identifier.
|
java.io.File |
getDataFile(java.lang.String filename)
Creates a
File object for a file in the persistent storage area
provided for this bundle by the Framework. |
java.net.URL |
getEntry(java.lang.String path)
Returns a URL to the entry at the specified path in this bundle.
|
java.util.Enumeration<java.lang.String> |
getEntryPaths(java.lang.String path)
Returns an Enumeration of all the paths (
String objects) to
entries within this bundle whose longest sub-path matches the specified
path. |
java.util.Dictionary<java.lang.String,java.lang.String> |
getHeaders()
Returns this bundle's Manifest headers and values.
|
java.util.Dictionary<java.lang.String,java.lang.String> |
getHeaders(java.lang.String locale)
Returns this bundle's Manifest headers and values localized to the
specified locale.
|
long |
getLastModified()
Returns the time when this bundle was last modified.
|
java.lang.String |
getLocation()
Returns this bundle's location identifier.
|
ServiceReference<?>[] |
getRegisteredServices()
Returns this bundle's
ServiceReference list for all services it
has registered or null if this bundle has no registered services. |
java.net.URL |
getResource(java.lang.String name)
Find the specified resource from this bundle's class loader.
|
java.util.Enumeration<java.net.URL> |
getResources(java.lang.String name)
Find the specified resources from this bundle's class loader.
|
ServiceReference<?>[] |
getServicesInUse()
Returns this bundle's
ServiceReference list for all services it
is using or returns null if this bundle is not using any
services. |
java.util.Map<java.security.cert.X509Certificate,java.util.List<java.security.cert.X509Certificate>> |
getSignerCertificates(int signersType)
Return the certificates for the signers of this bundle and the
certificate chains for those signers.
|
int |
getState()
Returns this bundle's current state.
|
java.lang.String |
getSymbolicName()
Returns the symbolic name of this bundle as specified by its
Bundle-SymbolicName manifest header. |
Version |
getVersion()
Returns the version of this bundle as specified by its
Bundle-Version manifest header. |
boolean |
hasPermission(java.lang.Object permission)
Determines if this bundle has the specified permissions.
|
java.lang.Class<?> |
loadClass(java.lang.String name)
Loads the specified class using this bundle's class loader.
|
void |
start()
Starts this bundle with no options.
|
void |
start(int options)
Starts this bundle.
|
void |
stop()
Stops this bundle with no options.
|
void |
stop(int options)
Stops this bundle.
|
void |
uninstall()
Uninstalls this bundle.
|
void |
update()
Updates this bundle.
|
void |
update(java.io.InputStream input)
Updates this bundle from an
InputStream . |
static final int UNINSTALLED
The UNINSTALLED
state is only visible after a bundle is
uninstalled; the bundle is in an unusable state but references to the
Bundle
object may still be available and used for introspection.
The value of UNINSTALLED
is 0x00000001.
static final int INSTALLED
A bundle is in the INSTALLED
state when it has been installed in
the Framework but is not or cannot be resolved.
This state is visible if the bundle's code dependencies are not resolved.
The Framework may attempt to resolve an INSTALLED
bundle's code
dependencies and move the bundle to the RESOLVED
state.
The value of INSTALLED
is 0x00000002.
static final int RESOLVED
A bundle is in the RESOLVED
state when the Framework has
successfully resolved the bundle's code dependencies. These dependencies
include:
Constants.BUNDLE_CLASSPATH
Manifest header.Constants.EXPORT_PACKAGE
and Constants.IMPORT_PACKAGE
Manifest headers.Constants.REQUIRE_BUNDLE
Manifest header.Constants.FRAGMENT_HOST
Manifest header.
Note that the bundle is not active yet. A bundle must be put in the
RESOLVED
state before it can be started. The Framework may
attempt to resolve a bundle at any time.
The value of RESOLVED
is 0x00000004.
static final int STARTING
A bundle is in the STARTING
state when its start
method is active. A bundle must be in this state when the bundle's
BundleActivator.start(BundleContext)
is called. If the
BundleActivator.start
method completes without exception, then
the bundle has successfully started and must move to the ACTIVE
state.
If the bundle has a lazy activation
policy
, then the bundle may remain in this state for some time until the
activation is triggered.
The value of STARTING
is 0x00000008.
static final int STOPPING
A bundle is in the STOPPING
state when its stop
method is active. A bundle must be in this state when the bundle's
BundleActivator.stop(BundleContext)
method is called. When the
BundleActivator.stop
method completes the bundle is stopped and
must move to the RESOLVED
state.
The value of STOPPING
is 0x00000010.
static final int ACTIVE
A bundle is in the ACTIVE
state when it has been successfully
started and activated.
The value of ACTIVE
is 0x00000020.
static final int START_TRANSIENT
This bit may be set when calling start(int)
to notify the
framework that the autostart setting of the bundle must not be modified.
If this bit is not set, then the autostart setting of the bundle is
modified.
start(int)
,
Constant Field Valuesstatic final int START_ACTIVATION_POLICY
activation
policy
.
This bit may be set when calling start(int)
to notify the
framework that the bundle must be activated using the bundle's declared
activation policy.
Constants.BUNDLE_ACTIVATIONPOLICY
,
start(int)
,
Constant Field Valuesstatic final int STOP_TRANSIENT
This bit may be set when calling stop(int)
to notify the
framework that the autostart setting of the bundle must not be modified.
If this bit is not set, then the autostart setting of the bundle is
modified.
stop(int)
,
Constant Field Valuesstatic final int SIGNERS_ALL
getSignerCertificates(int)
,
Constant Field Valuesstatic final int SIGNERS_TRUSTED
getSignerCertificates(int)
,
Constant Field Valuesint getState()
A bundle can be in only one state at any time.
UNINSTALLED
,INSTALLED
,
RESOLVED
, STARTING
, STOPPING
,
ACTIVE
.void start(int options) throws BundleException
If this bundle's state is UNINSTALLED
then an
IllegalStateException
is thrown.
If the current start level is less than this bundle's start level:
START_TRANSIENT
option is set, then a
BundleException
is thrown indicating this bundle cannot be
started due to the Framework's current start level.START_ACTIVATION_POLICY
option is set or
Started with eager activation if not set.When the Framework's current start level becomes equal to or more than this bundle's start level, this bundle will be started.
Otherwise, the following steps are required to start this bundle:
BundleException
is thrown to indicate this bundle was unable to
be started.START_TRANSIENT
option is not set then set this
bundle's autostart setting to Started with declared activation
if the START_ACTIVATION_POLICY
option is set or
Started with eager activation if not set. When the Framework is
restarted and this bundle's autostart setting is not Stopped,
this bundle must be automatically started.ACTIVE
then this method returns
immediately.RESOLVED
, an attempt is made to
resolve this bundle. If the Framework cannot resolve this bundle, a
BundleException
is thrown.START_ACTIVATION_POLICY
option is set and this
bundle's declared activation policy is lazy
then:
STARTING
then this method returns
immediately.STARTING
.BundleEvent.LAZY_ACTIVATION
is fired.STARTING
.BundleEvent.STARTING
is fired.BundleActivator.start(BundleContext)
method of this
bundle's BundleActivator
, if one is specified, is called. If the
BundleActivator
is invalid or throws an exception then:
STOPPING
.BundleEvent.STOPPING
is fired.RESOLVED
.BundleEvent.STOPPED
is fired.BundleException
is then thrown.ACTIVE
.BundleEvent.STARTED
is fired.getState()
in { INSTALLED
, RESOLVED
} or { INSTALLED
, RESOLVED
,
STARTING
} if this bundle has a lazy activation policy.START_TRANSIENT
option was set.getState()
in { ACTIVE
} unless the
lazy activation policy was used.BundleActivator.start()
has been called and did not throw an
exception unless the lazy activation policy was used.START_TRANSIENT
option was set.getState()
not in { STARTING
, ACTIVE
}.options
- The options for starting this bundle. See
START_TRANSIENT
and START_ACTIVATION_POLICY
. The
Framework must ignore unrecognized options.BundleException
- If this bundle could not be started.
BundleException types thrown by this method include:
BundleException.START_TRANSIENT_ERROR
,
BundleException.NATIVECODE_ERROR
,
BundleException.RESOLVE_ERROR
,
BundleException.STATECHANGE_ERROR
, and
BundleException.ACTIVATOR_ERROR
.java.lang.IllegalStateException
- If this bundle has been uninstalled or this
bundle tries to change its own state.java.lang.SecurityException
- If the caller does not have the appropriate
AdminPermission[this,EXECUTE]
, and the Java Runtime
Environment supports permissions.void start() throws BundleException
This method performs the same function as calling start(0)
.
BundleException
- If this bundle could not be started.
BundleException types thrown by this method include:
BundleException.NATIVECODE_ERROR
,
BundleException.RESOLVE_ERROR
,
BundleException.STATECHANGE_ERROR
, and
BundleException.ACTIVATOR_ERROR
.java.lang.IllegalStateException
- If this bundle has been uninstalled or this
bundle tries to change its own state.java.lang.SecurityException
- If the caller does not have the appropriate
AdminPermission[this,EXECUTE]
, and the Java Runtime
Environment supports permissions.start(int)
void stop(int options) throws BundleException
The following steps are required to stop a bundle:
UNINSTALLED
then an
IllegalStateException
is thrown.BundleException
is thrown to indicate this bundle was unable to
be stopped.STOP_TRANSIENT
option is not set then set this
bundle's persistent autostart setting to Stopped. When the
Framework is restarted and this bundle's autostart setting is
Stopped, this bundle must not be automatically started.STARTING
or ACTIVE
then
this method returns immediately.STOPPING
.BundleEvent.STOPPING
is fired.ACTIVE
prior to setting the state
to STOPPING
, the BundleActivator.stop(BundleContext)
method of this bundle's BundleActivator
, if one is specified, is
called. If that method throws an exception, this method must continue to
stop this bundle and a BundleException
must be thrown after
completion of the remaining steps.UNINSTALLED
, because this bundle
was uninstalled while the BundleActivator.stop
method was
running, a BundleException
must be thrown.RESOLVED
.BundleEvent.STOPPED
is fired.getState()
in { ACTIVE
}.STOP_TRANSIENT
option was set.getState()
not in { ACTIVE
, STOPPING
}.BundleActivator.stop
has been called and did not throw an
exception.STOP_TRANSIENT
option was set.options
- The options for stopping this bundle. See
STOP_TRANSIENT
. The Framework must ignore unrecognized
options.BundleException
- BundleException types thrown by this method
include: BundleException.STATECHANGE_ERROR
and
BundleException.ACTIVATOR_ERROR
.java.lang.IllegalStateException
- If this bundle has been uninstalled or this
bundle tries to change its own state.java.lang.SecurityException
- If the caller does not have the appropriate
AdminPermission[this,EXECUTE]
, and the Java Runtime
Environment supports permissions.void stop() throws BundleException
This method performs the same function as calling stop(0)
.
BundleException
- BundleException types thrown by this method
include: BundleException.STATECHANGE_ERROR
and
BundleException.ACTIVATOR_ERROR
.java.lang.IllegalStateException
- If this bundle has been uninstalled or this
bundle tries to change its own state.java.lang.SecurityException
- If the caller does not have the appropriate
AdminPermission[this,EXECUTE]
, and the Java Runtime
Environment supports permissions.start(int)
void update(java.io.InputStream input) throws BundleException
InputStream
.
If the specified InputStream
is null
, the Framework must
create the InputStream
from which to read the updated bundle by
interpreting, in an implementation dependent manner, this bundle's
Bundle-UpdateLocation
Manifest
header, if present, or this bundle's original location.
If this bundle's state is ACTIVE
, it must be stopped before the
update and started after the update successfully completes.
If this bundle has exported any packages that are imported by another
bundle, these packages must remain exported until the
FrameworkWiring.refreshBundles
method has been has been called or the
Framework is relaunched.
The following steps are required to update a bundle:
UNINSTALLED
then an
IllegalStateException
is thrown.ACTIVE
, STARTING
or
STOPPING
, this bundle is stopped as described in the
Bundle.stop
method. If Bundle.stop
throws an exception,
the exception is rethrown terminating the update.BundleException
must be thrown after completion of the remaining
steps.INSTALLED
.BundleEvent.UPDATED
is fired.ACTIVE
, the updated
bundle is started as described in the Bundle.start
method. If
Bundle.start
throws an exception, a Framework event of type
FrameworkEvent.ERROR
is fired containing the exception.getState()
not in { UNINSTALLED
}.getState()
in { INSTALLED
, RESOLVED
,
ACTIVE
}.getState()
in { INSTALLED
, RESOLVED
,
ACTIVE
}.input
- The InputStream
from which to read the new bundle or
null
to indicate the Framework must create the input
stream from this bundle's Bundle-UpdateLocation
Manifest header, if present, or this
bundle's original location. The input stream must always be closed
when this method completes, even if an exception is thrown.BundleException
- If this bundle could not be updated.
BundleException types thrown by this method include:
BundleException.READ_ERROR
,
BundleException.DUPLICATE_BUNDLE_ERROR
,
BundleException.MANIFEST_ERROR
,
BundleException.NATIVECODE_ERROR
,
BundleException.RESOLVE_ERROR
,
BundleException.STATECHANGE_ERROR
, and
BundleException.ACTIVATOR_ERROR
.java.lang.IllegalStateException
- If this bundle has been uninstalled or this
bundle tries to change its own state.java.lang.SecurityException
- If the caller does not have the appropriate
AdminPermission[this,LIFECYCLE]
for both the current
bundle and the updated bundle, and the Java Runtime Environment
supports permissions.stop()
,
start()
void update() throws BundleException
This method performs the same function as calling
update(InputStream)
with a null
InputStream.
BundleException
- If this bundle could not be updated.
BundleException types thrown by this method include:
BundleException.READ_ERROR
,
BundleException.DUPLICATE_BUNDLE_ERROR
,
BundleException.MANIFEST_ERROR
,
BundleException.NATIVECODE_ERROR
,
BundleException.RESOLVE_ERROR
,
BundleException.STATECHANGE_ERROR
, and
BundleException.ACTIVATOR_ERROR
.java.lang.IllegalStateException
- If this bundle has been uninstalled or this
bundle tries to change its own state.java.lang.SecurityException
- If the caller does not have the appropriate
AdminPermission[this,LIFECYCLE]
for both the current
bundle and the updated bundle, and the Java Runtime Environment
supports permissions.update(InputStream)
void uninstall() throws BundleException
This method causes the Framework to notify other bundles that this bundle
is being uninstalled, and then puts this bundle into the
UNINSTALLED
state. The Framework must remove any resources
related to this bundle that it is able to remove.
If this bundle has exported any packages, the Framework must continue to
make these packages available to their importing bundles until the
FrameworkWiring.refreshBundles
method has been called or the Framework
is relaunched.
The following steps are required to uninstall a bundle:
UNINSTALLED
then an
IllegalStateException
is thrown.ACTIVE
, STARTING
or
STOPPING
, this bundle is stopped as described in the
Bundle.stop
method. If Bundle.stop
throws an exception, a
Framework event of type FrameworkEvent.ERROR
is fired containing
the exception.UNINSTALLED
.BundleEvent.UNINSTALLED
is fired.getState()
not in { UNINSTALLED
}.getState()
in { UNINSTALLED
}.getState()
not in { UNINSTALLED
}.BundleException
- If the uninstall failed. This can occur if
another thread is attempting to change this bundle's state and
does not complete in a timely manner. BundleException types
thrown by this method include:
BundleException.STATECHANGE_ERROR
java.lang.IllegalStateException
- If this bundle has been uninstalled or this
bundle tries to change its own state.java.lang.SecurityException
- If the caller does not have the appropriate
AdminPermission[this,LIFECYCLE]
, and the Java Runtime
Environment supports permissions.stop()
java.util.Dictionary<java.lang.String,java.lang.String> getHeaders()
Manifest header names are case-insensitive. The methods of the returned
Dictionary
object must operate on header names in a
case-insensitive manner.
If a Manifest header value starts with "%", it must be
localized according to the default locale. If no localization is found
for a header value, the header value without the leading "%" is
returned.
For example, the following Manifest headers and values are included if they are present in the Manifest file:
Bundle-Name Bundle-Vendor Bundle-Version Bundle-Description Bundle-DocURL Bundle-ContactAddress
This method must continue to return Manifest header information while
this bundle is in the UNINSTALLED
state.
Dictionary
object containing this
bundle's Manifest headers and values.java.lang.SecurityException
- If the caller does not have the appropriate
AdminPermission[this,METADATA]
, and the Java Runtime
Environment supports permissions.Constants.BUNDLE_LOCALIZATION
long getBundleId()
A bundle's unique identifier has the following attributes:
long
.
This method must continue to return this bundle's unique identifier while
this bundle is in the UNINSTALLED
state.
java.lang.String getLocation()
The location identifier is the location passed to
BundleContext.installBundle
when a bundle is installed. The
location identifier does not change while this bundle remains installed,
even if this bundle is updated.
This method must continue to return this bundle's location identifier
while this bundle is in the UNINSTALLED
state.
java.lang.SecurityException
- If the caller does not have the appropriate
AdminPermission[this,METADATA]
, and the Java Runtime
Environment supports permissions.ServiceReference<?>[] getRegisteredServices()
ServiceReference
list for all services it
has registered or null
if this bundle has no registered services.
If the Java runtime supports permissions, a ServiceReference
object to a service is included in the returned list only if the caller
has the ServicePermission
to get the service using at least one
of the named classes the service was registered under.
The list is valid at the time of the call to this method, however, as the Framework is a very dynamic environment, services can be modified or unregistered at anytime.
ServiceReference
objects or null
.java.lang.IllegalStateException
- If this bundle has been uninstalled.ServiceRegistration
,
ServiceReference
,
ServicePermission
ServiceReference<?>[] getServicesInUse()
ServiceReference
list for all services it
is using or returns null
if this bundle is not using any
services. A bundle is considered to be using a service if it has any
unreleased service objects.
If the Java Runtime Environment supports permissions, a
ServiceReference
object to a service is included in the returned
list only if the caller has the ServicePermission
to get the
service using at least one of the named classes the service was
registered under.
The list is valid at the time of the call to this method, however, as the Framework is a very dynamic environment, services can be modified or unregistered at anytime.
ServiceReference
objects or null
.java.lang.IllegalStateException
- If this bundle has been uninstalled.ServiceReference
,
ServicePermission
boolean hasPermission(java.lang.Object permission)
If the Java Runtime Environment does not support permissions, this method
always returns true
.
permission
is of type Object
to avoid referencing the
java.security.Permission
class directly. This is to allow the
Framework to be implemented in Java environments which do not support
permissions.
If the Java Runtime Environment does support permissions, this bundle and
all its resources including embedded JAR files, belong to the same
java.security.ProtectionDomain
; that is, they must share the same
set of permissions.
permission
- The permission to verify.true
if this bundle has the specified permission or the
permissions possessed by this bundle imply the specified
permission; false
if this bundle does not have the
specified permission or permission
is not an
instanceof
java.security.Permission
.java.lang.IllegalStateException
- If this bundle has been uninstalled.java.net.URL getResource(java.lang.String name)
INSTALLED
, this method must
attempt to resolve this bundle before attempting to get the specified
resource. If this bundle cannot be resolved, then only this bundle must
be searched for the specified resource. Imported packages cannot be
searched when this bundle has not been resolved. If this bundle is a
fragment bundle then null
is returned.
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.
name
- The name of the resource. See ClassLoader.getResource
for a description of the format of a resource name.null
if the resource
could not be found or if this bundle is a fragment bundle or if
the caller does not have the appropriate
AdminPermission[this,RESOURCE]
, and the Java Runtime
Environment supports permissions.java.lang.IllegalStateException
- If this bundle has been uninstalled.getEntry(String)
,
findEntries(String, String, boolean)
java.util.Dictionary<java.lang.String,java.lang.String> getHeaders(java.lang.String locale)
This method performs the same function as Bundle.getHeaders()
except the manifest header values are localized to the specified locale.
If a Manifest header value starts with "%", it must be localized according to the specified locale. If a locale is specified and cannot be found, then the header values must be returned using the default locale. Localizations are searched for in the following order:
bn + "_" + Ls + "_" + Cs + "_" + Vs bn + "_" + Ls + "_" + Cs bn + "_" + Ls bn + "_" + Ld + "_" + Cd + "_" + Vd bn + "_" + Ld + "_" + Cd bn + "_" + Ld bnWhere
bn
is this bundle's localization basename, Ls
,
Cs
and Vs
are the specified locale (language, country,
variant) and Ld
, Cd
and Vd
are the default locale
(language, country, variant).
If null
is specified as the locale string, the header values must
be localized using the default locale. If the empty string ("")
is specified as the locale string, the header values must not be
localized and the raw (unlocalized) header values, including any leading
"%", must be returned. If no localization is found for a header
value, the header value without the leading "%" is returned.
This method must continue to return Manifest header information while
this bundle is in the UNINSTALLED
state, however the header
values must only be available in the raw and default locale values.
locale
- The locale name into which the header values are to be
localized. If the specified locale is null
then the locale
returned by java.util.Locale.getDefault
is used. If the
specified locale is the empty string, this method will return the
raw (unlocalized) manifest headers including any leading
"%".Dictionary
object containing this
bundle's Manifest headers and values.java.lang.SecurityException
- If the caller does not have the appropriate
AdminPermission[this,METADATA]
, and the Java Runtime
Environment supports permissions.getHeaders()
,
Constants.BUNDLE_LOCALIZATION
java.lang.String getSymbolicName()
Bundle-SymbolicName
manifest header. The bundle symbolic name
should be based on the reverse domain name naming convention like that
used for java packages.
This method must continue to return this bundle's symbolic name while
this bundle is in the UNINSTALLED
state.
null
if this bundle
does not have a symbolic name.java.lang.Class<?> loadClass(java.lang.String name) throws java.lang.ClassNotFoundException
If this bundle is a fragment bundle then this method must throw a
ClassNotFoundException
.
If this bundle's state is INSTALLED
, this method must attempt to
resolve this bundle before attempting to load the class.
If this bundle cannot be resolved, a Framework event of type
FrameworkEvent.ERROR
is fired containing a
BundleException
with details of the reason this bundle could not
be resolved. This method must then throw a ClassNotFoundException
.
If this bundle's state is UNINSTALLED
, then an
IllegalStateException
is thrown.
name
- The name of the class to load.java.lang.ClassNotFoundException
- If no such class can be found or if this
bundle is a fragment bundle or if the caller does not have the
appropriate AdminPermission[this,CLASS]
, and the Java
Runtime Environment supports permissions.java.lang.IllegalStateException
- If this bundle has been uninstalled.java.util.Enumeration<java.net.URL> getResources(java.lang.String name) throws java.io.IOException
INSTALLED
, this method must
attempt to resolve this bundle before attempting to get the specified
resources. If this bundle cannot be resolved, then only this bundle must
be searched for the specified resources. Imported packages cannot be
searched when a bundle has not been resolved. If this bundle is a
fragment bundle then null
is returned.
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.
name
- The name of the resource. See
ClassLoader.getResources
for a description of the format
of a resource name.null
if
the resource could not be found or if this bundle is a fragment
bundle or if the caller does not have the appropriate
AdminPermission[this,RESOURCE]
, and the Java Runtime
Environment supports permissions.java.lang.IllegalStateException
- If this bundle has been uninstalled.java.io.IOException
- If there is an I/O error.java.util.Enumeration<java.lang.String> getEntryPaths(java.lang.String path)
String
objects) to
entries within this bundle whose longest sub-path matches the specified
path. This bundle's class loader is not used to search for entries. Only
the contents of this bundle are searched.
The specified path is always relative to the root of this bundle and may begin with a "/". A path value of "/" indicates the root of this bundle.
Returned paths indicating subdirectory paths end with a "/". The returned paths are all relative to the root of this bundle and must not begin with "/".
Note: Jar and zip files are not required to include directory entries. Paths to directory entries will not be returned if the bundle contents do not contain directory entries.
path
- The path name for which to return entry paths.String
objects) or
null
if no entry could be found or if the caller does not
have the appropriate AdminPermission[this,RESOURCE]
and
the Java Runtime Environment supports permissions.java.lang.IllegalStateException
- If this bundle has been uninstalled.java.net.URL getEntry(java.lang.String path)
The specified path is always relative to the root of this bundle and may begin with "/". A path value of "/" indicates the root of this bundle.
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.
path
- The path name of the entry.null
if no entry could be found or
if the caller does not have the appropriate
AdminPermission[this,RESOURCE]
and the Java Runtime
Environment supports permissions.java.lang.IllegalStateException
- If this bundle has been uninstalled.long getLastModified()
The time value is the number of milliseconds since January 1, 1970, 00:00:00 UTC.
java.util.Enumeration<java.net.URL> findEntries(java.lang.String path, java.lang.String filePattern, boolean recurse)
INSTALLED
, this method must attempt to
resolve this bundle before attempting to find entries.
This method is intended to be used to obtain configuration, setup, localization and other information from this bundle. This method takes into account that the "contents" of this bundle can be extended with fragments. This "bundle space" is not a namespace with unique members; the same entry name can be present multiple times. This method therefore returns an enumeration 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. Fragments can be attached after this bundle is resolved, possibly changing the set of URLs returned by this method. If this bundle is not resolved, only the entries in the JAR file of this bundle are returned.
Examples:
// List all XML files in the OSGI-INF directory and below Enumeration e = b.findEntries("OSGI-INF", "*.xml", true); // Find a specific localization file Enumeration e = b.findEntries("OSGI-INF/l10n", "bundle_nl_DU.properties", false); if (e.hasMoreElements()) return (URL) e.nextElement();
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.
path
- The path name in which to look. The path is always relative
to the root of this bundle and may begin with "/". A
path value of "/" indicates the root of this bundle.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 ("*"). If null is
specified, this is equivalent to "*" and matches all
files.recurse
- If true
, recurse into subdirectories. Otherwise
only return entries from the specified path.null
if no matching entry could be found or if the caller
does not have the appropriate
AdminPermission[this,RESOURCE]
, and the Java Runtime
Environment supports permissions. The URLs are sorted such that
entries from this bundle are returned first followed by the
entries from attached fragments in attachment order. If this
bundle is a fragment, then only matching entries in this fragment
are returned.java.lang.IllegalStateException
- If this bundle has been uninstalled.BundleContext getBundleContext()
BundleContext
. The returned
BundleContext
can be used by the caller to act on behalf of this
bundle.
If this bundle is not in the STARTING
, ACTIVE
, or
STOPPING
states or this bundle is a fragment bundle, then this
bundle has no valid BundleContext
. This method will return
null
if this bundle has no valid BundleContext
.
BundleContext
for this bundle or null
if this
bundle has no valid BundleContext
.java.lang.SecurityException
- If the caller does not have the appropriate
AdminPermission[this,CONTEXT]
, and the Java Runtime
Environment supports permissions.java.util.Map<java.security.cert.X509Certificate,java.util.List<java.security.cert.X509Certificate>> getSignerCertificates(int signersType)
signersType
- If SIGNERS_ALL
is specified, then information
on all signers of this bundle is returned. If
SIGNERS_TRUSTED
is specified, then only information on
the signers of this bundle trusted by the framework is returned.X509Certificate
s for the signers of this bundle and
the X509Certificate
chains for those signers. The keys of
the Map
are the X509Certificate
s of the signers
of this bundle. The value for a key is a List
containing
the X509Certificate
chain for the signer. The first item
in the List
is the signer's X509Certificate
which
is then followed by the rest of the X509Certificate
chain. The returned Map
will be empty if there are no
signers. The returned Map
is the property of the caller
who is free to modify it.java.lang.IllegalArgumentException
- If the specified signersType
is
not SIGNERS_ALL
or SIGNERS_TRUSTED
.Version getVersion()
Bundle-Version
manifest header. If this bundle does not have a
specified version then Version.emptyVersion
is returned.
This method must continue to return this bundle's version while this
bundle is in the UNINSTALLED
state.
<A> A adapt(java.lang.Class<A> type)
Adapting this bundle to the specified type may require certain checks,
including security checks, to succeed. If a check does not succeed, then
this bundle cannot be adapted and null
is returned.
A
- The type to which this bundle is to be adapted.type
- Class object for the type to which this bundle is to be
adapted.null
if this bundle cannot be adapted to the
specified type.java.lang.SecurityException
- If the caller does not have the appropriate
AdaptPermission[type,this,ADAPT]
, and the Java Runtime
Environment supports permissions.java.io.File getDataFile(java.lang.String filename)
File
object for a file in the persistent storage area
provided for this bundle by the Framework. This method will return
null
if the platform does not have file system support or this
bundle is a fragment bundle.
A File
object for the base directory of the persistent storage
area provided for this bundle by the Framework can be obtained by calling
this method with an empty string as filename
.
If the Java Runtime Environment supports permissions, the Framework will
ensure that this bundle has the java.io.FilePermission
with
actions read
,write
,delete
for all files
(recursively) in the persistent storage area provided for this bundle.
filename
- A relative name to the file to be accessed.File
object that represents the requested file or
null
if the platform does not have file system support or
this bundle is a fragment bundle.java.lang.IllegalStateException
- If this bundle has been uninstalled.Copyright © OSGi Alliance (2000, 2018). All Rights Reserved. Licensed under the OSGi Specification License, Version 2.0