/* * Copyright (c) OSGi Alliance (2000, 2018). 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$ */ @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 * 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 * @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 * @deprecated As of 1.9. */ 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: *

* * 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"; /** * Manifest header identifying the bundle's developers. *

* The header value may be retrieved from the {@code Dictionary} object * returned by the {@code Bundle.getHeaders} method. * * @since 1.9 */ String BUNDLE_DEVELOPERS = "Bundle-Developers"; /** * Manifest header identifying the bundle's software configuration * management system. *

* The header value may be retrieved from the {@code Dictionary} object * returned by the {@code Bundle.getHeaders} method. * * @since 1.9 */ String BUNDLE_SCM = "Bundle-SCM"; /** * Service property identifying the monotonically increasing change count of * a service. *

* A service may optional provide this property to indicate there has been a * change in some data provided by the service. The change count must be * incremented with a positive value every time the data provided by the * service is changed. The service announces the modified change count by * updating its service properties with the new value for this service * property. *

* The value of this property must be of type {@code Long}. * * @since 1.9 */ String SERVICE_CHANGECOUNT = "service.changecount"; /** * Intent supported by Remote Services implementations that support Basic * Remote Services as defined for the {@code osgi.basic} intent. * * @since 1.9 */ String INTENT_BASIC = "osgi.basic"; /** * Intent supported by Remote Service implementations that support * Asynchronous Remote Services as defined for the {@code osgi.async} * intent. * * @since 1.9 */ String INTENT_ASYNC = "osgi.async"; /** * Intent supported by Remote Service implementation that provide * confidential communications as defined for the {@code osgi.confidential} * intent. * * @since 1.9 */ String INTENT_CONFIDENTIAL = "osgi.confidential"; /** * Intent supported by Remote Service implementations that provide private * communications as defined for the {@code osgi.private} intent. * * @since 1.9 */ String INTENT_PRIVATE = "osgi.private"; }