|
OSGi Service Platform Release 4 |
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Framework service which allows bundle programmers to inspect the packages exported in the Framework and eagerly update or uninstall bundles. If present, there will only be a single instance of this service registered with the Framework.
The term exported package (and the corresponding interface
ExportedPackage
)refers to a package that has actually been exported
(as opposed to one that is available for export).
The information about exported packages returned by this service is valid
only until the next time refreshPackages(org.osgi.framework.Bundle[])
is called. If an
ExportedPackage
object becomes stale, (that is, the package it
references has been updated or removed as a result of calling
PackageAdmin.refreshPackages()
), its getName()
and
getSpecificationVersion()
continue to return their old values,
isRemovalPending()
returns true
, and
getExportingBundle()
and getImportingBundles()
return
null
.
Field Summary | |
static int |
BUNDLE_TYPE_FRAGMENT
The bundle is a fragment bundle. |
Method Summary | |
Bundle |
getBundle(java.lang.Class clazz)
Returns the bundle for which the specified class is loaded from. |
Bundle[] |
getBundles(java.lang.String symbolicName,
java.lang.String versionRange)
Returns the bundles with the specified symbolic name within the specified version range. |
int |
getBundleType(Bundle bundle)
Returns the special type of the specified bundle. |
ExportedPackage |
getExportedPackage(java.lang.String name)
Gets the ExportedPackage object with the specified package
name. |
ExportedPackage[] |
getExportedPackages(Bundle bundle)
Gets the packages exported by the specified bundle. |
ExportedPackage[] |
getExportedPackages(java.lang.String name)
Get the ExportedPackage objects with the specified
package name. |
Bundle[] |
getFragments(Bundle bundle)
Returns an array of attached fragment bundles for the specified bundle. |
Bundle[] |
getHosts(Bundle bundle)
Returns an array of host bundles to which the specified fragment bundle is attached or null if the specified bundle is not attached to
a host or is not a fragment bundle. |
RequiredBundle[] |
getRequiredBundles(java.lang.String symbolicName)
Returns an array of RequiredBundles with the specified symbolic name. |
void |
refreshPackages(Bundle[] bundles)
Forces the update (replacement) or removal of packages exported by the specified bundles. |
boolean |
resolveBundles(Bundle[] bundles)
Resolve the specified bundles. |
Field Detail |
public static final int BUNDLE_TYPE_FRAGMENT
The value of BUNDLE_TYPE_FRAGMENT
is 0x00000001.
Method Detail |
public ExportedPackage[] getExportedPackages(Bundle bundle)
bundle
- The bundle whose exported packages are to be returned, or
null
if all the packages currently exported in the
Framework are to be returned. If the specified bundle is the
system bundle (that is, the bundle with id zero), this method
returns all the packages on the system classpath whose name does
not start with "java.". In an environment where the exhaustive
list of packages on the system classpath is not known in advance,
this method will return all currently known packages on the system
classpath, that is, all packages on the system classpath that
contains one or more classes that have been loaded.
null
if the specified bundle has not exported any
packages.public ExportedPackage getExportedPackage(java.lang.String name)
ExportedPackage
object with the specified package
name. All exported packages will be checked for the specified name. The
exported package with the highest version will be returned.
In an environment where the exhaustive list of packages on the system
classpath is not known in advance, this method attempts to see if the
named package is on the system classpath. This means that this method may
discover an ExportedPackage
object that was not present in the
list returned by a prior call to getExportedPackages()
.
name
- The name of the exported package to be returned.
null
if no exported packages with that name exists.public void refreshPackages(Bundle[] bundles)
If no bundles are specified, this method will update or remove any packages exported by any bundles that were previously updated or uninstalled since the last call to this method. The technique by which this is accomplished may vary among different Framework implementations. One permissible implementation is to stop and restart the Framework.
This method returns to the caller immediately and then performs the following steps in its own thread:
UNINSTALLED
bundles that are currently still exporting
packages.
ACTIVE
state will
be stopped as described in the Bundle.stop
method.
RESOLVED
state is
moved to the INSTALLED
state. The effect of this step is that
bundles in the graph are no longer RESOLVED
.
UNINSTALLED
state
is removed from the graph and is now completely removed from the
Framework.
ACTIVE
state
prior to Step 2 is started as described in the Bundle.start
method, causing all bundles required for the restart to be resolved. It
is possible that, as a result of the previous steps, packages that were
previously exported no longer are. Therefore, some bundles may be
unresolvable until another bundle offering a compatible package for
export has been installed in the Framework.
FrameworkEvent.PACKAGES_REFRESHED
is broadcast.
For any exceptions that are thrown during any of these steps, a
FrameworkEvent
of type ERROR
is broadcast,
containing the exception. The source bundle for these events should be
the specific bundle to which the exception is related. If no specific
bundle can be associated with the exception then the System Bundle must
be used as the source bundle for the event.
bundles
- the bundles whose exported packages are to be updated or
removed, or null
for all previously updated or
uninstalled bundles.
java.lang.SecurityException
- if the caller does not have the
AdminPermission
and the Java runtime environment
supports permissions.public ExportedPackage[] getExportedPackages(java.lang.String name)
ExportedPackage
objects with the specified
package name. All exported packages will be checked for the specified
name.
In an environment where the exhaustive list of packages on the system
classpath is not known in advance, this method attempts to see if the
named package is on the system classpath. This means that this method may
discover an ExportedPackage
object that was not present in the
list returned by a prior call to getExportedPackages()
.
name
- The name of the exported packages to be returned.
null
if no exported packages with that name exists.public boolean resolveBundles(Bundle[] bundles)
If null
is specified then the Framework will attempt to
resolve all unresolved bundles. This method must not cause any bundle to
be refreshed, stopped, or started. This method will not return until the
operation has completed.
bundles
- The bundles to resolve or null
to resolve all
unresolved bundles installed in the Framework.
true
if all specified bundles are resolved;public RequiredBundle[] getRequiredBundles(java.lang.String symbolicName)
null
then all RequiredBundles
are returned.
symbolicName
- The symbolic name of the RequiredBundle or
null
for all RequiredBundles in the Framework.
null
if no RequiredBundles exist with that symbolic
name.public Bundle[] getBundles(java.lang.String symbolicName, java.lang.String versionRange)
null
is returned. If a version range is
specified, then only the bundles that have the specified symbolic name
and belong to the specified version range are returned. The returned
bundles are ordered by version in descending version order so that the
first element of the array contains the bundle with the highest version.
symbolicName
- The symbolic name of the desired bundles.versionRange
- The version range of the desired bundles, or
null
if all versions are desired.
null
if no bundles are found.Constants.BUNDLE_VERSION_ATTRIBUTE
public Bundle[] getFragments(Bundle bundle)
null
is returned.
If no fragments are attached to the specified bundle then null
is returned.
This method does not attempt to resolve the specified bundle. If the
specified bundle is not resolved then null
is returned.
bundle
- The bundle whose attached fragment bundles are to be
returned.
null
if the bundle
does not have any attached fragment bundles or the bundle is not
resolved.public Bundle[] getHosts(Bundle bundle)
null
if the specified bundle is not attached to
a host or is not a fragment bundle.
bundle
- The bundle whose host bundles are to be returned.
null
if the bundle does
not have any host bundles.public Bundle getBundle(java.lang.Class clazz)
null
is returned.
clazz
- the class object to get a bundle for
null
if the class was not loaded by a bundle
classloaderpublic int getBundleType(Bundle bundle)
If a bundle is not one or more of the defined types then 0x00000000 is returned.
|
OSGi Service Platform Release 4 |
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |