Interface Bundle
- All Superinterfaces:
Comparable<Bundle>
- All Known Subinterfaces:
Framework
- All Known Implementing Classes:
Felix
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 Bundles 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.
- Author:
- $Id: 81a8f18b2fcc7810817cd19f6d5e0709db1c1d12 $
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intThe bundle is now running.static final intThe bundle is installed but not yet resolved.static final intThe bundle is resolved and is able to be started.static final intRequest that all certificates used to sign the bundle be returned.static final intRequest that only certificates used to sign the bundle that are trusted by the framework be returned.static final intThe bundle start operation must activate the bundle according to the bundle's declaredactivation policy.static final intThe bundle start operation is transient and the persistent autostart setting of the bundle is not modified.static final intThe bundle is in the process of starting.static final intThe bundle stop is transient and the persistent autostart setting of the bundle is not modified.static final intThe bundle is in the process of stopping.static final intThe bundle is uninstalled and may not be used. -
Method Summary
Modifier and TypeMethodDescription<A> AAdapt this bundle to the specified type.findEntries(String path, String filePattern, boolean recurse) Returns entries in this bundle and its attached fragments.Returns this bundle'sBundleContext.longReturns this bundle's unique identifier.getDataFile(String filename) Creates aFileobject for a file in the persistent storage area provided for this bundle by the Framework.Returns a URL to the entry at the specified path in this bundle.getEntryPaths(String path) Returns an Enumeration of all the paths (Stringobjects) to entries within this bundle whose longest sub-path matches the specified path.Returns this bundle's Manifest headers and values.getHeaders(String locale) Returns this bundle's Manifest headers and values localized to the specified locale.longReturns the time when this bundle was last modified.Returns this bundle's location identifier.ServiceReference<?>[]Returns this bundle'sServiceReferencelist for all services it has registered ornullif this bundle has no registered services.getResource(String name) Find the specified resource from this bundle's class loader.getResources(String name) Find the specified resources from this bundle's class loader.ServiceReference<?>[]Returns this bundle'sServiceReferencelist for all services it is using or returnsnullif this bundle is not using any services.getSignerCertificates(int signersType) Return the certificates for the signers of this bundle and the certificate chains for those signers.intgetState()Returns this bundle's current state.Returns the symbolic name of this bundle as specified by itsBundle-SymbolicNamemanifest header.Returns the version of this bundle as specified by itsBundle-Versionmanifest header.booleanhasPermission(Object permission) Determines if this bundle has the specified permissions.Class<?> Loads the specified class using this bundle's class loader.voidstart()Starts this bundle with no options.voidstart(int options) Starts this bundle.voidstop()Stops this bundle with no options.voidstop(int options) Stops this bundle.voidUninstalls this bundle.voidupdate()Updates this bundle.voidupdate(InputStream input) Updates this bundle from anInputStream.Methods inherited from interface java.lang.Comparable
compareTo
-
Field Details
-
UNINSTALLED
static final int UNINSTALLEDThe bundle is uninstalled and may not be used.The
UNINSTALLEDstate is only visible after a bundle is uninstalled; the bundle is in an unusable state but references to theBundleobject may still be available and used for introspection.The value of
UNINSTALLEDis 0x00000001.- See Also:
-
INSTALLED
static final int INSTALLEDThe bundle is installed but not yet resolved.A bundle is in the
INSTALLEDstate 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
INSTALLEDbundle's code dependencies and move the bundle to theRESOLVEDstate.The value of
INSTALLEDis 0x00000002.- See Also:
-
RESOLVED
static final int RESOLVEDThe bundle is resolved and is able to be started.A bundle is in the
RESOLVEDstate when the Framework has successfully resolved the bundle's code dependencies. These dependencies include:- The bundle's class path from its
Constants.BUNDLE_CLASSPATHManifest header. - The bundle's package dependencies from its
Constants.EXPORT_PACKAGEandConstants.IMPORT_PACKAGEManifest headers. - The bundle's required bundle dependencies from its
Constants.REQUIRE_BUNDLEManifest header. - A fragment bundle's host dependency from its
Constants.FRAGMENT_HOSTManifest header.
Note that the bundle is not active yet. A bundle must be put in the
RESOLVEDstate before it can be started. The Framework may attempt to resolve a bundle at any time.The value of
RESOLVEDis 0x00000004.- See Also:
- The bundle's class path from its
-
STARTING
static final int STARTINGThe bundle is in the process of starting.A bundle is in the
STARTINGstate when itsstartmethod is active. A bundle must be in this state when the bundle'sBundleActivator.start(BundleContext)is called. If theBundleActivator.startmethod completes without exception, then the bundle has successfully started and must move to theACTIVEstate.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
STARTINGis 0x00000008.- See Also:
-
STOPPING
static final int STOPPINGThe bundle is in the process of stopping.A bundle is in the
STOPPINGstate when itsstopmethod is active. A bundle must be in this state when the bundle'sBundleActivator.stop(BundleContext)method is called. When theBundleActivator.stopmethod completes the bundle is stopped and must move to theRESOLVEDstate.The value of
STOPPINGis 0x00000010.- See Also:
-
ACTIVE
static final int ACTIVEThe bundle is now running.A bundle is in the
ACTIVEstate when it has been successfully started and activated.The value of
ACTIVEis 0x00000020.- See Also:
-
START_TRANSIENT
static final int START_TRANSIENTThe bundle start operation is transient and the persistent autostart setting of the bundle is not modified.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.- Since:
- 1.4
- See Also:
-
START_ACTIVATION_POLICY
static final int START_ACTIVATION_POLICYThe bundle start operation must activate the bundle according to the bundle's declaredactivation 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.- Since:
- 1.4
- See Also:
-
STOP_TRANSIENT
static final int STOP_TRANSIENTThe bundle stop is transient and the persistent autostart setting of the bundle is not modified.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.- Since:
- 1.4
- See Also:
-
SIGNERS_ALL
static final int SIGNERS_ALLRequest that all certificates used to sign the bundle be returned.- Since:
- 1.5
- See Also:
-
SIGNERS_TRUSTED
static final int SIGNERS_TRUSTEDRequest that only certificates used to sign the bundle that are trusted by the framework be returned.- Since:
- 1.5
- See Also:
-
-
Method Details
-
getState
int getState()Returns this bundle's current state.A bundle can be in only one state at any time.
- Returns:
- An element of
UNINSTALLED,INSTALLED,RESOLVED,STARTING,STOPPING,ACTIVE.
-
start
Starts this bundle.If this bundle's state is
UNINSTALLEDthen anIllegalStateExceptionis thrown.If the current start level is less than this bundle's start level:
- If the
START_TRANSIENToption is set, then aBundleExceptionis thrown indicating this bundle cannot be started due to the Framework's current start level. - Otherwise, the Framework must set this bundle's persistent autostart
setting to Started with declared activation if the
START_ACTIVATION_POLICYoption 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:
- If this bundle is in the process of being activated or deactivated
then this method must wait for activation or deactivation to complete
before continuing. If this does not occur in a reasonable time, a
BundleExceptionis thrown to indicate this bundle was unable to be started. - If the
START_TRANSIENToption is not set then set this bundle's autostart setting to Started with declared activation if theSTART_ACTIVATION_POLICYoption 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. - If this bundle's state is
ACTIVEthen this method returns immediately. - If this bundle's state is not
RESOLVED, an attempt is made to resolve this bundle. If the Framework cannot resolve this bundle, aBundleExceptionis thrown. - If the
START_ACTIVATION_POLICYoption is set and this bundle's declared activation policy islazythen:- If this bundle's state is
STARTINGthen this method returns immediately. - This bundle's state is set to
STARTING. - A bundle event of type
BundleEvent.LAZY_ACTIVATIONis fired. - This method returns immediately and the remaining steps will be followed when this bundle's activation is later triggered.
- If this bundle's state is
- This bundle's state is set to
STARTING. - A bundle event of type
BundleEvent.STARTINGis fired. - The
BundleActivator.start(BundleContext)method of this bundle'sBundleActivator, if one is specified, is called. If theBundleActivatoris invalid or throws an exception then:- This bundle's state is set to
STOPPING. - A bundle event of type
BundleEvent.STOPPINGis fired. - Any services registered by this bundle must be unregistered.
- Any services used by this bundle must be released.
- Any listeners registered by this bundle must be removed.
- This bundle's state is set to
RESOLVED. - A bundle event of type
BundleEvent.STOPPEDis fired. - A
BundleExceptionis then thrown.
- This bundle's state is set to
- This bundle's state is set to
ACTIVE. - A bundle event of type
BundleEvent.STARTEDis fired.
getState()in {INSTALLED,RESOLVED} or {INSTALLED,RESOLVED,STARTING} if this bundle has a lazy activation policy.
- Bundle autostart setting is modified unless the
START_TRANSIENToption 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.
- Depending on when the exception occurred, bundle autostart setting is
modified unless the
START_TRANSIENToption was set. getState()not in {STARTING,ACTIVE}.
- Parameters:
options- The options for starting this bundle. SeeSTART_TRANSIENTandSTART_ACTIVATION_POLICY. The Framework must ignore unrecognized options.- Throws:
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, andBundleException.ACTIVATOR_ERROR.IllegalStateException- If this bundle has been uninstalled or this bundle tries to change its own state.SecurityException- If the caller does not have the appropriateAdminPermission[this,EXECUTE], and the Java Runtime Environment supports permissions.- Since:
- 1.4
- If the
-
start
Starts this bundle with no options.This method performs the same function as calling
start(0).- Throws:
BundleException- If this bundle could not be started. BundleException types thrown by this method include:BundleException.NATIVECODE_ERROR,BundleException.RESOLVE_ERROR,BundleException.STATECHANGE_ERROR, andBundleException.ACTIVATOR_ERROR.IllegalStateException- If this bundle has been uninstalled or this bundle tries to change its own state.SecurityException- If the caller does not have the appropriateAdminPermission[this,EXECUTE], and the Java Runtime Environment supports permissions.- See Also:
-
stop
Stops this bundle.The following steps are required to stop a bundle:
- If this bundle's state is
UNINSTALLEDthen anIllegalStateExceptionis thrown. - If this bundle is in the process of being activated or deactivated
then this method must wait for activation or deactivation to complete
before continuing. If this does not occur in a reasonable time, a
BundleExceptionis thrown to indicate this bundle was unable to be stopped. - If the
STOP_TRANSIENToption is not set then then set this bundle's persistent autostart setting to to Stopped. When the Framework is restarted and this bundle's autostart setting is Stopped, this bundle must not be automatically started. - If this bundle's state is not
STARTINGorACTIVEthen this method returns immediately. - This bundle's state is set to
STOPPING. - A bundle event of type
BundleEvent.STOPPINGis fired. - If this bundle's state was
ACTIVEprior to setting the state toSTOPPING, theBundleActivator.stop(BundleContext)method of this bundle'sBundleActivator, if one is specified, is called. If that method throws an exception, this method must continue to stop this bundle and aBundleExceptionmust be thrown after completion of the remaining steps. - Any services registered by this bundle must be unregistered.
- Any services used by this bundle must be released.
- Any listeners registered by this bundle must be removed.
- If this bundle's state is
UNINSTALLED, because this bundle was uninstalled while theBundleActivator.stopmethod was running, aBundleExceptionmust be thrown. - This bundle's state is set to
RESOLVED. - A bundle event of type
BundleEvent.STOPPEDis fired.
getState()in {ACTIVE}.
- Bundle autostart setting is modified unless the
STOP_TRANSIENToption was set. getState()not in {ACTIVE,STOPPING}.BundleActivator.stophas been called and did not throw an exception.
- Bundle autostart setting is modified unless the
STOP_TRANSIENToption was set.
- Parameters:
options- The options for stopping this bundle. SeeSTOP_TRANSIENT. The Framework must ignore unrecognized options.- Throws:
BundleException- BundleException types thrown by this method include:BundleException.STATECHANGE_ERRORandBundleException.ACTIVATOR_ERROR.IllegalStateException- If this bundle has been uninstalled or this bundle tries to change its own state.SecurityException- If the caller does not have the appropriateAdminPermission[this,EXECUTE], and the Java Runtime Environment supports permissions.- Since:
- 1.4
- If this bundle's state is
-
stop
Stops this bundle with no options.This method performs the same function as calling
stop(0).- Throws:
BundleException- BundleException types thrown by this method include:BundleException.STATECHANGE_ERRORandBundleException.ACTIVATOR_ERROR.IllegalStateException- If this bundle has been uninstalled or this bundle tries to change its own state.SecurityException- If the caller does not have the appropriateAdminPermission[this,EXECUTE], and the Java Runtime Environment supports permissions.- See Also:
-
update
Updates this bundle from anInputStream.If the specified
InputStreamisnull, the Framework must create theInputStreamfrom which to read the updated bundle by interpreting, in an implementation dependent manner, this bundle'sBundle-UpdateLocationManifest 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.refreshBundlesmethod has been has been called or the Framework is relaunched.The following steps are required to update a bundle:
- If this bundle's state is
UNINSTALLEDthen anIllegalStateExceptionis thrown. - If this bundle's state is
ACTIVE,STARTINGorSTOPPING, this bundle is stopped as described in theBundle.stopmethod. IfBundle.stopthrows an exception, the exception is rethrown terminating the update. - The updated version of this bundle is read from the input stream and
installed. If the Framework is unable to install the updated version of
this bundle, the original version of this bundle must be restored and a
BundleExceptionmust be thrown after completion of the remaining steps. - This bundle's state is set to
INSTALLED. - If the updated version of this bundle was successfully installed, a
bundle event of type
BundleEvent.UPDATEDis fired. - If this bundle's state was originally
ACTIVE, the updated bundle is started as described in theBundle.startmethod. IfBundle.startthrows an exception, a Framework event of typeFrameworkEvent.ERRORis fired containing the exception.
getState()not in {UNINSTALLED}.
getState()in {INSTALLED,RESOLVED,ACTIVE}.- This bundle has been updated.
getState()in {INSTALLED,RESOLVED,ACTIVE}.- Original bundle is still used; no update occurred.
- Parameters:
input- TheInputStreamfrom which to read the new bundle ornullto indicate the Framework must create the input stream from this bundle'sBundle-UpdateLocationManifest 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.- Throws:
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, andBundleException.ACTIVATOR_ERROR.IllegalStateException- If this bundle has been uninstalled or this bundle tries to change its own state.SecurityException- If the caller does not have the appropriateAdminPermission[this,LIFECYCLE]for both the current bundle and the updated bundle, and the Java Runtime Environment supports permissions.- See Also:
- If this bundle's state is
-
update
Updates this bundle.This method performs the same function as calling
update(InputStream)with anullInputStream.- Throws:
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, andBundleException.ACTIVATOR_ERROR.IllegalStateException- If this bundle has been uninstalled or this bundle tries to change its own state.SecurityException- If the caller does not have the appropriateAdminPermission[this,LIFECYCLE]for both the current bundle and the updated bundle, and the Java Runtime Environment supports permissions.- See Also:
-
uninstall
Uninstalls this bundle.This method causes the Framework to notify other bundles that this bundle is being uninstalled, and then puts this bundle into the
UNINSTALLEDstate. 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.refreshBundlesmethod has been called or the Framework is relaunched.The following steps are required to uninstall a bundle:
- If this bundle's state is
UNINSTALLEDthen anIllegalStateExceptionis thrown. - If this bundle's state is
ACTIVE,STARTINGorSTOPPING, this bundle is stopped as described in theBundle.stopmethod. IfBundle.stopthrows an exception, a Framework event of typeFrameworkEvent.ERRORis fired containing the exception. - This bundle's state is set to
UNINSTALLED. - A bundle event of type
BundleEvent.UNINSTALLEDis fired. - This bundle and any persistent storage area provided for this bundle by the Framework are removed.
getState()not in {UNINSTALLED}.
getState()in {UNINSTALLED}.- This bundle has been uninstalled.
getState()not in {UNINSTALLED}.- This Bundle has not been uninstalled.
- Throws:
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_ERRORIllegalStateException- If this bundle has been uninstalled or this bundle tries to change its own state.SecurityException- If the caller does not have the appropriateAdminPermission[this,LIFECYCLE], and the Java Runtime Environment supports permissions.- See Also:
- If this bundle's state is
-
getHeaders
Dictionary<String,String> getHeaders()Returns this bundle's Manifest headers and values. This method returns all the Manifest headers and values from the main section of this bundle's Manifest file; that is, all lines prior to the first blank line.Manifest header names are case-insensitive. The methods of the returned
Dictionaryobject 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-ContactAddressThis method must continue to return Manifest header information while this bundle is in the
UNINSTALLEDstate.- Returns:
- An unmodifiable
Dictionaryobject containing this bundle's Manifest headers and values. - Throws:
SecurityException- If the caller does not have the appropriateAdminPermission[this,METADATA], and the Java Runtime Environment supports permissions.- See Also:
-
getBundleId
long getBundleId()Returns this bundle's unique identifier. This bundle is assigned a unique identifier by the Framework when it was installed in the OSGi environment.A bundle's unique identifier has the following attributes:
- Is unique and persistent.
- Is a
long. - Its value is not reused for another bundle, even after a bundle is uninstalled.
- Does not change while a bundle remains installed.
- Does not change when a bundle is updated.
This method must continue to return this bundle's unique identifier while this bundle is in the
UNINSTALLEDstate.- Returns:
- The unique identifier of this bundle.
-
getLocation
String getLocation()Returns this bundle's location identifier.The location identifier is the location passed to
BundleContext.installBundlewhen 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
UNINSTALLEDstate.- Returns:
- The string representation of this bundle's location identifier.
- Throws:
SecurityException- If the caller does not have the appropriateAdminPermission[this,METADATA], and the Java Runtime Environment supports permissions.
-
getRegisteredServices
ServiceReference<?>[] getRegisteredServices()Returns this bundle'sServiceReferencelist for all services it has registered ornullif this bundle has no registered services.If the Java runtime supports permissions, a
ServiceReferenceobject to a service is included in the returned list only if the caller has theServicePermissionto 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.
- Returns:
- An array of
ServiceReferenceobjects ornull. - Throws:
IllegalStateException- If this bundle has been uninstalled.- See Also:
-
getServicesInUse
ServiceReference<?>[] getServicesInUse()Returns this bundle'sServiceReferencelist for all services it is using or returnsnullif 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
ServiceReferenceobject to a service is included in the returned list only if the caller has theServicePermissionto 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.
- Returns:
- An array of
ServiceReferenceobjects ornull. - Throws:
IllegalStateException- If this bundle has been uninstalled.- See Also:
-
hasPermission
Determines if this bundle has the specified permissions.If the Java Runtime Environment does not support permissions, this method always returns
true.permissionis of typeObjectto avoid referencing thejava.security.Permissionclass 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.- Parameters:
permission- The permission to verify.- Returns:
trueif this bundle has the specified permission or the permissions possessed by this bundle imply the specified permission;falseif this bundle does not have the specified permission orpermissionis not aninstanceofjava.security.Permission.- Throws:
IllegalStateException- If this bundle has been uninstalled.
-
getResource
Find the specified resource from this bundle's class loader. This bundle's class loader is called to search for the specified resource. If this bundle's state isINSTALLED, 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 thennullis 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.
- Parameters:
name- The name of the resource. SeeClassLoader.getResourcefor a description of the format of a resource name.- Returns:
- A URL to the named resource, or
nullif the resource could not be found or if this bundle is a fragment bundle or if the caller does not have the appropriateAdminPermission[this,RESOURCE], and the Java Runtime Environment supports permissions. - Throws:
IllegalStateException- If this bundle has been uninstalled.- Since:
- 1.1
- See Also:
-
getHeaders
Returns this bundle's Manifest headers and values localized to the specified 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 bn
Wherebnis this bundle's localization basename,Ls,CsandVsare the specified locale (language, country, variant) andLd,CdandVdare the default locale (language, country, variant). Ifnullis 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
UNINSTALLEDstate, however the header values must only be available in the raw and default locale values.- Parameters:
locale- The locale name into which the header values are to be localized. If the specified locale isnullthen the locale returned byjava.util.Locale.getDefaultis used. If the specified locale is the empty string, this method will return the raw (unlocalized) manifest headers including any leading "%".- Returns:
- An unmodifiable
Dictionaryobject containing this bundle's Manifest headers and values. - Throws:
SecurityException- If the caller does not have the appropriateAdminPermission[this,METADATA], and the Java Runtime Environment supports permissions.- Since:
- 1.3
- See Also:
-
getSymbolicName
String getSymbolicName()Returns the symbolic name of this bundle as specified by itsBundle-SymbolicNamemanifest 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
UNINSTALLEDstate.- Returns:
- The symbolic name of this bundle or
nullif this bundle does not have a symbolic name. - Since:
- 1.3
-
loadClass
Loads the specified class using this bundle's class loader.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.ERRORis fired containing aBundleExceptionwith details of the reason this bundle could not be resolved. This method must then throw aClassNotFoundException.If this bundle's state is
UNINSTALLED, then anIllegalStateExceptionis thrown.- Parameters:
name- The name of the class to load.- Returns:
- The Class object for the requested class.
- Throws:
ClassNotFoundException- If no such class can be found or if this bundle is a fragment bundle or if the caller does not have the appropriateAdminPermission[this,CLASS], and the Java Runtime Environment supports permissions.IllegalStateException- If this bundle has been uninstalled.- Since:
- 1.3
-
getResources
Find the specified resources from this bundle's class loader. This bundle's class loader is called to search for the specified resources. If this bundle's state isINSTALLED, 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 thennullis 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.
- Parameters:
name- The name of the resource. SeeClassLoader.getResourcesfor a description of the format of a resource name.- Returns:
- An enumeration of URLs to the named resources, or
nullif the resource could not be found or if this bundle is a fragment bundle or if the caller does not have the appropriateAdminPermission[this,RESOURCE], and the Java Runtime Environment supports permissions. - Throws:
IllegalStateException- If this bundle has been uninstalled.IOException- If there is an I/O error.- Since:
- 1.3
-
getEntryPaths
Returns an Enumeration of all the paths (Stringobjects) 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.
- Parameters:
path- The path name for which to return entry paths.- Returns:
- An Enumeration of the entry paths (
Stringobjects) ornullif no entry could be found or if the caller does not have the appropriateAdminPermission[this,RESOURCE]and the Java Runtime Environment supports permissions. - Throws:
IllegalStateException- If this bundle has been uninstalled.- Since:
- 1.3
-
getEntry
Returns a URL to the entry at the specified path in this bundle. This bundle's class loader is not used to search for the entry. Only the contents of this bundle are searched for the entry.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.
- Parameters:
path- The path name of the entry.- Returns:
- A URL to the entry, or
nullif no entry could be found or if the caller does not have the appropriateAdminPermission[this,RESOURCE]and the Java Runtime Environment supports permissions. - Throws:
IllegalStateException- If this bundle has been uninstalled.- Since:
- 1.3
-
getLastModified
long getLastModified()Returns the time when this bundle was last modified. A bundle is considered to be modified when it is installed, updated or uninstalled.The time value is the number of milliseconds since January 1, 1970, 00:00:00 UTC.
- Returns:
- The time when this bundle was last modified.
- Since:
- 1.3
-
findEntries
Returns entries in this bundle and its attached fragments. This bundle's class loader is not used to search for entries. Only the contents of this bundle and its attached fragments are searched for the specified entries. If this bundle's state isINSTALLED, 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.
- Parameters:
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- Iftrue, recurse into subdirectories. Otherwise only return entries from the specified path.- Returns:
- An enumeration of URL objects for each matching entry, or
nullif no matching entry could be found or if the caller does not have the appropriateAdminPermission[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. - Throws:
IllegalStateException- If this bundle has been uninstalled.- Since:
- 1.3
-
getBundleContext
BundleContext getBundleContext()Returns this bundle'sBundleContext. The returnedBundleContextcan be used by the caller to act on behalf of this bundle.If this bundle is not in the
STARTING,ACTIVE, orSTOPPINGstates or this bundle is a fragment bundle, then this bundle has no validBundleContext. This method will returnnullif this bundle has no validBundleContext.- Returns:
- A
BundleContextfor this bundle ornullif this bundle has no validBundleContext. - Throws:
SecurityException- If the caller does not have the appropriateAdminPermission[this,CONTEXT], and the Java Runtime Environment supports permissions.- Since:
- 1.4
-
getSignerCertificates
Return the certificates for the signers of this bundle and the certificate chains for those signers.- Parameters:
signersType- IfSIGNERS_ALLis specified, then information on all signers of this bundle is returned. IfSIGNERS_TRUSTEDis specified, then only information on the signers of this bundle trusted by the framework is returned.- Returns:
- The
X509Certificates for the signers of this bundle and theX509Certificatechains for those signers. The keys of theMapare theX509Certificates of the signers of this bundle. The value for a key is aListcontaining theX509Certificatechain for the signer. The first item in theListis the signer'sX509Certificatewhich is then followed by the rest of theX509Certificatechain. The returnedMapwill be empty if there are no signers. The returnedMapis the property of the caller who is free to modify it. - Throws:
IllegalArgumentException- If the specifiedsignersTypeis notSIGNERS_ALLorSIGNERS_TRUSTED.- Since:
- 1.5
-
getVersion
Version getVersion()Returns the version of this bundle as specified by itsBundle-Versionmanifest header. If this bundle does not have a specified version thenVersion.emptyVersionis returned.This method must continue to return this bundle's version while this bundle is in the
UNINSTALLEDstate.- Returns:
- The version of this bundle.
- Since:
- 1.5
-
adapt
Adapt this bundle to the specified 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
nullis returned.- Type Parameters:
A- The type to which this bundle is to be adapted.- Parameters:
type- Class object for the type to which this bundle is to be adapted.- Returns:
- The object, of the specified type, to which this bundle has been
adapted or
nullif this bundle cannot be adapted to the specified type. - Throws:
SecurityException- If the caller does not have the appropriateAdaptPermission[type,this,ADAPT], and the Java Runtime Environment supports permissions.- Since:
- 1.6
-
getDataFile
Creates aFileobject for a file in the persistent storage area provided for this bundle by the Framework. This method will returnnullif the platform does not have file system support or this bundle is a fragment bundle.A
Fileobject 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 asfilename.If the Java Runtime Environment supports permissions, the Framework will ensure that this bundle has the
java.io.FilePermissionwith actionsread,write,deletefor all files (recursively) in the persistent storage area provided for this bundle.- Parameters:
filename- A relative name to the file to be accessed.- Returns:
- A
Fileobject that represents the requested file ornullif the platform does not have file system support or this bundle is a fragment bundle. - Throws:
IllegalStateException- If this bundle has been uninstalled.- Since:
- 1.6
-