public abstract class StateImpl extends Object implements State
| Modifier and Type | Field and Description |
|---|---|
static String |
OSGI_EE_NAMESPACE |
static String[] |
PROPS |
| Modifier | Constructor and Description |
|---|---|
protected |
StateImpl() |
| Modifier and Type | Method and Description |
|---|---|
boolean |
addBundle(BundleDescription description)
Adds the given bundle to this state.
|
void |
addDisabledInfo(DisabledInfo disabledInfo)
Adds the disabled info to this state.
|
void |
addDynamicImportPackages(BundleDescription importingBundle,
ImportPackageSpecification[] dynamicImports)
Adds the specified dynamic imports to the specified importingBundle.
|
void |
addResolverError(BundleDescription bundle,
int type,
String data,
VersionConstraint unsatisfied)
Adds a new
ResolverError for the specified bundle. |
boolean |
dynamicCacheChanged() |
void |
fullyLoad() |
BundleDescription |
getBundle(long id)
Returns the bundle descriptor for the bundle with the given id.
|
BundleDescription |
getBundle(String name,
Version version)
Returns the bundle descriptor for the bundle with the given name and
version.
|
BundleDescription |
getBundleByLocation(String location)
Returns the bundle descriptor for the bundle with the given location
identifier.
|
BundleDescription[] |
getBundles()
Returns descriptions for all bundles known to this state.
|
BundleDescription[] |
getBundles(String symbolicName)
Returns all bundle descriptions with the given bundle symbolic name.
|
StateDelta |
getChanges()
Returns the delta representing the changes from the time this state was
first captured until now.
|
Collection<BundleDescription> |
getDependencyClosure(Collection<BundleDescription> bundles)
Returns the dependency closure for the specified bundles.
|
BundleDescription[] |
getDisabledBundles()
Returns an array of BundleDescriptions for the bundles that are disabled
in the system.
|
DisabledInfo |
getDisabledInfo(BundleDescription bundle,
String policyName)
Returns the disabled info for the specified bundle with the specified policy name.
|
DisabledInfo[] |
getDisabledInfos(BundleDescription bundle)
Returns an array of disabled info for the specified bundle.
|
ExportPackageDescription[] |
getExportedPackages()
Returns all exported packages in this state, according to the OSGi rules for resolution.
|
StateObjectFactory |
getFactory()
Returns the factory that created this state.
|
long |
getHighestBundleId()
Returns the highest bundle ID.
|
Dictionary[] |
getPlatformProperties()
Returns the list of platform properties currently set for this state.
|
BundleDescription[] |
getRemovalPending()
Returns descriptions for all bundles in a removal pending state.
|
BundleDescription[] |
getResolvedBundles()
Returns descriptions for all bundles currently resolved in this state.
|
Resolver |
getResolver()
Returns the resolver associated with this state.
|
ResolverError[] |
getResolverErrors(BundleDescription bundle)
Returns all
ResolverErrors for the given bundle |
ResolverHook |
getResolverHook() |
StateHelper |
getStateHelper()
Returns a state helper object.
|
String |
getSystemBundle() |
ExportPackageDescription[] |
getSystemPackages()
Returns the list of system packages which are exported by the system bundle.
|
long |
getTimeStamp()
Returns the timestamp for this state.
|
boolean |
isEmpty()
Returns whether this state is empty.
|
boolean |
isResolved()
Returns true if there have been no modifications to this state since the
last time resolve() was called.
|
ExportPackageDescription |
linkDynamicImport(BundleDescription importingBundle,
String requestedPackage)
Attempts to find an ExportPackageDescription that will satisfy a dynamic import
for the specified requestedPackage for the specified importingBundle.
|
boolean |
removeBundle(BundleDescription toRemove)
Removes the given bundle description.
|
BundleDescription |
removeBundle(long bundleId)
Removes a bundle description with the given bundle id.
|
void |
removeBundleComplete(BundleDescription bundle)
Sets the given removal pending bundle to removal complete for this state.
|
void |
removeDisabledInfo(DisabledInfo disabledInfo)
Removes the disabled info from the state.
|
void |
removeResolverErrors(BundleDescription bundle)
Removes all
ResolverErrors for the specified bundle. |
StateDelta |
resolve()
Same as State.resolve(true);
|
StateDelta |
resolve(boolean incremental)
Resolves the constraints contained in this state using the resolver
currently associated with the state and returns a delta describing the
changes in resolved states and dependencies in the state.
|
StateDelta |
resolve(BundleDescription[] reResolve)
Resolves the constraints contained in this state using the resolver
currently associated with the state in an incremental, "least-perturbing"
mode, and returns a delta describing the changes in resolved states and
dependencies in the state.
|
StateDelta |
resolve(BundleDescription[] resolve,
boolean discard)
Resolves the constraints contained in this state using the resolver
currently associated with the state in an incremental, "least-perturbing"
mode, and returns a delta describing the changes in resolved states and
dependencies in the state.
|
void |
resolveBundle(BundleDescription bundle,
boolean status,
BundleDescription[] hosts,
ExportPackageDescription[] selectedExports,
BundleDescription[] resolvedRequires,
ExportPackageDescription[] resolvedImports)
Deprecated.
|
void |
resolveBundle(BundleDescription bundle,
boolean status,
BundleDescription[] hosts,
ExportPackageDescription[] selectedExports,
ExportPackageDescription[] substitutedExports,
BundleDescription[] resolvedRequires,
ExportPackageDescription[] resolvedImports)
Deprecated.
|
void |
resolveBundle(BundleDescription bundle,
boolean status,
BundleDescription[] hosts,
ExportPackageDescription[] selectedExports,
ExportPackageDescription[] substitutedExports,
GenericDescription[] selectedCapabilities,
BundleDescription[] resolvedRequires,
ExportPackageDescription[] resolvedImports,
GenericDescription[] resolvedCapabilities,
Map<String,List<StateWire>> resolvedWires)
Sets whether or not the given bundle is selected in this state.
|
void |
resolveConstraint(VersionConstraint constraint,
BaseDescription supplier)
Resolves the given version constraint with the given supplier.
|
void |
setNativePathsInvalid(NativeCodeDescription nativeCodeDescription,
boolean hasInvalidNativePaths)
Sets the native code paths of a native code description as invalid.
|
void |
setOverrides(Object value)
Sets the version overrides which are to be applied during the resolutoin
of this state.
|
boolean |
setPlatformProperties(Dictionary<?,?> platformProperties)
Sets the platform properties of the state.
|
boolean |
setPlatformProperties(Dictionary<?,?>[] platformProperties)
Sets the platform properties of the state to a list of platform properties.
|
void |
setResolver(Resolver newResolver)
Sets the resolver associated with this state.
|
void |
setResolverHookFactory(ResolverHookFactory hookFactory)
Sets the resolver hook factory for this state.
|
void |
setTimeStamp(long newTimeStamp)
Sets the timestamp for this state
|
boolean |
unloadLazyData(long checkStamp) |
boolean |
updateBundle(BundleDescription newDescription)
Updates an existing bundle description with the given description.
|
public static final String[] PROPS
public static final String OSGI_EE_NAMESPACE
public boolean addBundle(BundleDescription description)
State
If the bundle already exists in another state then an IllegalStateException
will be thrown. Note that even if you remove a BundleDescription from
one State object using State.removeBundle(BundleDescription) it
may still be considered as removing pending if other bundles in that state depend on the
bundle you removed. To complete a pending removal a call must be done to
State.resolve(BundleDescription[]) with the removed bundle.
public boolean updateBundle(BundleDescription newDescription)
StateupdateBundle in interface StatenewDescription - the bundle description to replace an existing onetrue, if if the bundle description was updated,
false otherwisepublic BundleDescription removeBundle(long bundleId)
StateremoveBundle in interface StatebundleId - the id of the bundle description to be removednull, if a bundle
with the given id does not exist in this statepublic boolean removeBundle(BundleDescription toRemove)
StateremoveBundle in interface StatetoRemove - the bundle description to be removedtrue, if if the bundle description was removed,
false otherwisepublic StateDelta getChanges()
StategetChanges in interface Statepublic BundleDescription[] getBundles(String symbolicName)
StategetBundles in interface StatesymbolicName - symbolic name of the bundles to querypublic BundleDescription[] getBundles()
StategetBundles in interface Statepublic BundleDescription getBundle(long id)
Statenull is returned if no such bundle is found in
this state.getBundle in interface StateBundleDescription.getBundleId()public BundleDescription getBundle(String name, Version version)
Stateversion is
null.public long getTimeStamp()
StategetTimeStamp in interface Statepublic boolean isResolved()
StateisResolved in interface Statepublic void resolveConstraint(VersionConstraint constraint, BaseDescription supplier)
StateThis method is intended to be used by resolvers in the process of determining which constraints are satisfied by which components.
resolveConstraint in interface Stateconstraint - the version constraint to updatesupplier - the supplier which satisfies the constraint. May be null if
the constraint is to be unresolved.public void resolveBundle(BundleDescription bundle, boolean status, BundleDescription[] hosts, ExportPackageDescription[] selectedExports, BundleDescription[] resolvedRequires, ExportPackageDescription[] resolvedImports)
StateThis method is intended to be used by resolvers in the process of determining which constraints are satisfied by which components.
resolveBundle in interface Statebundle - the bundle to updatestatus - whether or not the given bundle is resolved, if false the other parameters are ignoredhosts - the host for the resolve fragment, can be nullselectedExports - the selected exported packages for this resolved bundle, can be nullresolvedRequires - the BundleDescriptions that resolve the required bundles for this bundle, can be nullresolvedImports - the exported packages that resolve the imports for this bundle, can be nullpublic void resolveBundle(BundleDescription bundle, boolean status, BundleDescription[] hosts, ExportPackageDescription[] selectedExports, ExportPackageDescription[] substitutedExports, BundleDescription[] resolvedRequires, ExportPackageDescription[] resolvedImports)
StateThis method is intended to be used by resolvers in the process of determining which constraints are satisfied by which components.
resolveBundle in interface Statebundle - the bundle to updatestatus - whether or not the given bundle is resolved, if false the other parameters are ignoredhosts - the host for the resolve fragment, can be nullselectedExports - the selected exported packages for this resolved bundle, can be nullsubstitutedExports - the exported packages that resolve imports for this bundle and substitute exports, can be nullresolvedRequires - the BundleDescriptions that resolve the required bundles for this bundle, can be nullresolvedImports - the exported packages that resolve the imports for this bundle, can be nullpublic void resolveBundle(BundleDescription bundle, boolean status, BundleDescription[] hosts, ExportPackageDescription[] selectedExports, ExportPackageDescription[] substitutedExports, GenericDescription[] selectedCapabilities, BundleDescription[] resolvedRequires, ExportPackageDescription[] resolvedImports, GenericDescription[] resolvedCapabilities, Map<String,List<StateWire>> resolvedWires)
StateThis method is intended to be used by resolvers in the process of determining which constraints are satisfied by which components.
resolveBundle in interface Statebundle - the bundle to updatestatus - whether or not the given bundle is resolved, if false the other parameters are ignoredhosts - the host for the resolve fragment, can be nullselectedExports - the selected exported packages for this resolved bundle, can be nullsubstitutedExports - the exported packages that resolve imports for this bundle and substitute exports, can be nullselectedCapabilities - the selected capabilities for this resolved bundle, can be nullresolvedRequires - the BundleDescriptions that resolve the required bundles for this bundle, can be nullresolvedImports - the exported packages that resolve the imports for this bundle, can be nullresolvedCapabilities - the capabilities that resolve the required capabilities for this bundle, can be nullresolvedWires - the map of state wires for the resolved requirements of the given bundle. The key is the name space of the requirement.public void removeBundleComplete(BundleDescription bundle)
StateThis method is intended to be used by resolvers in the process of resolving bundles.
removeBundleComplete in interface Statebundle - the bundle to set a removal complete.public StateDelta resolve()
Statepublic StateDelta resolve(boolean incremental)
StateNote that this method is typically implemented using
this.getResolver().resolve();and is the preferred path for invoking resolution. In particular, states should refuse to perform updates (@see #select() and #resolveConstraint()) if they are not currently involved in a resolution cycle.
Note the given state is destructively modified to reflect the results of resolution.
public StateDelta resolve(BundleDescription[] reResolve)
Stateresolve in interface StatereResolve - an array containing descriptions for bundles whose
current resolution state should be forgotten. If null
then all the current removal pending BundleDescriptions are refreshed.public StateDelta resolve(BundleDescription[] resolve, boolean discard)
Stateresolve in interface Stateresolve - an array containing descriptions for bundles to resolve.discard - a value of true indicates the resolve descriptions
should have their current resolution state discarded and re-resolved.public void setOverrides(Object value)
StatesetOverrides in interface Statepublic void setResolverHookFactory(ResolverHookFactory hookFactory)
StatesetResolverHookFactory in interface StatehookFactory - the resolver hook factorypublic ResolverHook getResolverHook()
public BundleDescription[] getResolvedBundles()
StategetResolvedBundles in interface Statepublic boolean isEmpty()
Statepublic ExportPackageDescription[] getExportedPackages()
StategetExportedPackages in interface StatePackageAdmin.getExportedPackages(org.osgi.framework.Bundle)public void setTimeStamp(long newTimeStamp)
StatesetTimeStamp in interface StatenewTimeStamp - the new timestamp for this statepublic StateObjectFactory getFactory()
StategetFactory in interface Statepublic BundleDescription getBundleByLocation(String location)
StategetBundleByLocation in interface Statelocation - location identifier of the bundle to querypublic Resolver getResolver()
StategetResolver in interface Statepublic void setResolver(Resolver newResolver)
StateTo ensure that this state and the given resovler are properly linked, the following expression must be included in this method if the given resolver (value) is not identical to the result of this.getResolver().
if (this.getResolver() != value) value.setState(this);
setResolver in interface Statepublic boolean setPlatformProperties(Dictionary<?,?> platformProperties)
StateThe values used for the supported properties can be String type to specify a single value for the property or they can by String[] to specify a list of values for the property.
setPlatformProperties in interface StateplatformProperties - the platform properties of the statepublic boolean setPlatformProperties(Dictionary<?,?>[] platformProperties)
StatesetPlatformProperties in interface StateplatformProperties - a set of platform properties for the stateState.setPlatformProperties(Dictionary)public Dictionary[] getPlatformProperties()
StategetPlatformProperties in interface Statepublic String getSystemBundle()
public BundleDescription[] getRemovalPending()
StategetRemovalPending in interface Statepublic Collection<BundleDescription> getDependencyClosure(Collection<BundleDescription> bundles)
StateA graph of bundles is computed starting with the specified bundles. The graph is expanded by adding any bundle that is either wired to a package that is currently exported by a bundle in the graph or requires a bundle in the graph. The graph is fully constructed when there is no bundle outside the graph that is wired to a bundle in the graph. The graph may contain removal pending bundles.
getDependencyClosure in interface Statebundles - The initial bundles for which to generate the dependency
closure.public ExportPackageDescription linkDynamicImport(BundleDescription importingBundle, String requestedPackage)
Statenull is returned.linkDynamicImport in interface StateimportingBundle - the BundleDescription that is requesting a dynamic packagerequestedPackage - the name of the package that is being requestednull is returned if none is available.public void addDynamicImportPackages(BundleDescription importingBundle, ImportPackageSpecification[] dynamicImports)
StateaddDynamicImportPackages in interface StateimportingBundle - the bundle to add the imports to.dynamicImports - the dynamic imports to add.BundleDescription.getAddedDynamicImportPackages()public final void fullyLoad()
public final boolean unloadLazyData(long checkStamp)
public ExportPackageDescription[] getSystemPackages()
StategetSystemPackages in interface StateState.setPlatformProperties(Dictionary)public ResolverError[] getResolverErrors(BundleDescription bundle)
StateResolverErrors for the given bundlegetResolverErrors in interface Statebundle - the bundle to get all ResolverErrors forResolverErrors for the given bundlepublic void addResolverError(BundleDescription bundle, int type, String data, VersionConstraint unsatisfied)
StateResolverError for the specified bundle.
This method is intended to be used by resolvers in the process of resolving.
addResolverError in interface Statebundle - the bundle to add a new ResolverError fortype - the type of ResolverError to adddata - the data for the ResolverErrorunsatisfied - the unsatisfied constraint or null if the resolver error was not caused
by an unsatisfied constraint.public void removeResolverErrors(BundleDescription bundle)
StateResolverErrors for the specified bundle.
This method is intended to be used by resolvers in the process of resolving.
removeResolverErrors in interface Statebundle - the bundle to remove all ResolverErrors forpublic boolean dynamicCacheChanged()
public StateHelper getStateHelper()
StateA possible implementation for this method would provide the same single StateHelper instance to all clients.
getStateHelper in interface StateStateHelperpublic long getHighestBundleId()
StateNote that this method returns the highest bundle ID the ever existed in this this state object. This bundle may have been removed from the state.
getHighestBundleId in interface Statepublic void setNativePathsInvalid(NativeCodeDescription nativeCodeDescription, boolean hasInvalidNativePaths)
StateThe framework, or some other entity which has access to bundle content, will call this method to validate or invalidate native code paths.
setNativePathsInvalid in interface StatenativeCodeDescription - the native code description.hasInvalidNativePaths - true if the native code paths are invalid; false otherwise.public BundleDescription[] getDisabledBundles()
StateState.getDisabledInfos(BundleDescription) to interrogate the reason that
each bundle is disabled.getDisabledBundles in interface StateDisabledInfopublic void addDisabledInfo(DisabledInfo disabledInfo)
StateaddDisabledInfo in interface StatedisabledInfo - the disabled info to add.public void removeDisabledInfo(DisabledInfo disabledInfo)
StateremoveDisabledInfo in interface StatedisabledInfo - the disabled info to removepublic DisabledInfo getDisabledInfo(BundleDescription bundle, String policyName)
Statenull is returned.getDisabledInfo in interface Statebundle - the bundle to get the disabled info forpublic DisabledInfo[] getDisabledInfos(BundleDescription bundle)
StategetDisabledInfos in interface Statebundle - the bundle to get the disabled info for.Copyright © 2007–2016 The Apache Software Foundation. All rights reserved.