org.osgi.framework.Constants Maven / Gradle / Ivy
/*
* Copyright (c) OSGi Alliance (2000, 2014). All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.osgi.framework;
import org.osgi.annotation.versioning.ProviderType;
import org.osgi.framework.hooks.bundle.CollisionHook;
import org.osgi.framework.launch.Framework;
/**
* Defines standard names for the OSGi environment system properties, service
* properties, and Manifest header attribute keys.
*
*
* The values associated with these keys are of type {@code String}, unless
* otherwise indicated.
*
* @since 1.1
* @author $Id: 6873c6f7d537ddbe39a6a2eba107ca3c2de49ce5 $
*/
@ProviderType
public interface Constants {
/**
* Location identifier of the OSGi system bundle , which is defined
* to be "System Bundle".
*/
String SYSTEM_BUNDLE_LOCATION = "System Bundle";
/**
* Alias for the symbolic name of the OSGi system bundle . It is
* defined to be "system.bundle".
*
* @since 1.3
*/
String SYSTEM_BUNDLE_SYMBOLICNAME = "system.bundle";
/**
* Identifier of the OSGi system bundle , which is defined to be
* {@code 0}.
*
* @since 1.8
*/
long SYSTEM_BUNDLE_ID = 0L;
/**
* Manifest header identifying the bundle's category.
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*/
String BUNDLE_CATEGORY = "Bundle-Category";
/**
* Manifest header identifying a list of directories and embedded JAR files,
* which are bundle resources used to extend the bundle's classpath.
*
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*/
String BUNDLE_CLASSPATH = "Bundle-ClassPath";
/**
* Manifest header identifying the bundle's copyright information.
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*/
String BUNDLE_COPYRIGHT = "Bundle-Copyright";
/**
* Manifest header containing a brief description of the bundle's
* functionality.
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*/
String BUNDLE_DESCRIPTION = "Bundle-Description";
/**
* Manifest header identifying the bundle's name.
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*/
String BUNDLE_NAME = "Bundle-Name";
/**
* Manifest header identifying a number of hardware environments and the
* native language code libraries that the bundle is carrying for each of
* these environments.
*
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*/
String BUNDLE_NATIVECODE = "Bundle-NativeCode";
/**
* Manifest header identifying the packages that the bundle offers to the
* Framework for export.
*
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*/
String EXPORT_PACKAGE = "Export-Package";
/**
* Manifest header identifying the fully qualified class names of the
* services that the bundle may register (used for informational purposes
* only).
*
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*
* @deprecated As of 1.2.
*/
String EXPORT_SERVICE = "Export-Service";
/**
* Manifest header identifying the packages on which the bundle depends.
*
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*/
String IMPORT_PACKAGE = "Import-Package";
/**
* Manifest header identifying the packages that the bundle may dynamically
* import during execution.
*
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*
* @since 1.2
*/
String DYNAMICIMPORT_PACKAGE = "DynamicImport-Package";
/**
* Manifest header identifying the fully qualified class names of the
* services that the bundle requires (used for informational purposes only).
*
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*
* @deprecated As of 1.2.
*/
String IMPORT_SERVICE = "Import-Service";
/**
* Manifest header identifying the bundle's vendor.
*
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*/
String BUNDLE_VENDOR = "Bundle-Vendor";
/**
* Manifest header identifying the bundle's version.
*
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*/
String BUNDLE_VERSION = "Bundle-Version";
/**
* Manifest header identifying the bundle's documentation URL, from which
* further information about the bundle may be obtained.
*
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*/
String BUNDLE_DOCURL = "Bundle-DocURL";
/**
* Manifest header identifying the contact address where problems with the
* bundle may be reported; for example, an email address.
*
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*/
String BUNDLE_CONTACTADDRESS = "Bundle-ContactAddress";
/**
* Manifest header identifying the bundle's activator class.
*
*
* If present, this header specifies the name of the bundle resource class
* that implements the {@code BundleActivator} interface and whose
* {@code start} and {@code stop} methods are called by the Framework when
* the bundle is started and stopped, respectively.
*
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*/
String BUNDLE_ACTIVATOR = "Bundle-Activator";
/**
* Manifest header identifying the extension bundle's activator class.
*
*
* If present, this header specifies the name of the extension bundle
* resource class that implements the {@code BundleActivator} interface and
* whose {@code start} and {@code stop} methods are called by the Framework
* when the Framework is initialized and shutdown, respectively.
*
* @since 1.8
*/
String EXTENSION_BUNDLE_ACTIVATOR = "ExtensionBundle-Activator";
/**
* Manifest header identifying the location from which a new bundle version
* is obtained during a bundle update operation.
*
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*/
String BUNDLE_UPDATELOCATION = "Bundle-UpdateLocation";
/**
* Manifest header attribute identifying the version of a package specified
* in the Export-Package or Import-Package manifest header.
*
* @deprecated As of 1.3. This has been replaced by
* {@link #VERSION_ATTRIBUTE}.
*/
String PACKAGE_SPECIFICATION_VERSION = "specification-version";
/**
* Manifest header attribute identifying the processor required to run
* native bundle code specified in the Bundle-NativeCode manifest header).
*
*
* The attribute value is encoded in the Bundle-NativeCode manifest header
* like:
*
*
* Bundle-NativeCode: http.so ; processor=x86 ...
*
*
* @see #BUNDLE_NATIVECODE
*/
String BUNDLE_NATIVECODE_PROCESSOR = "processor";
/**
* Manifest header attribute identifying the operating system required to
* run native bundle code specified in the Bundle-NativeCode manifest
* header).
*
* The attribute value is encoded in the Bundle-NativeCode manifest header
* like:
*
*
* Bundle-NativeCode: http.so ; osname=Linux ...
*
*
* @see #BUNDLE_NATIVECODE
*/
String BUNDLE_NATIVECODE_OSNAME = "osname";
/**
* Manifest header attribute identifying the operating system version
* required to run native bundle code specified in the Bundle-NativeCode
* manifest header).
*
* The attribute value is encoded in the Bundle-NativeCode manifest header
* like:
*
*
* Bundle-NativeCode: http.so ; osversion="2.34" ...
*
*
* @see #BUNDLE_NATIVECODE
*/
String BUNDLE_NATIVECODE_OSVERSION = "osversion";
/**
* Manifest header attribute identifying the language in which the native
* bundle code is written specified in the Bundle-NativeCode manifest
* header. See ISO 639 for possible values.
*
* The attribute value is encoded in the Bundle-NativeCode manifest header
* like:
*
*
* Bundle-NativeCode: http.so ; language=nl_be ...
*
*
* @see #BUNDLE_NATIVECODE
*/
String BUNDLE_NATIVECODE_LANGUAGE = "language";
/**
* Manifest header identifying the required execution environment for the
* bundle. The service platform may run this bundle if any of the execution
* environments named in this header matches one of the execution
* environments it implements.
*
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*
* @since 1.2
* @deprecated As of 1.6. Replaced by the {@code osgi.ee} capability.
*/
String BUNDLE_REQUIREDEXECUTIONENVIRONMENT = "Bundle-RequiredExecutionEnvironment";
/**
* Manifest header identifying the bundle's symbolic name.
*
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*
* @since 1.3
*/
String BUNDLE_SYMBOLICNAME = "Bundle-SymbolicName";
/**
* Manifest header directive identifying whether a bundle is a singleton.
* The default value is {@code false}.
*
*
* The directive value is encoded in the Bundle-SymbolicName manifest header
* like:
*
*
* Bundle-SymbolicName: com.acme.module.test; singleton:=true
*
*
* @see #BUNDLE_SYMBOLICNAME
* @since 1.3
*/
String SINGLETON_DIRECTIVE = "singleton";
/**
* Manifest header directive identifying if and when a fragment may attach
* to a host bundle. The default value is
* {@link #FRAGMENT_ATTACHMENT_ALWAYS always}.
*
*
* The directive value is encoded in the Bundle-SymbolicName manifest header
* like:
*
*
* Bundle-SymbolicName: com.acme.module.test; fragment-attachment:="never"
*
*
* @see #BUNDLE_SYMBOLICNAME
* @see #FRAGMENT_ATTACHMENT_ALWAYS
* @see #FRAGMENT_ATTACHMENT_RESOLVETIME
* @see #FRAGMENT_ATTACHMENT_NEVER
* @since 1.3
*/
String FRAGMENT_ATTACHMENT_DIRECTIVE = "fragment-attachment";
/**
* Manifest header directive value identifying a fragment attachment type of
* always. A fragment attachment type of always indicates that fragments are
* allowed to attach to the host bundle at any time (while the host is
* resolved or during the process of resolving the host bundle).
*
*
* The directive value is encoded in the Bundle-SymbolicName manifest header
* like:
*
*
* Bundle-SymbolicName: com.acme.module.test; fragment-attachment:="always"
*
*
* @see #FRAGMENT_ATTACHMENT_DIRECTIVE
* @since 1.3
*/
String FRAGMENT_ATTACHMENT_ALWAYS = "always";
/**
* Manifest header directive value identifying a fragment attachment type of
* resolve-time. A fragment attachment type of resolve-time indicates that
* fragments are allowed to attach to the host bundle only during the
* process of resolving the host bundle.
*
*
* The directive value is encoded in the Bundle-SymbolicName manifest header
* like:
*
*
* Bundle-SymbolicName: com.acme.module.test;
* fragment-attachment:="resolve-time"
*
*
* @see #FRAGMENT_ATTACHMENT_DIRECTIVE
* @since 1.3
*/
String FRAGMENT_ATTACHMENT_RESOLVETIME = "resolve-time";
/**
* Manifest header directive value identifying a fragment attachment type of
* never. A fragment attachment type of never indicates that no fragments
* are allowed to attach to the host bundle at any time.
*
*
* The directive value is encoded in the Bundle-SymbolicName manifest header
* like:
*
*
* Bundle-SymbolicName: com.acme.module.test; fragment-attachment:="never"
*
*
* @see #FRAGMENT_ATTACHMENT_DIRECTIVE
* @since 1.3
*/
String FRAGMENT_ATTACHMENT_NEVER = "never";
/**
* Manifest header identifying the base name of the bundle's localization
* entries.
*
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*
* @see #BUNDLE_LOCALIZATION_DEFAULT_BASENAME
* @since 1.3
*/
String BUNDLE_LOCALIZATION = "Bundle-Localization";
/**
* Default value for the {@code Bundle-Localization} manifest header.
*
* @see #BUNDLE_LOCALIZATION
* @since 1.3
*/
String BUNDLE_LOCALIZATION_DEFAULT_BASENAME = "OSGI-INF/l10n/bundle";
/**
* Manifest header identifying the symbolic names of other bundles required
* by the bundle.
*
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*
* @since 1.3
*/
String REQUIRE_BUNDLE = "Require-Bundle";
/**
* Manifest header attribute identifying a range of versions for a bundle
* specified in the {@code Require-Bundle} or {@code Fragment-Host} manifest
* headers. The default value is {@code 0.0.0}.
*
*
* The attribute value is encoded in the Require-Bundle manifest header
* like:
*
*
* Require-Bundle: com.acme.module.test; bundle-version="1.1"
* Require-Bundle: com.acme.module.test; bundle-version="[1.0,2.0)"
*
*
*
* The bundle-version attribute value uses a mathematical interval notation
* to specify a range of bundle versions. A bundle-version attribute value
* specified as a single version means a version range that includes any
* bundle version greater than or equal to the specified version.
*
* @see #REQUIRE_BUNDLE
* @since 1.3
*/
String BUNDLE_VERSION_ATTRIBUTE = "bundle-version";
/**
* Manifest header identifying the symbolic name of another bundle for which
* that the bundle is a fragment.
*
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*
* @since 1.3
*/
String FRAGMENT_HOST = "Fragment-Host";
/**
* Manifest header attribute is used for selection by filtering based upon
* system properties.
*
*
* The attribute value is encoded in manifest headers like:
*
*
* Bundle-NativeCode: libgtk.so; selection-filter="(ws=gtk)"; ...
*
*
* @see #BUNDLE_NATIVECODE
* @since 1.3
*/
String SELECTION_FILTER_ATTRIBUTE = "selection-filter";
/**
* Manifest header identifying the bundle manifest version. A bundle
* manifest may express the version of the syntax in which it is written by
* specifying a bundle manifest version. Bundles exploiting OSGi Release 4,
* or later, syntax must specify a bundle manifest version.
*
* The bundle manifest version defined by OSGi Release 4 or, more
* specifically, by version 1.3 of the OSGi Core Specification is "2".
*
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*
* @since 1.3
*/
String BUNDLE_MANIFESTVERSION = "Bundle-ManifestVersion";
/**
* Manifest header attribute identifying the version of a package specified
* in the Export-Package or Import-Package manifest header.
*
*
* The attribute value is encoded in the Export-Package or Import-Package
* manifest header like:
*
*
* Export-Package: org.osgi.framework; version="1.1"
*
*
* @see #EXPORT_PACKAGE
* @see #IMPORT_PACKAGE
* @since 1.3
*/
String VERSION_ATTRIBUTE = "version";
/**
* Manifest header attribute identifying the symbolic name of a bundle that
* exports a package specified in the Import-Package manifest header.
*
*
* The attribute value is encoded in the Import-Package manifest header
* like:
*
*
* Import-Package: org.osgi.framework;
* bundle-symbolic-name="com.acme.module.test"
*
*
* @see #IMPORT_PACKAGE
* @since 1.3
*/
String BUNDLE_SYMBOLICNAME_ATTRIBUTE = "bundle-symbolic-name";
/**
* Manifest header directive identifying the resolution type in the
* Import-Package, Require-Bundle or Require-Capability manifest header. The
* default value is {@link #RESOLUTION_MANDATORY mandatory}.
*
*
* The directive value is encoded in the Import-Package, Require-Bundle or
* Require-Capability manifest header like:
*
*
* Import-Package: org.osgi.framework; resolution:="optional"
* Require-Bundle: com.acme.module.test; resolution:="optional"
* Require-Capability: com.acme.capability; resolution:="optional"
*
*
* @see #IMPORT_PACKAGE
* @see #REQUIRE_BUNDLE
* @see #REQUIRE_CAPABILITY
* @see #RESOLUTION_MANDATORY
* @see #RESOLUTION_OPTIONAL
* @since 1.3
*/
String RESOLUTION_DIRECTIVE = "resolution";
/**
* Manifest header directive value identifying a mandatory resolution type.
* A mandatory resolution type indicates that the import package, require
* bundle or require capability must be resolved when the bundle is
* resolved. If such an import, require bundle or require capability cannot
* be resolved, the module fails to resolve.
*
*
* The directive value is encoded in the Import-Package, Require-Bundle or
* Require-Capability manifest header like:
*
*
* Import-Package: org.osgi.framework; resolution:="mandatory"
* Require-Bundle: com.acme.module.test; resolution:="mandatory"
* Require-Capability: com.acme.capability; resolution:="mandatory"
*
*
* @see #RESOLUTION_DIRECTIVE
* @since 1.3
*/
String RESOLUTION_MANDATORY = "mandatory";
/**
* Manifest header directive value identifying an optional resolution type.
* An optional resolution type indicates that the import, require bundle or
* require capability is optional and the bundle may be resolved without the
* import, require bundle or require capability being resolved. If the
* import, require bundle or require capability is not resolved when the
* bundle is resolved, the import, require bundle or require capability may
* not be resolved until the bundle is refreshed.
*
*
* The directive value is encoded in the Import-Package, Require-Bundle or
* Require-Capability manifest header like:
*
*
* Import-Package: org.osgi.framework; resolution:="optional"
* Require-Bundle: com.acme.module.test; resolution:="optional"
* Require-Capability: com.acme.capability; resolution:="optional"
*
*
* @see #RESOLUTION_DIRECTIVE
* @since 1.3
*/
String RESOLUTION_OPTIONAL = "optional";
/**
* Manifest header directive identifying a list of packages that an exported
* package or provided capability uses.
*
*
* The directive value is encoded in the Export-Package or
* Provide-Capability manifest header like:
*
*
* Export-Package: org.osgi.util.tracker; uses:="org.osgi.framework"
* Provide-Capability: com.acme.capability; uses:="com.acme.service"
*
*
* @see #EXPORT_PACKAGE
* @see #PROVIDE_CAPABILITY
* @since 1.3
*/
String USES_DIRECTIVE = "uses";
/**
* Manifest header directive identifying a list of classes to include in the
* exported package.
*
*
* This directive is used by the Export-Package manifest header to identify
* a list of classes of the specified package which must be allowed to be
* exported. The directive value is encoded in the Export-Package manifest
* header like:
*
*
* Export-Package: org.osgi.framework; include:="MyClass*"
*
*
*
* This directive is also used by the Bundle-ActivationPolicy manifest
* header to identify the packages from which class loads will trigger lazy
* activation. The directive value is encoded in the Bundle-ActivationPolicy
* manifest header like:
*
*
* Bundle-ActivationPolicy: lazy; include:="org.osgi.framework"
*
*
* @see #EXPORT_PACKAGE
* @see #BUNDLE_ACTIVATIONPOLICY
* @since 1.3
*/
String INCLUDE_DIRECTIVE = "include";
/**
* Manifest header directive identifying a list of classes to exclude in the
* exported package..
*
* This directive is used by the Export-Package manifest header to identify
* a list of classes of the specified package which must not be allowed to
* be exported. The directive value is encoded in the Export-Package
* manifest header like:
*
*
* Export-Package: org.osgi.framework; exclude:="*Impl"
*
*
*
* This directive is also used by the Bundle-ActivationPolicy manifest
* header to identify the packages from which class loads will not trigger
* lazy activation. The directive value is encoded in the
* Bundle-ActivationPolicy manifest header like:
*
*
* Bundle-ActivationPolicy: lazy; exclude:="org.osgi.framework"
*
*
* @see #EXPORT_PACKAGE
* @see #BUNDLE_ACTIVATIONPOLICY
* @since 1.3
*/
String EXCLUDE_DIRECTIVE = "exclude";
/**
* Manifest header directive identifying names of matching attributes which
* must be specified by matching Import-Package statements in the
* Export-Package manifest header.
*
*
* The directive value is encoded in the Export-Package manifest header
* like:
*
*
* Export-Package: org.osgi.framework; mandatory:="bundle-symbolic-name"
*
*
* @see #EXPORT_PACKAGE
* @since 1.3
*/
String MANDATORY_DIRECTIVE = "mandatory";
/**
* Manifest header directive identifying the visibility of a required bundle
* in the Require-Bundle manifest header. The default value is
* {@link #VISIBILITY_PRIVATE private}.
*
*
* The directive value is encoded in the Require-Bundle manifest header
* like:
*
*
* Require-Bundle: com.acme.module.test; visibility:="reexport"
*
*
* @see #REQUIRE_BUNDLE
* @see #VISIBILITY_PRIVATE
* @see #VISIBILITY_REEXPORT
* @since 1.3
*/
String VISIBILITY_DIRECTIVE = "visibility";
/**
* Manifest header directive value identifying a private visibility type. A
* private visibility type indicates that any packages that are exported by
* the required bundle are not made visible on the export signature of the
* requiring bundle.
*
*
* The directive value is encoded in the Require-Bundle manifest header
* like:
*
*
* Require-Bundle: com.acme.module.test; visibility:="private"
*
*
* @see #VISIBILITY_DIRECTIVE
* @since 1.3
*/
String VISIBILITY_PRIVATE = "private";
/**
* Manifest header directive value identifying a reexport visibility type. A
* reexport visibility type indicates any packages that are exported by the
* required bundle are re-exported by the requiring bundle. Any arbitrary
* arbitrary matching attributes with which they were exported by the
* required bundle are deleted.
*
*
* The directive value is encoded in the Require-Bundle manifest header
* like:
*
*
* Require-Bundle: com.acme.module.test; visibility:="reexport"
*
*
* @see #VISIBILITY_DIRECTIVE
* @since 1.3
*/
String VISIBILITY_REEXPORT = "reexport";
/**
* Manifest header directive identifying the type of the extension fragment.
*
*
* The directive value is encoded in the Fragment-Host manifest header like:
*
*
* Fragment-Host: system.bundle; extension:="framework"
*
*
*
* The default value is {@link #EXTENSION_FRAMEWORK framework}.
*
* @see #FRAGMENT_HOST
* @see #EXTENSION_FRAMEWORK
* @see #EXTENSION_BOOTCLASSPATH
* @since 1.3
*/
String EXTENSION_DIRECTIVE = "extension";
/**
* Manifest header directive value identifying the type of extension
* fragment. An extension fragment type of framework indicates that the
* extension fragment is to be loaded by the framework's class loader.
*
*
* The directive value is encoded in the Fragment-Host manifest header like:
*
*
* Fragment-Host: system.bundle; extension:="framework"
*
*
* @see #EXTENSION_DIRECTIVE
* @since 1.3
*/
String EXTENSION_FRAMEWORK = "framework";
/**
* Manifest header directive value identifying the type of extension
* fragment. An extension fragment type of bootclasspath indicates that the
* extension fragment is to be loaded by the boot class loader.
*
*
* The directive value is encoded in the Fragment-Host manifest header like:
*
*
* Fragment-Host: system.bundle; extension:="bootclasspath"
*
*
* @see #EXTENSION_DIRECTIVE
* @since 1.3
*/
String EXTENSION_BOOTCLASSPATH = "bootclasspath";
/**
* Manifest header identifying the bundle's activation policy.
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*
* @since 1.4
* @see #ACTIVATION_LAZY
* @see #INCLUDE_DIRECTIVE
* @see #EXCLUDE_DIRECTIVE
*/
String BUNDLE_ACTIVATIONPOLICY = "Bundle-ActivationPolicy";
/**
* Bundle activation policy declaring the bundle must be activated when the
* first class load is made from the bundle.
*
* A bundle with the lazy activation policy that is started with the
* {@link Bundle#START_ACTIVATION_POLICY START_ACTIVATION_POLICY} option
* will wait in the {@link Bundle#STARTING STARTING} state until the first
* class load from the bundle occurs. The bundle will then be activated
* before the class is returned to the requester.
*
* The activation policy value is specified as in the
* Bundle-ActivationPolicy manifest header like:
*
*
* Bundle-ActivationPolicy: lazy
*
*
* @see #BUNDLE_ACTIVATIONPOLICY
* @see Bundle#start(int)
* @see Bundle#START_ACTIVATION_POLICY
* @since 1.4
*/
String ACTIVATION_LAZY = "lazy";
/**
* Framework environment property identifying the Framework version.
*
*
* The value of this property may be retrieved by calling the
* {@code BundleContext.getProperty} method.
*/
String FRAMEWORK_VERSION = "org.osgi.framework.version";
/**
* Framework environment property identifying the Framework implementation
* vendor.
*
*
* The value of this property may be retrieved by calling the
* {@code BundleContext.getProperty} method.
*/
String FRAMEWORK_VENDOR = "org.osgi.framework.vendor";
/**
* Framework launching property identifying the Framework implementation
* language (see ISO 639 for possible values).
*
*
* The value of this property may be retrieved by calling the
* {@code BundleContext.getProperty} method.
*/
String FRAMEWORK_LANGUAGE = "org.osgi.framework.language";
/**
* Framework launching property identifying the Framework host-computer's
* operating system.
*
*
* The value of this property may be retrieved by calling the
* {@code BundleContext.getProperty} method.
*/
String FRAMEWORK_OS_NAME = "org.osgi.framework.os.name";
/**
* Framework launching property identifying the Framework host-computer's
* operating system version number.
*
*
* The value of this property may be retrieved by calling the
* {@code BundleContext.getProperty} method.
*/
String FRAMEWORK_OS_VERSION = "org.osgi.framework.os.version";
/**
* Framework launching property identifying the Framework host-computer's
* processor name.
*
*
* The value of this property may be retrieved by calling the
* {@code BundleContext.getProperty} method.
*/
String FRAMEWORK_PROCESSOR = "org.osgi.framework.processor";
/**
* Framework launching property identifying execution environments provided
* by the Framework.
*
*
* The value of this property may be retrieved by calling the
* {@code BundleContext.getProperty} method.
*
* @since 1.2
* @deprecated As of 1.6. Replaced by the {@code osgi.ee} capability.
*/
String FRAMEWORK_EXECUTIONENVIRONMENT = "org.osgi.framework.executionenvironment";
/**
* Framework launching property identifying packages for which the Framework
* must delegate class loading to the parent class loader of the bundle.
*
*
* The value of this property may be retrieved by calling the
* {@code BundleContext.getProperty} method.
*
* @see #FRAMEWORK_BUNDLE_PARENT
* @since 1.3
*/
String FRAMEWORK_BOOTDELEGATION = "org.osgi.framework.bootdelegation";
/**
* Framework launching property identifying packages which the system bundle
* must export.
*
*
* If this property is not specified then the framework must calculate a
* reasonable default value for the current execution environment.
*
*
* The value of this property may be retrieved by calling the
* {@code BundleContext.getProperty} method.
*
* @since 1.3
*/
String FRAMEWORK_SYSTEMPACKAGES = "org.osgi.framework.system.packages";
/**
* Framework launching property identifying extra packages which the system
* bundle must export from the current execution environment.
*
*
* This property is useful for configuring extra system packages in addition
* to the system packages calculated by the framework.
*
*
* The value of this property may be retrieved by calling the
* {@code BundleContext.getProperty} method.
*
* @see #FRAMEWORK_SYSTEMPACKAGES
* @since 1.5
*/
String FRAMEWORK_SYSTEMPACKAGES_EXTRA = "org.osgi.framework.system.packages.extra";
/**
* Framework environment property identifying whether the Framework supports
* framework extension bundles.
*
*
* As of version 1.4, the value of this property must be {@code true}. The
* Framework must support framework extension bundles.
*
*
* The value of this property may be retrieved by calling the
* {@code BundleContext.getProperty} method.
*
* @since 1.3
*/
String SUPPORTS_FRAMEWORK_EXTENSION = "org.osgi.supports.framework.extension";
/**
* Framework environment property identifying whether the Framework supports
* bootclasspath extension bundles.
*
*
* If the value of this property is {@code true}, then the Framework
* supports bootclasspath extension bundles. The default value is
* {@code false}.
*
* The value of this property may be retrieved by calling the
* {@code BundleContext.getProperty} method.
*
* @since 1.3
*/
String SUPPORTS_BOOTCLASSPATH_EXTENSION = "org.osgi.supports.bootclasspath.extension";
/**
* Framework environment property identifying whether the Framework supports
* fragment bundles.
*
*
* As of version 1.4, the value of this property must be {@code true}. The
* Framework must support fragment bundles.
*
* The value of this property may be retrieved by calling the
* {@code BundleContext.getProperty} method.
*
* @since 1.3
*/
String SUPPORTS_FRAMEWORK_FRAGMENT = "org.osgi.supports.framework.fragment";
/**
* Framework environment property identifying whether the Framework supports
* the {@link #REQUIRE_BUNDLE Require-Bundle} manifest header.
*
*
* As of version 1.4, the value of this property must be {@code true}. The
* Framework must support the {@code Require-Bundle} manifest header.
*
* The value of this property may be retrieved by calling the
* {@code BundleContext.getProperty} method.
*
* @since 1.3
*/
String SUPPORTS_FRAMEWORK_REQUIREBUNDLE = "org.osgi.supports.framework.requirebundle";
/**
* Framework launching property specifying the type of security manager the
* framework must use. If not specified then the framework will not set the
* VM security manager.
*
* @see #FRAMEWORK_SECURITY_OSGI
* @since 1.5
*/
String FRAMEWORK_SECURITY = "org.osgi.framework.security";
/**
* Specifies that a security manager that supports all security aspects of
* the OSGi core specification including postponed conditions must be
* installed.
*
*
* If this value is specified and there is a security manager already
* installed, then a {@code SecurityException} must be thrown when the
* Framework is initialized.
*
* @see #FRAMEWORK_SECURITY
* @since 1.5
*/
String FRAMEWORK_SECURITY_OSGI = "osgi";
/**
* Framework launching property specifying the persistent storage area used
* by the framework. The value of this property must be a valid file path in
* the file system to a directory. If the specified directory does not exist
* then the framework will create the directory. If the specified path
* exists but is not a directory or if the framework fails to create the
* storage directory, then framework initialization must fail. The framework
* is free to use this directory as it sees fit. This area can not be shared
* with anything else.
*
* If this property is not set, the framework should use a reasonable
* platform default for the persistent storage area.
*
* @since 1.5
*/
String FRAMEWORK_STORAGE = "org.osgi.framework.storage";
/**
* Framework launching property specifying if and when the persistent
* storage area for the framework should be cleaned. If this property is not
* set, then the framework storage area must not be cleaned.
*
* @see #FRAMEWORK_STORAGE_CLEAN_ONFIRSTINIT
* @since 1.5
*/
String FRAMEWORK_STORAGE_CLEAN = "org.osgi.framework.storage.clean";
/**
* Specifies that the framework storage area must be cleaned before the
* framework is initialized for the first time. Subsequent inits, starts or
* updates of the framework will not result in cleaning the framework
* storage area.
*
* @since 1.5
*/
String FRAMEWORK_STORAGE_CLEAN_ONFIRSTINIT = "onFirstInit";
/**
* Framework launching property specifying a comma separated list of
* additional library file extensions that must be used when a bundle's
* class loader is searching for native libraries. If this property is not
* set, then only the library name returned by
* {@code System.mapLibraryName(String)} will be used to search. This is
* needed for certain operating systems which allow more than one extension
* for a library. For example, AIX allows library extensions of {@code .a}
* and {@code .so}, but {@code System.mapLibraryName(String)} will only
* return names with the {@code .a} extension.
*
* @since 1.5
*/
String FRAMEWORK_LIBRARY_EXTENSIONS = "org.osgi.framework.library.extensions";
/**
* Framework launching property specifying an optional OS specific command
* to set file permissions on extracted native code. On some operating
* systems, it is required that native libraries be set to executable. This
* optional property allows you to specify the command. For example, on a
* UNIX style OS, this property could have the following value.
*
*
* chmod +rx ${abspath}
*
*
* The ${abspath}
is used by the framework to substitute the
* actual absolute file path.
*
* @since 1.5
*/
String FRAMEWORK_EXECPERMISSION = "org.osgi.framework.command.execpermission";
/**
* Specified the substitution string for the absolute path of a file.
*
* @see #FRAMEWORK_EXECPERMISSION
* @since 1.6
*/
String FRAMEWORK_COMMAND_ABSPATH = "abspath";
/**
* Framework launching property specifying the trust repositories used by
* the framework. The value is a {@code java.io.File.pathSeparator}
* separated list of valid file paths to files that contain key stores. Key
* stores of type {@code JKS} must be supported and other key store types
* may be supported. The framework will use the key stores as trust
* repositories to authenticate certificates of trusted signers. The key
* stores are only used as read-only trust repositories to access public
* keys. No passwords are required to access the key stores' public keys.
*
* Note that framework implementations are allowed to use other trust
* repositories in addition to the trust repositories specified by this
* property. How these other trust repositories are configured and populated
* is implementation specific.
*
* @since 1.5
*/
String FRAMEWORK_TRUST_REPOSITORIES = "org.osgi.framework.trust.repositories";
/**
* Framework launching property specifying the current windowing system. The
* framework should provide a reasonable default if this is not set.
*
* @since 1.5
*/
String FRAMEWORK_WINDOWSYSTEM = "org.osgi.framework.windowsystem";
/**
* Framework launching property specifying the beginning start level of the
* framework.
*
* @see "Core Specification, Starting the Framework."
* @since 1.5
*/
String FRAMEWORK_BEGINNING_STARTLEVEL = "org.osgi.framework.startlevel.beginning";
/**
* Framework launching property specifying the parent class loader type for
* all bundle class loaders. Default value is
* {@link #FRAMEWORK_BUNDLE_PARENT_BOOT boot}.
*
* @see #FRAMEWORK_BUNDLE_PARENT_BOOT
* @see #FRAMEWORK_BUNDLE_PARENT_EXT
* @see #FRAMEWORK_BUNDLE_PARENT_APP
* @see #FRAMEWORK_BUNDLE_PARENT_FRAMEWORK
* @since 1.5
*/
String FRAMEWORK_BUNDLE_PARENT = "org.osgi.framework.bundle.parent";
/**
* Specifies to use of the boot class loader as the parent class loader for
* all bundle class loaders.
*
* @since 1.5
* @see #FRAMEWORK_BUNDLE_PARENT
*/
String FRAMEWORK_BUNDLE_PARENT_BOOT = "boot";
/**
* Specifies to use the extension class loader as the parent class loader
* for all bundle class loaders.
*
* @since 1.5
* @see #FRAMEWORK_BUNDLE_PARENT
*/
String FRAMEWORK_BUNDLE_PARENT_EXT = "ext";
/**
* Specifies to use the application class loader as the parent class loader
* for all bundle class loaders. Depending on how the framework is launched,
* this may refer to the same class loader as
* {@link #FRAMEWORK_BUNDLE_PARENT_FRAMEWORK}.
*
* @since 1.5
* @see #FRAMEWORK_BUNDLE_PARENT
*/
String FRAMEWORK_BUNDLE_PARENT_APP = "app";
/**
* Specifies to use the framework class loader as the parent class loader
* for all bundle class loaders. The framework class loader is the class
* loader used to load the framework implementation. Depending on how the
* framework is launched, this may refer to the same class loader as
* {@link #FRAMEWORK_BUNDLE_PARENT_APP}.
*
* @since 1.5
* @see #FRAMEWORK_BUNDLE_PARENT
*/
String FRAMEWORK_BUNDLE_PARENT_FRAMEWORK = "framework";
/*
* Service properties.
*/
/**
* Service property identifying all of the class names under which a service
* was registered in the Framework. The value of this property must be of
* type {@code String[]}.
*
*
* This property is set by the Framework when a service is registered.
*/
String OBJECTCLASS = "objectClass";
/**
* Service property identifying a service's registration number. The value
* of this property must be of type {@code Long}.
*
*
* The value of this property is assigned by the Framework when a service is
* registered. The Framework assigns a unique, non-negative value that is
* larger than all previously assigned values since the Framework was
* started. These values are NOT persistent across restarts of the
* Framework.
*/
String SERVICE_ID = "service.id";
/**
* Service property identifying a service's persistent identifier.
*
*
* This property may be supplied in the {@code properties}
* {@code Dictionary} object passed to the
* {@code BundleContext.registerService} method. The value of this property
* must be of type {@code String}, {@code String[]}, or {@code Collection}
* of {@code String}.
*
*
* A service's persistent identifier uniquely identifies the service and
* persists across multiple Framework invocations.
*
*
* By convention, every bundle has its own unique namespace, starting with
* the bundle's identifier (see {@link Bundle#getBundleId()}) and followed
* by a dot (.). A bundle may use this as the prefix of the persistent
* identifiers for the services it registers.
*/
String SERVICE_PID = "service.pid";
/**
* Service property identifying a service's ranking number.
*
*
* This property may be supplied in the {@code properties
* Dictionary} object passed to the {@code BundleContext.registerService}
* method. The value of this property must be of type {@code Integer}.
*
*
* The service ranking is used by the Framework to determine the natural
* order of services, see {@link ServiceReference#compareTo(Object)},
* and the default service to be returned from a call to the
* {@link BundleContext#getServiceReference(Class)} or
* {@link BundleContext#getServiceReference(String)} method.
*
*
* The default ranking is zero (0). A service with a ranking of
* {@code Integer.MAX_VALUE} is very likely to be returned as the default
* service, whereas a service with a ranking of {@code Integer.MIN_VALUE} is
* very unlikely to be returned.
*
*
* If the supplied property value is not of type {@code Integer}, it is
* deemed to have a ranking value of zero.
*/
String SERVICE_RANKING = "service.ranking";
/**
* Service property identifying a service's vendor.
*
*
* This property may be supplied in the properties {@code Dictionary} object
* passed to the {@code BundleContext.registerService} method.
*/
String SERVICE_VENDOR = "service.vendor";
/**
* Service property identifying a service's description.
*
*
* This property may be supplied in the properties {@code Dictionary} object
* passed to the {@code BundleContext.registerService} method.
*/
String SERVICE_DESCRIPTION = "service.description";
/**
* Service property identifying the {@link Bundle#getBundleId() bundle id}
* of the {@link ServiceReference#getBundle() bundle registering the
* service}.
*
*
* This property is set by the Framework when a service is registered. The
* value of this property must be of type {@code Long}.
*
* @since 1.8
*/
String SERVICE_BUNDLEID = "service.bundleid";
/**
* Service property identifying a service's scope.
*
*
* This property is set by the Framework when a service is registered. If
* the registered object implements {@link PrototypeServiceFactory}, then
* the value of this service property will be {@link #SCOPE_PROTOTYPE}.
* Otherwise, if the registered object implements {@link ServiceFactory},
* then the value of this service property will be {@link #SCOPE_BUNDLE}.
* Otherwise, the value of this service property will be
* {@link #SCOPE_SINGLETON}.
*
* @since 1.8
* @see #SCOPE_SINGLETON
* @see #SCOPE_BUNDLE
* @see #SCOPE_PROTOTYPE
*/
String SERVICE_SCOPE = "service.scope";
/**
* Service scope is singleton. All bundles using the service receive the
* same service object.
*
* @since 1.8
* @see #SERVICE_SCOPE
*/
String SCOPE_SINGLETON = "singleton";
/**
* Service scope is bundle. Each bundle using the service receives a
* customized service object.
*
* @since 1.8
* @see #SERVICE_SCOPE
*/
String SCOPE_BUNDLE = "bundle";
/**
* Service scope is prototype. Each bundle using the service receives either
* a customized service object or can request multiple customized service
* objects via {@link ServiceObjects}.
*
* @since 1.8
* @see #SERVICE_SCOPE
*/
String SCOPE_PROTOTYPE = "prototype";
/**
* Framework environment property identifying the Framework's universally
* unique identifier (UUID). A UUID represents a 128-bit value. A new UUID
* is generated by the {@link Framework#init()} method each time a framework
* is initialized. The value of this property must conform to the UUID
* string representation specified in RFC 4122.
*
*
* The value of this property may be retrieved by calling the
* {@code BundleContext.getProperty} method.
*
* @since 1.6
*/
String FRAMEWORK_UUID = "org.osgi.framework.uuid";
/**
* Service property identifying the configuration types supported by a
* distribution provider. Registered by the distribution provider on one of
* its services to indicate the supported configuration types.
*
*
* The value of this property must be of type {@code String},
* {@code String[]}, or {@code Collection} of {@code String}.
*
* @since 1.6
* @see "Remote Services Specification"
*/
String REMOTE_CONFIGS_SUPPORTED = "remote.configs.supported";
/**
* Service property identifying the intents supported by a distribution
* provider. Registered by the distribution provider on one of its services
* to indicate the vocabulary of implemented intents.
*
*
* The value of this property must be of type {@code String},
* {@code String[]}, or {@code Collection} of {@code String}.
*
* @since 1.6
* @see "Remote Services Specification"
*/
String REMOTE_INTENTS_SUPPORTED = "remote.intents.supported";
/**
* Service property identifying the configuration types that should be used
* to export the service. Each configuration type represents the
* configuration parameters for an endpoint. A distribution provider should
* create an endpoint for each configuration type that it supports.
*
*
* This property may be supplied in the {@code properties}
* {@code Dictionary} object passed to the
* {@code BundleContext.registerService} method. The value of this property
* must be of type {@code String}, {@code String[]}, or {@code Collection}
* of {@code String}.
*
* @since 1.6
* @see "Remote Services Specification"
*/
String SERVICE_EXPORTED_CONFIGS = "service.exported.configs";
/**
* Service property identifying the intents that the distribution provider
* must implement to distribute the service. Intents listed in this property
* are reserved for intents that are critical for the code to function
* correctly, for example, ordering of messages. These intents should not be
* configurable.
*
*
* This property may be supplied in the {@code properties}
* {@code Dictionary} object passed to the
* {@code BundleContext.registerService} method. The value of this property
* must be of type {@code String}, {@code String[]}, or {@code Collection}
* of {@code String}.
*
* @since 1.6
* @see "Remote Services Specification"
*/
String SERVICE_EXPORTED_INTENTS = "service.exported.intents";
/**
* Service property identifying the extra intents that the distribution
* provider must implement to distribute the service. This property is
* merged with the {@code service.exported.intents} property before the
* distribution provider interprets the listed intents; it has therefore the
* same semantics but the property should be configurable so the
* administrator can choose the intents based on the topology. Bundles
* should therefore make this property configurable, for example through the
* Configuration Admin service.
*
*
* This property may be supplied in the {@code properties}
* {@code Dictionary} object passed to the
* {@code BundleContext.registerService} method. The value of this property
* must be of type {@code String}, {@code String[]}, or {@code Collection}
* of {@code String}.
*
* @since 1.6
* @see "Remote Services Specification"
*/
String SERVICE_EXPORTED_INTENTS_EXTRA = "service.exported.intents.extra";
/**
* Service property marking the service for export. It defines the
* interfaces under which this service can be exported. This list must be a
* subset of the types under which the service was registered. The single
* value of an asterisk ({@code '*'} \u002A) indicates all the interface
* types under which the service was registered excluding the non-interface
* types. It is strongly recommended to only export interface types and not
* concrete classes due to the complexity of creating proxies for some type
* of concrete classes.
*
*
* This property may be supplied in the {@code properties}
* {@code Dictionary} object passed to the
* {@code BundleContext.registerService} method. The value of this property
* must be of type {@code String}, {@code String[]}, or {@code Collection}
* of {@code String}.
*
* @since 1.6
* @see "Remote Services Specification"
*/
String SERVICE_EXPORTED_INTERFACES = "service.exported.interfaces";
/**
* Service property identifying the service as imported. This service
* property must be set by a distribution provider to any value when it
* registers the endpoint proxy as an imported service. A bundle can use
* this property to filter out imported services.
*
*
* The value of this property may be of any type.
*
* @since 1.6
* @see "Remote Services Specification"
*/
String SERVICE_IMPORTED = "service.imported";
/**
* Service property identifying the configuration types used to import the
* service. Any associated properties for this configuration types must be
* properly mapped to the importing system. For example, a URL in these
* properties must point to a valid resource when used in the importing
* framework. If multiple configuration types are listed in this property,
* then they must be synonyms for exactly the same remote endpoint that is
* used to export this service.
*
*
* The value of this property must be of type {@code String},
* {@code String[]}, or {@code Collection} of {@code String}.
*
* @since 1.6
* @see "Remote Services Specification"
* @see #SERVICE_EXPORTED_CONFIGS
*/
String SERVICE_IMPORTED_CONFIGS = "service.imported.configs";
/**
* Service property identifying the intents that this service implement.
* This property has a dual purpose:
*
* - A bundle can use this service property to notify the distribution
* provider that these intents are already implemented by the exported
* service object.
* - A distribution provider must use this property to convey the combined
* intents of: the exporting service, the intents that the exporting
* distribution provider adds, and the intents that the importing
* distribution provider adds.
*
*
* To export a service, a distribution provider must expand any qualified
* intents. Both the exporting and importing distribution providers must
* recognize all intents before a service can be distributed.
*
*
* The value of this property must be of type {@code String},
* {@code String[]}, or {@code Collection} of {@code String}.
*
* @since 1.6
* @see "Remote Services Specification"
*/
String SERVICE_INTENTS = "service.intents";
/**
* Manifest header identifying the capabilities that the bundle offers to
* provide to other bundles.
*
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*
* @since 1.6
*/
String PROVIDE_CAPABILITY = "Provide-Capability";
/**
* Manifest header identifying the capabilities on which the bundle depends.
*
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*
* @since 1.6
*/
String REQUIRE_CAPABILITY = "Require-Capability";
/**
* Manifest header directive identifying the effective time of the provided
* capability. The default value is {@link #EFFECTIVE_RESOLVE resolve}.
*
*
* The directive value is encoded in the Provide-Capability manifest header
* like:
*
*
* Provide-Capability: com.acme.capability; effective:="resolve"
*
*
* @see #PROVIDE_CAPABILITY
* @see #EFFECTIVE_RESOLVE
* @see #EFFECTIVE_ACTIVE
* @since 1.6
*/
String EFFECTIVE_DIRECTIVE = "effective";
/**
* Manifest header directive value identifying a capability that is
* effective at resolve time. Capabilities with an effective time of resolve
* are the only capabilities which are processed by the resolver.
*
*
* The directive value is encoded in the Provide-Capability manifest header
* like:
*
*
* Provide-Capability: com.acme.capability; effective:="resolve"
*
*
* @see #EFFECTIVE_DIRECTIVE
* @since 1.6
*/
String EFFECTIVE_RESOLVE = "resolve";
/**
* Manifest header directive value identifying a capability that is
* effective at active time. Capabilities with an effective time of active
* are ignored by the resolver.
*
*
* The directive value is encoded in the Provide-Capability manifest header
* like:
*
*
* Provide-Capability: com.acme.capability; effective:="active"
*
*
* @see #EFFECTIVE_DIRECTIVE
* @since 1.6
*/
String EFFECTIVE_ACTIVE = "active";
/**
* Manifest header directive identifying the capability filter specified in
* the Require-Capability manifest header.
*
*
* The directive value is encoded in the Require-Capability manifest header
* like:
*
*
* Require-Capability: com.acme.capability; filter:="(someattr=somevalue)"
*
*
* @see #REQUIRE_CAPABILITY
* @since 1.6
*/
String FILTER_DIRECTIVE = "filter";
/**
* Framework launching property identifying capabilities which the system
* bundle must provide.
*
*
* If this property is not specified then the framework must calculate a
* reasonable default value for the current execution environment.
*
*
* The value of this property may be retrieved by calling the
* {@code BundleContext.getProperty} method.
*
* @since 1.6
*/
String FRAMEWORK_SYSTEMCAPABILITIES = "org.osgi.framework.system.capabilities";
/**
* Framework launching property identifying extra capabilities which the
* system bundle must additionally provide.
*
*
* This property is useful for configuring extra system capabilities in
* addition to the system capabilities calculated by the framework.
*
*
* The value of this property may be retrieved by calling the
* {@code BundleContext.getProperty} method.
*
* @see #FRAMEWORK_SYSTEMCAPABILITIES
* @since 1.6
*/
String FRAMEWORK_SYSTEMCAPABILITIES_EXTRA = "org.osgi.framework.system.capabilities.extra";
/**
* Framework launching property specifying whether multiple bundles having
* the same {@link #BUNDLE_SYMBOLICNAME symbolic name} and
* {@link #BUNDLE_VERSION version} may be installed.
*
*
* Default value is {@link #FRAMEWORK_BSNVERSION_MANAGED managed} in this
* release of the specification. This default may change in a future
* specification release. Therefore, code must not assume the default
* behavior is {@code managed} and should interrogate the value of this
* property to determine the behavior.
*
*
* The value of this property may be retrieved by calling the
* {@code BundleContext.getProperty} method.
*
* @see #FRAMEWORK_BSNVERSION_MULTIPLE
* @see #FRAMEWORK_BSNVERSION_SINGLE
* @see #FRAMEWORK_BSNVERSION_MANAGED
* @since 1.6
*/
String FRAMEWORK_BSNVERSION = "org.osgi.framework.bsnversion";
/**
* Specifies the framework will allow multiple bundles to be installed
* having the same symbolic name and version.
*
* @since 1.6
* @see #FRAMEWORK_BSNVERSION
*/
String FRAMEWORK_BSNVERSION_MULTIPLE = "multiple";
/**
* Specifies the framework will only allow a single bundle to be installed
* for a given symbolic name and version. It will be an error to install a
* bundle or update a bundle to have the same symbolic name and version as
* another installed bundle.
*
* @since 1.6
* @see #FRAMEWORK_BSNVERSION
* @see BundleException#DUPLICATE_BUNDLE_ERROR
*/
String FRAMEWORK_BSNVERSION_SINGLE = "single";
/**
* Specifies the framework must consult the {@link CollisionHook bundle
* collision hook} services to determine if it will be an error to install a
* bundle or update a bundle to have the same symbolic name and version as
* another installed bundle. If no bundle collision hook services are
* registered, then it will be an error to install a bundle or update a
* bundle to have the same symbolic name and version as another installed
* bundle.
*
* @since 1.7
* @see #FRAMEWORK_BSNVERSION
* @see BundleException#DUPLICATE_BUNDLE_ERROR
*/
String FRAMEWORK_BSNVERSION_MANAGED = "managed";
/**
* Manifest header identifying the bundle's icon URLs.
*
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*
* @since 1.8
*/
String BUNDLE_ICON = "Bundle-Icon";
/**
* Manifest header identifying the bundle's license information.
*
*
* The header value may be retrieved from the {@code Dictionary} object
* returned by the {@code Bundle.getHeaders} method.
*
* @since 1.8
*/
String BUNDLE_LICENSE = "Bundle-License";
}