|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.eclipse.osgi.framework.internal.core.AbstractBundle
public abstract class AbstractBundle
This object is given out to bundles and wraps the internal Bundle object. It is destroyed when a bundle is uninstalled and reused if a bundle is updated. This class is abstract and is extended by BundleHost and BundleFragment.
Field Summary | |
---|---|
protected BundleData |
bundledata
Bundle's BundleData object |
protected BundleProtectionDomain |
domain
ProtectionDomain for the bundle |
protected Framework |
framework
The Framework this bundle is part of |
protected ManifestLocalization |
manifestLocalization
|
protected int |
state
The state of the bundle. |
protected java.lang.Object |
statechangeLock
Internal object used for state change synchronization |
protected java.lang.Thread |
stateChanging
A flag to denote whether a bundle state change is in progress |
Fields inherited from interface org.osgi.framework.Bundle |
---|
ACTIVE, INSTALLED, RESOLVED, START_ACTIVATION_POLICY, START_TRANSIENT, STARTING, STOP_TRANSIENT, STOPPING, UNINSTALLED |
Constructor Summary | |
---|---|
protected |
AbstractBundle(BundleData bundledata,
Framework framework)
Bundle object constructor. |
Method Summary | |
---|---|
protected void |
beginStateChange()
This method marks the bundle's state as changing so that other calls to start/stop/suspend/update/uninstall can wait until the state change is complete. |
protected void |
checkValid()
This method checks that the bundle is not uninstalled. |
protected void |
close()
Close the the Bundle's file. |
boolean |
compare(KeyedElement other)
Compares this element with a specified element |
int |
compareTo(java.lang.Object obj)
Answers an integer indicating the relative positions of the receiver and the argument in the natural order of elements of the receiver's class. |
protected void |
completeStateChange()
This method completes the bundle state change by setting stateChanging to null and notifying one waiter that the state change has completed. |
protected static AbstractBundle |
createBundle(BundleData bundledata,
Framework framework)
Bundle object constructor. |
java.util.Enumeration |
findEntries(java.lang.String path,
java.lang.String filePattern,
boolean recurse)
Returns entries in this bundle and its attached fragments. |
protected void |
findLocalEntryPaths(java.lang.String path,
Filter patternFilter,
java.util.Hashtable patternProps,
boolean recurse,
java.util.List pathList)
|
BundleContext |
getBundleContext()
Returns this bundle's BundleContext . |
BundleData |
getBundleData()
|
protected BundleDescription |
getBundleDescription()
|
long |
getBundleId()
Retrieve the bundle's unique identifier, which the framework assigned to this bundle when it was installed. |
protected abstract BundleLoader |
getBundleLoader()
|
protected abstract BundleContextImpl |
getContext()
Return the current context for this bundle. |
java.net.URL |
getEntry(java.lang.String fileName)
Returns a URL to the entry at the specified path in this bundle. |
java.util.Enumeration |
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. |
protected Bundle[] |
getFragments()
|
java.util.Dictionary |
getHeaders()
Return the bundle's manifest headers and values from the manifest's preliminary section. |
java.util.Dictionary |
getHeaders(java.lang.String localeString)
Returns this bundle's Manifest headers and values. |
protected BundleLoaderProxy[] |
getHosts()
|
java.lang.Object |
getKey()
Returns the key for this element |
int |
getKeyHashCode()
Returns the hash code of the key |
long |
getLastModified()
Returns the time when this bundle was last modified. |
java.lang.String |
getLocation()
Retrieve the location identifier of the bundle. |
protected BundleProtectionDomain |
getProtectionDomain()
Get the bundle's ProtectionDomain. |
java.lang.String |
getResolutionFailureMessage()
|
java.util.ResourceBundle |
getResourceBundle(java.lang.String localeString)
|
protected int |
getStartLevel()
|
int |
getState()
Returns the current state of the bundle. |
java.lang.Thread |
getStateChanging()
|
java.lang.String |
getSymbolicName()
Returns the symbolic name of this bundle as specified by its Bundle-SymbolicName manifest header. |
Version |
getVersion()
|
boolean |
hasPermission(java.lang.Object permission)
Determine whether the bundle has the requested permission. |
protected boolean |
isActive()
Return true if the bundle is starting or active. |
protected boolean |
isFragment()
|
protected boolean |
isResolved()
Return true if the bundle is resolved. |
protected abstract void |
load()
Load the bundle. |
protected BundleActivator |
loadBundleActivator()
Load and instantiate bundle's BundleActivator class |
java.lang.Class |
loadClass(java.lang.String classname)
Loads the specified class using this bundle's classloader. |
protected abstract java.lang.Class |
loadClass(java.lang.String name,
boolean checkPermission)
This method loads a class from the bundle. |
protected boolean |
readyToResume()
This method does the following Return false if the bundle is a fragment Return false if the bundle is not at the correct start-level Return false if the bundle is not persistently marked for start Return true if the bundle's activation policy is persistently ignored Return true if the bundle does not define an activation policy Transition to STARTING state and Fire LAZY_ACTIVATION event Return false |
protected abstract void |
refresh()
Refresh the bundle. |
protected abstract boolean |
reload(AbstractBundle newBundle)
Reload from a new bundle. |
protected void |
resolve()
Mark this bundle as resolved. |
protected void |
resume()
Start this bundle w/o marking is persistently started. |
protected void |
setStatus(int mask,
boolean state)
Set the persistent status bit for the bundle. |
void |
start()
Start this bundle. |
void |
start(int options)
Starts this bundle. |
protected abstract void |
startWorker(int options)
Internal worker to start a bundle. |
void |
stop()
Stop this bundle. |
void |
stop(int options)
Stops this bundle. |
protected abstract void |
stopWorker(int options)
Internal worker to stop a bundle. |
protected void |
suspend(boolean lock)
Stop this bundle w/o marking is persistently stopped. |
boolean |
testStateChanging(java.lang.Object thread)
|
java.lang.String |
toString()
Return a string representation of this bundle. |
void |
uninstall()
Uninstall this bundle. |
protected void |
uninstallWorker(java.security.PrivilegedExceptionAction action)
Uninstall worker. |
protected void |
uninstallWorkerPrivileged()
Uninstall worker. |
protected abstract boolean |
unload()
Unload the bundle. |
protected void |
unresolvePermissions()
The bundle must unresolve the permissions. |
void |
update()
Update this bundle. |
void |
update(java.io.InputStream in)
Update this bundle from an InputStream. |
protected void |
updateWorker(java.security.PrivilegedExceptionAction action)
Update worker. |
protected void |
updateWorkerPrivileged(java.net.URLConnection source,
java.security.AccessControlContext callerContext)
Update worker. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Methods inherited from interface org.osgi.framework.Bundle |
---|
getRegisteredServices, getResource, getResources, getServicesInUse |
Field Detail |
---|
protected Framework framework
protected volatile int state
protected volatile java.lang.Thread stateChanging
protected BundleData bundledata
protected java.lang.Object statechangeLock
protected BundleProtectionDomain domain
protected ManifestLocalization manifestLocalization
Constructor Detail |
---|
protected AbstractBundle(BundleData bundledata, Framework framework)
bundledata
- BundleData for this bundleframework
- Framework this bundle is running inMethod Detail |
---|
protected static AbstractBundle createBundle(BundleData bundledata, Framework framework) throws BundleException
bundledata
- BundleData for this bundleframework
- Framework this bundle is running in
BundleException
protected abstract void load()
protected abstract boolean reload(AbstractBundle newBundle)
newBundle
- Dummy Bundle which contains new data.
protected abstract void refresh()
protected abstract boolean unload()
protected void close()
protected BundleActivator loadBundleActivator() throws BundleException
BundleException
protected abstract java.lang.Class loadClass(java.lang.String name, boolean checkPermission) throws java.lang.ClassNotFoundException
name
- the name of the desired Class.checkPermission
- indicates whether a permission check should be done.
java.lang.ClassNotFoundException
- if the class definition was not found.public int getState()
getState
in interface Bundle
protected boolean isActive()
protected boolean isResolved()
public void start() throws BundleException
Otherwise, the following steps are required to start a bundle:
Bundle.UNINSTALLED
then an IllegalStateException
is thrown.
Bundle.ACTIVE
or Bundle.STARTING
then this
method returns immediately.
Bundle.STOPPING
then this method may wait for
the bundle to return to the Bundle.RESOLVED
state before continuing.
If this does not occur in a reasonable time, a BundleException
is thrown to indicate the bundle was unable to be started.
Bundle.RESOLVED
, an attempt is made to
resolve the bundle. If the bundle cannot be resolved, a
BundleException
is thrown.
Bundle.STARTING
.
start
method of the bundle's
BundleActivator
, if one is specified, is called. If the
BundleActivator
is invalid or throws an exception, the state of
the bundle is set back to Bundle.RESOLVED
, the bundle's listeners, if
any, are removed, service's registered by the bundle, if any, are
unregistered, and service's used by the bundle, if any, are released. A
BundleException
is then thrown.
Bundle.ACTIVE
.
BundleEvent
of type BundleEvent.STARTED
is
broadcast.
Bundle.INSTALLED
,Bundle.RESOLVED
}.
Bundle.ACTIVE
}.
BundleActivator.start
has been called
and did not throw an exception.
Bundle.STARTING
,Bundle.ACTIVE
}.
start
in interface Bundle
BundleException
- If the bundle couldn't be started. This could be because
a code dependency could not be resolved or the specified
BundleActivator could not be loaded or threw an
exception.
java.lang.IllegalStateException
- If the bundle has been uninstalled or the bundle tries to
change its own state.
java.lang.SecurityException
- If the caller does not have AdminPermission
permission and the Java runtime environment supports
permissions.Bundle.start(int)
public void start(int options) throws BundleException
Bundle
If this bundle's state is UNINSTALLED
then an
IllegalStateException
is thrown.
If the Framework implements the optional Start Level service and the current start level is less than this bundle's start level:
Bundle.START_TRANSIENT
option is set, then a
BundleException
is thrown indicating this bundle cannot be
started due to the Framework's current start level.
Bundle.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.
ACTIVE
then this method
returns immediately.
Bundle.START_TRANSIENT
option is not set then set this
bundle's autostart setting to Started with declared activation
if the Bundle.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.
RESOLVED
, an attempt
is made to resolve this bundle. If the Framework cannot resolve this
bundle, a BundleException
is thrown.
Bundle.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(org.osgi.framework.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.
UNINSTALLED
, because this
bundle was uninstalled while the BundleActivator.start
method was running, a BundleException
is thrown.
ACTIVE
.
BundleEvent.STARTED
is fired.
getState()
in {INSTALLED
,
RESOLVED
} or {INSTALLED
,
RESOLVED
, STARTING
} if this bundle has a
lazy activation policy.
Bundle.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.
Bundle.START_TRANSIENT
option was set.
getState()
not in {STARTING
,
ACTIVE
}.
start
in interface Bundle
options
- The options for starting this bundle. See
Bundle.START_TRANSIENT
and Bundle.START_ACTIVATION_POLICY
.
The Framework must ignore unrecognized options.
BundleException
- If this bundle could not be started. This could
be because a code dependency could not be resolved or the
specified BundleActivator
could not be loaded or
threw an exception or this bundle is a fragment.protected abstract void startWorker(int options) throws BundleException
options
-
BundleException
protected boolean readyToResume()
protected void resume() throws BundleException
The following steps are followed to start a bundle:
Bundle.UNINSTALLED
then an IllegalStateException
is thrown.
Bundle.ACTIVE
or Bundle.STARTING
then this
method returns immediately.
Bundle.STOPPING
then this method may wait for
the bundle to return to the Bundle.RESOLVED
state before continuing.
If this does not occur in a reasonable time, a BundleException
is thrown to indicate the bundle was unable to be started.
Bundle.RESOLVED
, an attempt is made to
resolve the bundle. If the bundle cannot be resolved, a
BundleException
is thrown.
Bundle.STARTING
.
start
method of the bundle's
BundleActivator
, if one is specified, is called. If the
BundleActivator
is invalid or throws an exception, the state of
the bundle is set back to Bundle.RESOLVED
, the bundle's listeners, if
any, are removed, service's registered by the bundle, if any, are
unregistered, and service's used by the bundle, if any, are released. A
BundleException
is then thrown.
Bundle.ACTIVE
.
BundleEvent
of type BundleEvent.STARTED
is
broadcast.
Bundle.INSTALLED
,Bundle.RESOLVED
}.
Bundle.ACTIVE
}.
BundleActivator.start
has been called
and did not throw an exception.
Bundle.STARTING
,Bundle.ACTIVE
}.
BundleException
- If the bundle couldn't be started. This could be because
a code dependency could not be resolved or the specified
BundleActivator could not be loaded or threw an
exception.
java.lang.IllegalStateException
- If the bundle tries to change its own state.public void stop() throws BundleException
The following steps are followed to stop a bundle:
Bundle.UNINSTALLED
then an IllegalStateException
is thrown.
Bundle.STOPPING
,Bundle.RESOLVED
, or
Bundle.INSTALLED
then this method returns immediately.
Bundle.STARTING
then this method may wait for
the bundle to reach the Bundle.ACTIVE
state before continuing. If this
does not occur in a reasonable time, a BundleException
is thrown
to indicate the bundle was unable to be stopped.
Bundle.STOPPING
.
stop
method of the bundle's
BundleActivator
, if one is specified, is called. If the
BundleActivator
throws an exception, this method will continue
to stop the bundle. A BundleException
will be thrown after
completion of the remaining steps.
Bundle.RESOLVED
.
BundleEvent
of type BundleEvent.STOPPED
is
broadcast.
Bundle.ACTIVE
}.
Bundle.ACTIVE
,Bundle.STOPPING
}.
BundleActivator.stop
has been called
and did not throw an exception.
stop
in interface Bundle
BundleException
- If the bundle's BundleActivator could not be loaded or
threw an exception.
java.lang.IllegalStateException
- If the bundle has been uninstalled or the bundle tries to
change its own state.
java.lang.SecurityException
- If the caller does not have AdminPermission
permission and the Java runtime environment supports
permissions.Bundle.start(int)
public void stop(int options) throws BundleException
Bundle
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.
Bundle.STOP_TRANSIENT
option 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.
ACTIVE
then this method
returns immediately.
STOPPING
.
BundleEvent.STOPPING
is fired.
BundleActivator.stop(org.osgi.framework.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. 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
}.
Bundle.STOP_TRANSIENT
option was set.
getState()
not in {ACTIVE
,
STOPPING
}.
BundleActivator.stop
has been called and did not
throw an exception.
Bundle.STOP_TRANSIENT
option was set.
stop
in interface Bundle
options
- The options for stoping this bundle. See
Bundle.STOP_TRANSIENT
. The Framework must ignore unrecognized
options.
BundleException
- If this bundle's BundleActivator
threw an exception or this bundle is a fragment.protected abstract void stopWorker(int options) throws BundleException
options
-
BundleException
protected void setStatus(int mask, boolean state)
mask
- Mask for bit to set/clearstate
- true to set bit, false to clear bitprotected void suspend(boolean lock) throws BundleException
The following steps are followed to stop a bundle:
Bundle.UNINSTALLED
then an IllegalStateException
is thrown.
Bundle.STOPPING
,Bundle.RESOLVED
, or
Bundle.INSTALLED
then this method returns immediately.
Bundle.STARTING
then this method may wait for
the bundle to reach the Bundle.ACTIVE
state before continuing. If this
does not occur in a reasonable time, a BundleException
is thrown
to indicate the bundle was unable to be stopped.
Bundle.STOPPING
.
stop
method of the bundle's
BundleActivator
, if one is specified, is called. If the
BundleActivator
throws an exception, this method will continue
to stop the bundle. A BundleException
will be thrown after
completion of the remaining steps.
Bundle.RESOLVED
.
BundleEvent
of type BundleEvent.STOPPED
is
broadcast.
Bundle.ACTIVE
}.
Bundle.ACTIVE
,Bundle.STOPPING
}.
BundleActivator.stop
has been called
and did not throw an exception.
lock
- true if state change lock should be held when returning from
this method.
BundleException
- If the bundle's BundleActivator could not be loaded or
threw an exception.
java.lang.IllegalStateException
- If the bundle tries to change its own state.public void update() throws BundleException
Bundle.ACTIVE
, the bundle will
be stopped before the update and started after the update successfully
completes.
The following steps are followed to update a bundle:
Bundle.UNINSTALLED
then an IllegalStateException
is thrown.
Bundle.ACTIVE
or Bundle.STARTING
, the bundle
is stopped as described in the stop()
method. If stop()
throws an exception, the exception is rethrown terminating the update.
Bundle-UpdateLocation
if
available or the original location.
BundleException
will be thrown
after completion of the remaining steps.
Bundle.INSTALLED
.
BundleEvent
of type BundleEvent.UPDATED
is broadcast.
Bundle.ACTIVE
, the updated bundle
is started as described in the start()
method. If start()
throws an exception, a FrameworkEvent
of type
FrameworkEvent.ERROR
is broadcast containing the exception.
Bundle.UNINSTALLED
}.
Bundle.INSTALLED
,Bundle.RESOLVED
,
Bundle.ACTIVE
}.
Bundle.INSTALLED
,Bundle.RESOLVED
,
Bundle.ACTIVE
}.
update
in interface Bundle
BundleException
- If the update fails.
java.lang.IllegalStateException
- If the bundle has been uninstalled or the bundle tries to
change its own state.
java.lang.SecurityException
- If the caller does not have AdminPermission
permission and the Java runtime environment supports
permissions.stop()
,
start()
public void update(java.io.InputStream in) throws BundleException
This method performs all the steps listed in update()
, except
the bundle will be read in through the supplied InputStream
,
rather than a URL
.
update
in interface Bundle
in
- The InputStream from which to read the new bundle.
BundleException
- If the provided stream cannot be read or the
update fails.update()
protected void updateWorker(java.security.PrivilegedExceptionAction action) throws BundleException
BundleException
protected void updateWorkerPrivileged(java.net.URLConnection source, java.security.AccessControlContext callerContext) throws BundleException
BundleException
public void uninstall() throws BundleException
This method removes all traces of the bundle, including any data in the persistent storage area provided for the bundle by the framework.
The following steps are followed to uninstall a bundle:
Bundle.UNINSTALLED
then an IllegalStateException
is thrown.
Bundle.ACTIVE
or Bundle.STARTING
, the bundle
is stopped as described in the stop()
method. If stop()
throws an exception, a FrameworkEvent
of type
FrameworkEvent.ERROR
is broadcast containing the exception.
BundleEvent
of type BundleEvent.UNINSTALLED
is
broadcast.
Bundle.UNINSTALLED
.
Bundle.UNINSTALLED
}.
Bundle.UNINSTALLED
}.
Bundle.UNINSTALLED
}.
uninstall
in interface Bundle
BundleException
- If the uninstall failed.
java.lang.IllegalStateException
- If the bundle has been uninstalled or the bundle tries to
change its own state.
java.lang.SecurityException
- If the caller does not have AdminPermission
permission and the Java runtime environment supports
permissions.stop()
protected void uninstallWorker(java.security.PrivilegedExceptionAction action) throws BundleException
BundleException
protected void uninstallWorkerPrivileged() throws BundleException
BundleException
public java.util.Dictionary getHeaders()
Manifest header names are case-insensitive. The methods of the returned
Dictionary
object will operate on header names in a
case-insensitive manner.
For example, the following manifest headers and values are included if they are present in the manifest:
Bundle-Name Bundle-Vendor Bundle-Version Bundle-Description Bundle-DocURL Bundle-ContactAddress
This method will continue to return this information when the bundle is
in the Bundle.UNINSTALLED
state.
getHeaders
in interface Bundle
Dictionary
object containing the bundle's
manifest headers and values.
java.lang.SecurityException
- If the caller does not have AdminPermission
permission and the Java runtime environment supports
permissions.Constants.BUNDLE_LOCALIZATION
public java.util.Dictionary getHeaders(java.lang.String localeString)
Manifest header names are case-insensitive. The methods of the returned Dictionary object will operate on header names in a case-insensitive manner. If a Manifest header begins with a '%', it will be evaluated with the specified properties file for the specied Locale.
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 will continue to return Manifest header information while this bundle is in the UNINSTALLED state.
getHeaders
in interface Bundle
localeString
- 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 "%".
java.lang.SecurityException
- If the caller does not have the AdminPermission,
and the Java Runtime Environment supports permissions.Bundle.getHeaders()
,
Constants.BUNDLE_LOCALIZATION
public long getBundleId()
The unique identifier has the following attributes:
This method will continue to return the bundle's unique identifier when
the bundle is in the Bundle.UNINSTALLED
state.
getBundleId
in interface Bundle
public java.lang.String getLocation()
BundleContext.installBundle
when the
bundle was installed. The location identifier of the bundle may change
during bundle update. Calling this method while framework is updating
the bundle results in undefined behavior.
This method will continue to return the bundle's location identifier
when the bundle is in the Bundle.UNINSTALLED
state.
getLocation
in interface Bundle
java.lang.SecurityException
- If the caller does not have AdminPermission
permission and the Java runtime environment supports
permissions.public boolean hasPermission(java.lang.Object permission)
If the Java runtime environment does not supports permissions this
method always returns true
. The permission parameter 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.
hasPermission
in interface Bundle
permission
- The requested permission.
true
if the bundle has the requested permission
or false
if the bundle does not have the
permission or the permission parameter is not an instanceof java.security.Permission
.
java.lang.IllegalStateException
- If the bundle has been uninstalled.protected void beginStateChange() throws BundleException
BundleException
- if the bundles state is still changing after waiting for
the timeout.protected void completeStateChange()
public java.lang.String toString()
toString
in class java.lang.Object
public int compareTo(java.lang.Object obj)
compareTo
in interface java.lang.Comparable
obj
- another Bundle an object to compare the receiver to
java.lang.ClassCastException
- if the argument can not be converted into something
comparable with the receiver.protected void checkValid()
java.lang.IllegalStateException
- If the bundle is uninstalled.protected BundleProtectionDomain getProtectionDomain()
protected void unresolvePermissions()
protected Bundle[] getFragments()
protected boolean isFragment()
protected BundleLoaderProxy[] getHosts()
public java.lang.Class loadClass(java.lang.String classname) throws java.lang.ClassNotFoundException
Bundle
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.
loadClass
in interface Bundle
classname
- 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.public java.util.Enumeration getEntryPaths(java.lang.String path)
Bundle
String
objects)
to entries within this bundle whose longest sub-path matches the
specified path. This bundle's classloader 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 "/".
getEntryPaths
in interface Bundle
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.public java.net.URL getEntry(java.lang.String fileName)
Bundle
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.
getEntry
in interface Bundle
fileName
- 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.public java.lang.String getSymbolicName()
Bundle
Bundle-SymbolicName
manifest header. The name must be
unique, it is recommended to use a reverse domain name naming convention
like that used for java packages. If this bundle does not have a
specified symbolic name then null
is returned.
This method must continue to return this bundle's symbolic name while
this bundle is in the UNINSTALLED
state.
getSymbolicName
in interface Bundle
public long getLastModified()
Bundle
The time value is the number of milliseconds since January 1, 1970, 00:00:00 GMT.
getLastModified
in interface Bundle
public BundleData getBundleData()
public Version getVersion()
protected BundleDescription getBundleDescription()
protected int getStartLevel()
protected abstract BundleLoader getBundleLoader()
protected void resolve()
public BundleContext getBundleContext()
Bundle
BundleContext
. The returned
BundleContext
can be used by the caller to act on behalf
of this bundle.
If this bundle is not in the Bundle.STARTING
, Bundle.ACTIVE
, or
Bundle.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
.
getBundleContext
in interface Bundle
BundleContext
for this bundle or
null
if this bundle has no valid
BundleContext
.protected abstract BundleContextImpl getContext()
public java.lang.String getResolutionFailureMessage()
public int getKeyHashCode()
KeyedElement
getKeyHashCode
in interface KeyedElement
public boolean compare(KeyedElement other)
KeyedElement
compare
in interface KeyedElement
other
- the element to compare with
public java.lang.Object getKey()
KeyedElement
getKey
in interface KeyedElement
public java.util.ResourceBundle getResourceBundle(java.lang.String localeString)
public boolean testStateChanging(java.lang.Object thread)
public java.lang.Thread getStateChanging()
public java.util.Enumeration findEntries(java.lang.String path, java.lang.String filePattern, boolean recurse)
Bundle
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();
findEntries
in interface Bundle
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 and it supports substring matching, 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 an entry could not 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 ascending bundle id order.
If this bundle is a fragment, then only matching entries in this
fragment are returned.protected void findLocalEntryPaths(java.lang.String path, Filter patternFilter, java.util.Hashtable patternProps, boolean recurse, java.util.List pathList)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |