Add latest versions of R4.2 interfaces in preparation for the 1.6.0 release.
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@760202 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/framework/src/main/java/org/apache/felix/framework/util/ListenerHookInfoImpl.java b/framework/src/main/java/org/apache/felix/framework/util/ListenerHookInfoImpl.java
index db36a8f..5f034cc 100644
--- a/framework/src/main/java/org/apache/felix/framework/util/ListenerHookInfoImpl.java
+++ b/framework/src/main/java/org/apache/felix/framework/util/ListenerHookInfoImpl.java
@@ -41,4 +41,9 @@
{
return m_filter;
}
+
+ public boolean isRemoved()
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
}
\ No newline at end of file
diff --git a/framework/src/main/java/org/osgi/framework/Constants.java b/framework/src/main/java/org/osgi/framework/Constants.java
index d8dd102..16a10d8 100644
--- a/framework/src/main/java/org/osgi/framework/Constants.java
+++ b/framework/src/main/java/org/osgi/framework/Constants.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) OSGi Alliance (2000, 2008). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2000, 2009). 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.
@@ -22,10 +22,10 @@
*
* <p>
* The values associated with these keys are of type
- * <code>java.lang.String</code>, unless otherwise indicated.
+ * <code>String</code>, unless otherwise indicated.
*
* @since 1.1
- * @version $Revision: 5684 $
+ * @version $Revision: 6552 $
*/
public interface Constants {
@@ -44,8 +44,7 @@
public static final String SYSTEM_BUNDLE_SYMBOLICNAME = "system.bundle";
/**
- * Manifest header (named "Bundle-Category") identifying the
- * bundle's category.
+ * Manifest header identifying the bundle's category.
* <p>
* The attribute value may be retrieved from the <code>Dictionary</code>
* object returned by the <code>Bundle.getHeaders</code> method.
@@ -53,9 +52,8 @@
public static final String BUNDLE_CATEGORY = "Bundle-Category";
/**
- * Manifest header (named "Bundle-ClassPath") identifying a list
- * of directories and embedded JAR files, which are bundle resources used to
- * extend the bundle's classpath.
+ * Manifest header identifying a list of directories and embedded JAR files,
+ * which are bundle resources used to extend the bundle's classpath.
*
* <p>
* The attribute value may be retrieved from the <code>Dictionary</code>
@@ -64,8 +62,7 @@
public static final String BUNDLE_CLASSPATH = "Bundle-ClassPath";
/**
- * Manifest header (named "Bundle-Copyright") identifying the
- * bundle's copyright information.
+ * Manifest header identifying the bundle's copyright information.
* <p>
* The attribute value may be retrieved from the <code>Dictionary</code>
* object returned by the <code>Bundle.getHeaders</code> method.
@@ -73,8 +70,8 @@
public static final String BUNDLE_COPYRIGHT = "Bundle-Copyright";
/**
- * Manifest header (named "Bundle-Description") containing a brief
- * description of the bundle's functionality.
+ * Manifest header containing a brief description of the bundle's
+ * functionality.
* <p>
* The attribute value may be retrieved from the <code>Dictionary</code>
* object returned by the <code>Bundle.getHeaders</code> method.
@@ -82,8 +79,7 @@
public static final String BUNDLE_DESCRIPTION = "Bundle-Description";
/**
- * Manifest header (named "Bundle-Name") identifying the bundle's
- * name.
+ * Manifest header identifying the bundle's name.
* <p>
* The attribute value may be retrieved from the <code>Dictionary</code>
* object returned by the <code>Bundle.getHeaders</code> method.
@@ -91,9 +87,9 @@
public static final String BUNDLE_NAME = "Bundle-Name";
/**
- * Manifest header (named "Bundle-NativeCode") identifying a
- * number of hardware environments and the native language code libraries
- * that the bundle is carrying for each of these environments.
+ * Manifest header identifying a number of hardware environments and the
+ * native language code libraries that the bundle is carrying for each of
+ * these environments.
*
* <p>
* The attribute value may be retrieved from the <code>Dictionary</code>
@@ -102,8 +98,8 @@
public static final String BUNDLE_NATIVECODE = "Bundle-NativeCode";
/**
- * Manifest header (named "Export-Package") identifying the
- * packages that the bundle offers to the Framework for export.
+ * Manifest header identifying the packages that the bundle offers to the
+ * Framework for export.
*
* <p>
* The attribute value may be retrieved from the <code>Dictionary</code>
@@ -112,9 +108,9 @@
public static final String EXPORT_PACKAGE = "Export-Package";
/**
- * Manifest header (named "Export-Service") identifying the fully
- * qualified class names of the services that the bundle may register (used
- * for informational purposes only).
+ * Manifest header identifying the fully qualified class names of the
+ * services that the bundle may register (used for informational purposes
+ * only).
*
* <p>
* The attribute value may be retrieved from the <code>Dictionary</code>
@@ -125,8 +121,7 @@
public static final String EXPORT_SERVICE = "Export-Service";
/**
- * Manifest header (named "Import-Package") identifying the
- * packages on which the bundle depends.
+ * Manifest header identifying the packages on which the bundle depends.
*
* <p>
* The attribute value may be retrieved from the <code>Dictionary</code>
@@ -135,8 +130,8 @@
public static final String IMPORT_PACKAGE = "Import-Package";
/**
- * Manifest header (named "DynamicImport-Package") identifying the
- * packages that the bundle may dynamically import during execution.
+ * Manifest header identifying the packages that the bundle may dynamically
+ * import during execution.
*
* <p>
* The attribute value may be retrieved from the <code>Dictionary</code>
@@ -147,9 +142,8 @@
public static final String DYNAMICIMPORT_PACKAGE = "DynamicImport-Package";
/**
- * Manifest header (named "Import-Service") identifying the fully
- * qualified class names of the services that the bundle requires (used for
- * informational purposes only).
+ * Manifest header identifying the fully qualified class names of the
+ * services that the bundle requires (used for informational purposes only).
*
* <p>
* The attribute value may be retrieved from the <code>Dictionary</code>
@@ -160,8 +154,7 @@
public static final String IMPORT_SERVICE = "Import-Service";
/**
- * Manifest header (named "Bundle-Vendor") identifying the
- * bundle's vendor.
+ * Manifest header identifying the bundle's vendor.
*
* <p>
* The attribute value may be retrieved from the <code>Dictionary</code>
@@ -170,8 +163,7 @@
public static final String BUNDLE_VENDOR = "Bundle-Vendor";
/**
- * Manifest header (named "Bundle-Version") identifying the
- * bundle's version.
+ * Manifest header identifying the bundle's version.
*
* <p>
* The attribute value may be retrieved from the <code>Dictionary</code>
@@ -180,9 +172,8 @@
public static final String BUNDLE_VERSION = "Bundle-Version";
/**
- * Manifest header (named "Bundle-DocURL") identifying the
- * bundle's documentation URL, from which further information about the
- * bundle may be obtained.
+ * Manifest header identifying the bundle's documentation URL, from which
+ * further information about the bundle may be obtained.
*
* <p>
* The attribute value may be retrieved from the <code>Dictionary</code>
@@ -191,9 +182,8 @@
public static final String BUNDLE_DOCURL = "Bundle-DocURL";
/**
- * Manifest header (named "Bundle-ContactAddress") identifying the
- * contact address where problems with the bundle may be reported; for
- * example, an email address.
+ * Manifest header identifying the contact address where problems with the
+ * bundle may be reported; for example, an email address.
*
* <p>
* The attribute value may be retrieved from the <code>Dictionary</code>
@@ -202,8 +192,7 @@
public static final String BUNDLE_CONTACTADDRESS = "Bundle-ContactAddress";
/**
- * Manifest header attribute (named "Bundle-Activator")
- * identifying the bundle's activator class.
+ * Manifest header attribute identifying the bundle's activator class.
*
* <p>
* If present, this header specifies the name of the bundle resource class
@@ -218,9 +207,8 @@
public static final String BUNDLE_ACTIVATOR = "Bundle-Activator";
/**
- * Manifest header (named "Bundle-UpdateLocation") identifying the
- * location from which a new bundle version is obtained during a bundle
- * update operation.
+ * Manifest header identifying the location from which a new bundle version
+ * is obtained during a bundle update operation.
*
* <p>
* The attribute value may be retrieved from the <code>Dictionary</code>
@@ -229,9 +217,8 @@
public static final String BUNDLE_UPDATELOCATION = "Bundle-UpdateLocation";
/**
- * Manifest header attribute (named "specification-version")
- * identifying the version of a package specified in the Export-Package or
- * Import-Package manifest header.
+ * 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}.
@@ -239,9 +226,8 @@
public static final String PACKAGE_SPECIFICATION_VERSION = "specification-version";
/**
- * Manifest header attribute (named "processor") identifying the
- * processor required to run native bundle code specified in the
- * Bundle-NativeCode manifest header).
+ * Manifest header attribute identifying the processor required to run
+ * native bundle code specified in the Bundle-NativeCode manifest header).
*
* <p>
* The attribute value is encoded in the Bundle-NativeCode manifest header
@@ -250,13 +236,15 @@
* <pre>
* Bundle-NativeCode: http.so ; processor=x86 ...
* </pre>
+ *
+ * @see #BUNDLE_NATIVECODE
*/
public static final String BUNDLE_NATIVECODE_PROCESSOR = "processor";
/**
- * Manifest header attribute (named "osname") identifying the
- * operating system required to run native bundle code specified in the
- * Bundle-NativeCode manifest header).
+ * Manifest header attribute identifying the operating system required to
+ * run native bundle code specified in the Bundle-NativeCode manifest
+ * header).
* <p>
* The attribute value is encoded in the Bundle-NativeCode manifest header
* like:
@@ -264,13 +252,15 @@
* <pre>
* Bundle-NativeCode: http.so ; osname=Linux ...
* </pre>
+ *
+ * @see #BUNDLE_NATIVECODE
*/
public static final String BUNDLE_NATIVECODE_OSNAME = "osname";
/**
- * Manifest header attribute (named "osversion") identifying the
- * operating system version required to run native bundle code specified in
- * the Bundle-NativeCode manifest header).
+ * Manifest header attribute identifying the operating system version
+ * required to run native bundle code specified in the Bundle-NativeCode
+ * manifest header).
* <p>
* The attribute value is encoded in the Bundle-NativeCode manifest header
* like:
@@ -278,13 +268,15 @@
* <pre>
* Bundle-NativeCode: http.so ; osversion="2.34" ...
* </pre>
+ *
+ * @see #BUNDLE_NATIVECODE
*/
public static final String BUNDLE_NATIVECODE_OSVERSION = "osversion";
/**
- * Manifest header attribute (named "language") identifying the
- * language in which the native bundle code is written specified in the
- * Bundle-NativeCode manifest header. See ISO 639 for possible values.
+ * 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.
* <p>
* The attribute value is encoded in the Bundle-NativeCode manifest header
* like:
@@ -292,15 +284,16 @@
* <pre>
* Bundle-NativeCode: http.so ; language=nl_be ...
* </pre>
+ *
+ * @see #BUNDLE_NATIVECODE
*/
public static final String BUNDLE_NATIVECODE_LANGUAGE = "language";
/**
- * Manifest header (named "Bundle-RequiredExecutionEnvironment")
- * 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.
+ * 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.
*
* <p>
* The attribute value may be retrieved from the <code>Dictionary</code>
@@ -310,306 +303,10 @@
*/
public static final String BUNDLE_REQUIREDEXECUTIONENVIRONMENT = "Bundle-RequiredExecutionEnvironment";
- /*
- * Framework environment properties.
- */
-
/**
- * Framework environment property (named
- * "org.osgi.framework.version") identifying the Framework
- * version.
+ * Manifest header identifying the bundle's symbolic name.
*
* <p>
- * The value of this property may be retrieved by calling the
- * <code>BundleContext.getProperty</code> method.
- */
- public static final String FRAMEWORK_VERSION = "org.osgi.framework.version";
-
- /**
- * Framework environment property (named
- * "org.osgi.framework.vendor") identifying the Framework
- * implementation vendor.
- *
- * <p>
- * The value of this property may be retrieved by calling the
- * <code>BundleContext.getProperty</code> method.
- */
- public static final String FRAMEWORK_VENDOR = "org.osgi.framework.vendor";
-
- /**
- * Framework environment property (named
- * "org.osgi.framework.language") identifying the Framework
- * implementation language (see ISO 639 for possible values).
- *
- * <p>
- * The value of this property may be retrieved by calling the
- * <code>BundleContext.getProperty</code> method.
- */
- public static final String FRAMEWORK_LANGUAGE = "org.osgi.framework.language";
-
- /**
- * Framework environment property (named
- * "org.osgi.framework.os.name") identifying the Framework
- * host-computer's operating system.
- *
- * <p>
- * The value of this property may be retrieved by calling the
- * <code>BundleContext.getProperty</code> method.
- */
- public static final String FRAMEWORK_OS_NAME = "org.osgi.framework.os.name";
-
- /**
- * Framework environment property (named
- * "org.osgi.framework.os.version") identifying the Framework
- * host-computer's operating system version number.
- *
- * <p>
- * The value of this property may be retrieved by calling the
- * <code>BundleContext.getProperty</code> method.
- */
- public static final String FRAMEWORK_OS_VERSION = "org.osgi.framework.os.version";
-
- /**
- * Framework environment property (named
- * "org.osgi.framework.processor") identifying the Framework
- * host-computer's processor name.
- * <p>
- * The value of this property may be retrieved by calling the
- * <code>BundleContext.getProperty</code> method.
- */
- public static final String FRAMEWORK_PROCESSOR = "org.osgi.framework.processor";
-
- /**
- * Framework environment property (named
- * "org.osgi.framework.executionenvironment") identifying
- * execution environments provided by the Framework.
- * <p>
- * The value of this property may be retrieved by calling the
- * <code>BundleContext.getProperty</code> method.
- *
- * @since 1.2
- */
- public static final String FRAMEWORK_EXECUTIONENVIRONMENT = "org.osgi.framework.executionenvironment";
-
- /**
- * Framework environment property (named
- * "org.osgi.framework.bootdelegation") identifying packages for
- * which the Framework must delegate class loading to the boot class path.
- * <p>
- * The value of this property may be retrieved by calling the
- * <code>BundleContext.getProperty</code> method.
- *
- * @since 1.3
- */
- public static final String FRAMEWORK_BOOTDELEGATION = "org.osgi.framework.bootdelegation";
-
- /**
- * Framework environment property (named
- * "org.osgi.framework.system.packages") identifying packages which
- * the system bundle must export.
- * <p>
- * If this property is not specified then the framework must calculate a
- * reasonable default value for the current execution environment.
- * <p>
- * The value of this property may be retrieved by calling the
- * <code>BundleContext.getProperty</code> method.
- *
- * @since 1.3
- */
- public static final String FRAMEWORK_SYSTEMPACKAGES = "org.osgi.framework.system.packages";
-
- /**
- * Framework environment property (named
- * "org.osgi.framework.system.packages.extra") identifying extra
- * packages which the system bundle must export from the current
- * execution environment.
- * <p>
- * This property is useful for configuring extra system packages in
- * addition to the system packages calculated by the framework.
- * <p>
- * The value of this property may be retrieved by calling the
- * <code>BundleContext.getProperty</code> method.
- * @see #FRAMEWORK_SYSTEMPACKAGES org.osgi.framework.system.packages
- * @since 1.5
- */
- public static final String FRAMEWORK_SYSTEMPACKAGES_EXTRA = "org.osgi.framework.system.packages.extra";
- /**
- * Framework environment property (named
- * "org.osgi.supports.framework.extension") identifying whether
- * the Framework supports framework extension bundles. As of version 1.4,
- * the value of this property must be <code>true</code>. The Framework
- * must support framework extension bundles.
- * <p>
- * The value of this property may be retrieved by calling the
- * <code>BundleContext.getProperty</code> method.
- *
- * @since 1.3
- */
- public static final String SUPPORTS_FRAMEWORK_EXTENSION = "org.osgi.supports.framework.extension";
-
- /**
- * Framework environment property (named
- * "org.osgi.supports.bootclasspath.extension") identifying
- * whether the Framework supports bootclasspath extension bundles. If the
- * value of this property is <code>true</code>, then the Framework
- * supports bootclasspath extension bundles. The default value is
- * <code>false</code>.
- * <p>
- * The value of this property may be retrieved by calling the
- * <code>BundleContext.getProperty</code> method.
- *
- * @since 1.3
- */
- public static final String SUPPORTS_BOOTCLASSPATH_EXTENSION = "org.osgi.supports.bootclasspath.extension";
-
- /**
- * Framework environment property (named
- * "org.osgi.supports.framework.fragment") identifying whether the
- * Framework supports fragment bundles. As of version 1.4, the value of this
- * property must be <code>true</code>. The Framework must support
- * fragment bundles.
- * <p>
- * The value of this property may be retrieved by calling the
- * <code>BundleContext.getProperty</code> method.
- *
- * @since 1.3
- */
- public static final String SUPPORTS_FRAMEWORK_FRAGMENT = "org.osgi.supports.framework.fragment";
-
- /**
- * Framework environment property (named
- * "org.osgi.supports.framework.requirebundle") identifying
- * whether the Framework supports the <code>Require-Bundle</code> manifest
- * header. As of version 1.4, the value of this property must be
- * <code>true</code>. The Framework must support the
- * <code>Require-Bundle</code> manifest header.
- * <p>
- * The value of this property may be retrieved by calling the
- * <code>BundleContext.getProperty</code> method.
- *
- * @since 1.3
- */
- public static final String SUPPORTS_FRAMEWORK_REQUIREBUNDLE = "org.osgi.supports.framework.requirebundle";
-
- /*
- * Service properties.
- */
-
- /**
- * Service property (named "objectClass") identifying all of the
- * class names under which a service was registered in the Framework (of
- * type <code>java.lang.String[]</code>).
- *
- * <p>
- * This property is set by the Framework when a service is registered.
- */
- public static final String OBJECTCLASS = "objectClass";
-
- /**
- * Service property (named "service.id") identifying a service's
- * registration number (of type <code>java.lang.Long</code>).
- *
- * <p>
- * The value of this property is assigned by the Framework when a service is
- * registered. The Framework assigns a unique value that is larger than all
- * previously assigned values since the Framework was started. These values
- * are NOT persistent across restarts of the Framework.
- */
- public static final String SERVICE_ID = "service.id";
-
- /**
- * Service property (named "service.pid") identifying a service's
- * persistent identifier.
- *
- * <p>
- * This property may be supplied in the <code>properties</code>
- * <code>Dictionary</code>
- * object passed to the <code>BundleContext.registerService</code> method.
- *
- * <p>
- * A service's persistent identifier uniquely identifies the service and
- * persists across multiple Framework invocations.
- *
- * <p>
- * 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.
- */
- public static final String SERVICE_PID = "service.pid";
-
- /**
- * Service property (named "service.ranking") identifying a
- * service's ranking number (of type <code>java.lang.Integer</code>).
- *
- * <p>
- * This property may be supplied in the <code>properties
- * Dictionary</code>
- * object passed to the <code>BundleContext.registerService</code> method.
- *
- * <p>
- * The service ranking is used by the Framework to determine the <i>default
- * </i> service to be returned from a call to the
- * {@link BundleContext#getServiceReference} method: If more than one
- * service implements the specified class, the <code>ServiceReference</code>
- * object with the highest ranking is returned.
- *
- * <p>
- * The default ranking is zero (0). A service with a ranking of
- * <code>Integer.MAX_VALUE</code> is very likely to be returned as the
- * default service, whereas a service with a ranking of
- * <code>Integer.MIN_VALUE</code> is very unlikely to be returned.
- *
- * <p>
- * If the supplied property value is not of type
- * <code>java.lang.Integer</code>, it is deemed to have a ranking value
- * of zero.
- */
- public static final String SERVICE_RANKING = "service.ranking";
-
- /**
- * Service property (named "service.type") to provide information
- * about the type of the service. For example, if this service is proxied,
- * the property value might contain a string such as "proxied".
- *
- * <p>
- * The OSGi Alliance reserves all property value strings that start with
- * "osgi.".
- *
- * <p>
- * This property may be supplied in the properties <code>Dictionary</code>
- * object passed to the <code>BundleContext.registerService</code> method.
- * The value of this property must be of type <code>String</code>,
- * <code>String[]</code>, or <code>Collection</code> of <code>String</code>.
- *
- * @since 1.5
- */
- public static final String SERVICE_TYPE = "service.type";
-
- /**
- * Service property (named "service.vendor") identifying a
- * service's vendor.
- *
- * <p>
- * This property may be supplied in the properties <code>Dictionary</code>
- * object passed to the <code>BundleContext.registerService</code> method.
- */
- public static final String SERVICE_VENDOR = "service.vendor";
-
- /**
- * Service property (named "service.description") identifying a
- * service's description.
- *
- * <p>
- * This property may be supplied in the properties <code>Dictionary</code>
- * object passed to the <code>BundleContext.registerService</code> method.
- */
- public static final String SERVICE_DESCRIPTION = "service.description";
-
- /**
- * Manifest header (named "Bundle-SymbolicName") identifying the
- * bundle's symbolic name.
- * <p>
* The attribute value may be retrieved from the <code>Dictionary</code>
* object returned by the <code>Bundle.getHeaders</code> method.
*
@@ -618,8 +315,8 @@
public final static String BUNDLE_SYMBOLICNAME = "Bundle-SymbolicName";
/**
- * Manifest header directive (named "singleton") identifying
- * whether a bundle is a singleton. The default value is <code>false</code>.
+ * Manifest header directive identifying whether a bundle is a singleton.
+ * The default value is <code>false</code>.
*
* <p>
* The directive value is encoded in the Bundle-SymbolicName manifest header
@@ -629,14 +326,19 @@
* Bundle-SymbolicName: com.acme.module.test; singleton:=true
* </pre>
*
+ * <p>
+ * The attribute value may be retrieved from the <code>Dictionary</code>
+ * object returned by the <code>Bundle.getHeaders</code> method.
+ *
+ * @see #BUNDLE_SYMBOLICNAME
* @since 1.3
*/
public final static String SINGLETON_DIRECTIVE = "singleton";
/**
- * Manifest header directive (named "fragment-attachment")
- * identifying if and when a fragment may attach to a host bundle. The
- * default value is <code>"always"</code>.
+ * Manifest header directive identifying if and when a fragment may attach
+ * to a host bundle. The default value is
+ * {@link #FRAGMENT_ATTACHMENT_ALWAYS always}.
*
* <p>
* The directive value is encoded in the Bundle-SymbolicName manifest header
@@ -646,19 +348,19 @@
* Bundle-SymbolicName: com.acme.module.test; fragment-attachment:="never"
* </pre>
*
- * @see Constants#FRAGMENT_ATTACHMENT_ALWAYS
- * @see Constants#FRAGMENT_ATTACHMENT_RESOLVETIME
- * @see Constants#FRAGMENT_ATTACHMENT_NEVER
+ * @see #BUNDLE_SYMBOLICNAME
+ * @see #FRAGMENT_ATTACHMENT_ALWAYS
+ * @see #FRAGMENT_ATTACHMENT_RESOLVETIME
+ * @see #FRAGMENT_ATTACHMENT_NEVER
* @since 1.3
*/
public final static String FRAGMENT_ATTACHMENT_DIRECTIVE = "fragment-attachment";
/**
- * Manifest header directive value (named "always") 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).
+ * 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).
*
* <p>
* The directive value is encoded in the Bundle-SymbolicName manifest header
@@ -668,17 +370,16 @@
* Bundle-SymbolicName: com.acme.module.test; fragment-attachment:="always"
* </pre>
*
- * @see Constants#FRAGMENT_ATTACHMENT_DIRECTIVE
+ * @see #FRAGMENT_ATTACHMENT_DIRECTIVE
* @since 1.3
*/
public final static String FRAGMENT_ATTACHMENT_ALWAYS = "always";
/**
- * Manifest header directive value (named "resolve-time")
- * 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.
+ * 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.
*
* <p>
* The directive value is encoded in the Bundle-SymbolicName manifest header
@@ -688,16 +389,15 @@
* Bundle-SymbolicName: com.acme.module.test; fragment-attachment:="resolve-time"
* </pre>
*
- * @see Constants#FRAGMENT_ATTACHMENT_DIRECTIVE
+ * @see #FRAGMENT_ATTACHMENT_DIRECTIVE
* @since 1.3
*/
public final static String FRAGMENT_ATTACHMENT_RESOLVETIME = "resolve-time";
/**
- * Manifest header directive value (named "never") 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.
+ * 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.
*
* <p>
* The directive value is encoded in the Bundle-SymbolicName manifest header
@@ -707,14 +407,15 @@
* Bundle-SymbolicName: com.acme.module.test; fragment-attachment:="never"
* </pre>
*
- * @see Constants#FRAGMENT_ATTACHMENT_DIRECTIVE
+ * @see #FRAGMENT_ATTACHMENT_DIRECTIVE
* @since 1.3
*/
public final static String FRAGMENT_ATTACHMENT_NEVER = "never";
/**
- * Manifest header (named "Bundle-Localization") identifying the
- * base name of the bundle's localization entries.
+ * Manifest header identifying the base name of the bundle's localization
+ * entries.
+ *
* <p>
* The attribute value may be retrieved from the <code>Dictionary</code>
* object returned by the <code>Bundle.getHeaders</code> method.
@@ -733,8 +434,8 @@
public final static String BUNDLE_LOCALIZATION_DEFAULT_BASENAME = "OSGI-INF/l10n/bundle";
/**
- * Manifest header (named "Require-Bundle") identifying the
- * symbolic names of other bundles required by the bundle.
+ * Manifest header identifying the symbolic names of other bundles required
+ * by the bundle.
*
* <p>
* The attribute value may be retrieved from the <code>Dictionary</code>
@@ -745,9 +446,10 @@
public final static String REQUIRE_BUNDLE = "Require-Bundle";
/**
- * Manifest header attribute (named "bundle-version") identifying
- * a range of versions for a bundle specified in the Require-Bundle or
- * Fragment-Host manifest headers. The default value is <code>0.0.0</code>.
+ * Manifest header attribute identifying a range of versions for a bundle
+ * specified in the <code>Require-Bundle</code> or
+ * <code>Fragment-Host</code> manifest headers. The default value is
+ * <code>0.0.0</code>.
*
* <p>
* The attribute value is encoded in the Require-Bundle manifest header
@@ -764,13 +466,14 @@
* 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
*/
public static final String BUNDLE_VERSION_ATTRIBUTE = "bundle-version";
/**
- * Manifest header (named "Fragment-Host") identifying the
- * symbolic name of another bundle for which that the bundle is a fragment.
+ * Manifest header identifying the symbolic name of another bundle for which
+ * that the bundle is a fragment.
*
* <p>
* The attribute value may be retrieved from the <code>Dictionary</code>
@@ -781,8 +484,8 @@
public final static String FRAGMENT_HOST = "Fragment-Host";
/**
- * Manifest header attribute (named "selection-filter") is used
- * for selection by filtering based upon system properties.
+ * Manifest header attribute is used for selection by filtering based upon
+ * system properties.
*
* <p>
* The attribute value is encoded in manifest headers like:
@@ -791,19 +494,19 @@
* Bundle-NativeCode: libgtk.so; selection-filter="(ws=gtk)"; ...
* </pre>
*
+ * @see #BUNDLE_NATIVECODE
* @since 1.3
*/
public final static String SELECTION_FILTER_ATTRIBUTE = "selection-filter";
/**
- * Manifest header (named "Bundle-ManifestVersion") 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 R4, or later, syntax must specify a
- * bundle manifest version.
+ * 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.
* <p>
- * The bundle manifest version defined by OSGi R4 or, more specifically, by
- * V1.3 of the OSGi Framework Specification is "2".
+ * The bundle manifest version defined by OSGi Release 4 or, more
+ * specifically, by version 1.3 of the OSGi Core Specification is "2".
*
* <p>
* The attribute value may be retrieved from the <code>Dictionary</code>
@@ -814,9 +517,8 @@
public final static String BUNDLE_MANIFESTVERSION = "Bundle-ManifestVersion";
/**
- * Manifest header attribute (named "version") identifying the
- * version of a package specified in the Export-Package or Import-Package
- * manifest header.
+ * Manifest header attribute identifying the version of a package specified
+ * in the Export-Package or Import-Package manifest header.
*
* <p>
* The attribute value is encoded in the Export-Package or Import-Package
@@ -826,14 +528,15 @@
* Import-Package: org.osgi.framework; version="1.1"
* </pre>
*
+ * @see #EXPORT_PACKAGE
+ * @see #IMPORT_PACKAGE
* @since 1.3
*/
public final static String VERSION_ATTRIBUTE = "version";
/**
- * Manifest header attribute (named "bundle-symbolic-name")
- * identifying the symbolic name of a bundle that exports a package
- * specified in the Import-Package manifest header.
+ * Manifest header attribute identifying the symbolic name of a bundle that
+ * exports a package specified in the Import-Package manifest header.
*
* <p>
* The attribute value is encoded in the Import-Package manifest header
@@ -843,13 +546,15 @@
* Import-Package: org.osgi.framework; bundle-symbolic-name="com.acme.module.test"
* </pre>
*
+ * @see #IMPORT_PACKAGE
* @since 1.3
*/
public final static String BUNDLE_SYMBOLICNAME_ATTRIBUTE = "bundle-symbolic-name";
/**
- * Manifest header directive (named "resolution") identifying the
- * resolution type in the Import-Package or Require-Bundle manifest header.
+ * Manifest header directive identifying the resolution type in the
+ * Import-Package or Require-Bundle manifest header. The default value is
+ * {@link #RESOLUTION_MANDATORY mandatory}.
*
* <p>
* The directive value is encoded in the Import-Package or Require-Bundle
@@ -860,18 +565,19 @@
* Require-Bundle: com.acme.module.test; resolution:="optional"
* </pre>
*
- * @see Constants#RESOLUTION_MANDATORY
- * @see Constants#RESOLUTION_OPTIONAL
+ * @see #IMPORT_PACKAGE
+ * @see #REQUIRE_BUNDLE
+ * @see #RESOLUTION_MANDATORY
+ * @see #RESOLUTION_OPTIONAL
* @since 1.3
*/
public final static String RESOLUTION_DIRECTIVE = "resolution";
/**
- * Manifest header directive value (named "mandatory") identifying
- * a mandatory resolution type. A mandatory resolution type indicates that
- * the import package or require bundle must be resolved when the bundle is
- * resolved. If such an import or require bundle cannot be resolved, the
- * module fails to resolve.
+ * Manifest header directive value identifying a mandatory resolution type.
+ * A mandatory resolution type indicates that the import package or require
+ * bundle must be resolved when the bundle is resolved. If such an import or
+ * require bundle cannot be resolved, the module fails to resolve.
*
* <p>
* The directive value is encoded in the Import-Package or Require-Bundle
@@ -882,18 +588,18 @@
* Require-Bundle: com.acme.module.test; resolution:="manditory"
* </pre>
*
- * @see Constants#RESOLUTION_DIRECTIVE
+ * @see #RESOLUTION_DIRECTIVE
* @since 1.3
*/
public final static String RESOLUTION_MANDATORY = "mandatory";
/**
- * Manifest header directive value (named "optional") identifying
- * an optional resolution type. An optional resolution type indicates that
- * the import or require bundle is optional and the bundle may be resolved
- * without the import or require bundle being resolved. If the import or
- * require bundle is not resolved when the bundle is resolved, the import or
- * require bundle may not be resolved before the bundle is refreshed.
+ * Manifest header directive value identifying an optional resolution type.
+ * An optional resolution type indicates that the import or require bundle
+ * is optional and the bundle may be resolved without the import or require
+ * bundle being resolved. If the import or require bundle is not resolved
+ * when the bundle is resolved, the import or require bundle may not be
+ * resolved before the bundle is refreshed.
*
* <p>
* The directive value is encoded in the Import-Package or Require-Bundle
@@ -904,14 +610,14 @@
* Require-Bundle: com.acme.module.test; resolution:="optional"
* </pre>
*
- * @see Constants#RESOLUTION_DIRECTIVE
+ * @see #RESOLUTION_DIRECTIVE
* @since 1.3
*/
public final static String RESOLUTION_OPTIONAL = "optional";
/**
- * Manifest header directive (named "uses") identifying a list of
- * packages that an exported package uses.
+ * Manifest header directive identifying a list of packages that an exported
+ * package uses.
*
* <p>
* The directive value is encoded in the Export-Package manifest header
@@ -921,20 +627,23 @@
* Export-Package: org.osgi.util.tracker; uses:="org.osgi.framework"
* </pre>
*
+ * @see #EXPORT_PACKAGE
* @since 1.3
*/
public final static String USES_DIRECTIVE = "uses";
/**
- * Manifest header directive (named "include").
+ * Manifest header directive identifying a list of classes to include in the
+ * exported package.
+ *
* <p>
- * This directive is used by the Import-Package manifest header to identify
+ * 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 Import-Package manifest
+ * exported. The directive value is encoded in the Export-Package manifest
* header like:
*
* <pre>
- * Import-Package: org.osgi.framework; include:="MyClass*"
+ * Export-Package: org.osgi.framework; include:="MyClass*"
* </pre>
*
* <p>
@@ -947,12 +656,15 @@
* Bundle-ActivationPolicy: lazy; include:="org.osgi.framework"
* </pre>
*
+ * @see #EXPORT_PACKAGE
+ * @see #BUNDLE_ACTIVATIONPOLICY
* @since 1.3
*/
public final static String INCLUDE_DIRECTIVE = "include";
/**
- * Manifest header directive (named "exclude").
+ * Manifest header directive identifying a list of classes to exclude in the
+ * exported package..
* <p>
* 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
@@ -973,14 +685,16 @@
* Bundle-ActivationPolicy: lazy; exclude:="org.osgi.framework"
* </pre>
*
+ * @see #EXPORT_PACKAGE
+ * @see #BUNDLE_ACTIVATIONPOLICY
* @since 1.3
*/
public final static String EXCLUDE_DIRECTIVE = "exclude";
/**
- * Manifest header directive (named "mandatory") identifying names
- * of matching attributes which must be specified by matching Import-Package
- * statements in the Export-Package manifest header.
+ * Manifest header directive identifying names of matching attributes which
+ * must be specified by matching Import-Package statements in the
+ * Export-Package manifest header.
*
* <p>
* The directive value is encoded in the Export-Package manifest header
@@ -990,13 +704,15 @@
* Export-Package: org.osgi.framework; mandatory:="bundle-symbolic-name"
* </pre>
*
+ * @see #EXPORT_PACKAGE
* @since 1.3
*/
public final static String MANDATORY_DIRECTIVE = "mandatory";
/**
- * Manifest header directive (named "visibility") identifying the
- * visibility of a required bundle in the Require-Bundle manifest header.
+ * Manifest header directive identifying the visibility of a required bundle
+ * in the Require-Bundle manifest header. The default value is
+ * {@link #VISIBILITY_PRIVATE private}.
*
* <p>
* The directive value is encoded in the Require-Bundle manifest header
@@ -1006,17 +722,18 @@
* Require-Bundle: com.acme.module.test; visibility:="reexport"
* </pre>
*
- * @see Constants#VISIBILITY_PRIVATE
- * @see Constants#VISIBILITY_REEXPORT
+ * @see #REQUIRE_BUNDLE
+ * @see #VISIBILITY_PRIVATE
+ * @see #VISIBILITY_REEXPORT
* @since 1.3
*/
public final static String VISIBILITY_DIRECTIVE = "visibility";
/**
- * Manifest header directive value (named "private") 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.
+ * 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.
*
* <p>
* The directive value is encoded in the Require-Bundle manifest header
@@ -1026,17 +743,17 @@
* Require-Bundle: com.acme.module.test; visibility:="private"
* </pre>
*
- * @see Constants#VISIBILITY_DIRECTIVE
+ * @see #VISIBILITY_DIRECTIVE
* @since 1.3
*/
public final static String VISIBILITY_PRIVATE = "private";
/**
- * Manifest header directive value (named "reexport") 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.
+ * 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.
*
* <p>
* The directive value is encoded in the Require-Bundle manifest header
@@ -1046,13 +763,13 @@
* Require-Bundle: com.acme.module.test; visibility:="reexport"
* </pre>
*
- * @see Constants#VISIBILITY_DIRECTIVE
+ * @see #VISIBILITY_DIRECTIVE
* @since 1.3
*/
public final static String VISIBILITY_REEXPORT = "reexport";
+
/**
- * Manifest header directive (named "extension") identifying the
- * type of the extension fragment.
+ * Manifest header directive identifying the type of the extension fragment.
*
* <p>
* The directive value is encoded in the Fragment-Host manifest header like:
@@ -1061,17 +778,17 @@
* Fragment-Host: system.bundle; extension:="framework"
* </pre>
*
- * @see Constants#EXTENSION_FRAMEWORK
- * @see Constants#EXTENSION_BOOTCLASSPATH
+ * @see #FRAGMENT_HOST
+ * @see #EXTENSION_FRAMEWORK
+ * @see #EXTENSION_BOOTCLASSPATH
* @since 1.3
*/
public final static String EXTENSION_DIRECTIVE = "extension";
/**
- * Manifest header directive value (named "framework") 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.
+ * 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.
*
* <p>
* The directive value is encoded in the Fragment-Host manifest header like:
@@ -1080,16 +797,15 @@
* Fragment-Host: system.bundle; extension:="framework"
* </pre>
*
- * @see Constants#EXTENSION_DIRECTIVE
+ * @see #EXTENSION_DIRECTIVE
* @since 1.3
*/
public final static String EXTENSION_FRAMEWORK = "framework";
/**
- * Manifest header directive value (named "bootclasspath")
- * 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.
+ * 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.
*
* <p>
* The directive value is encoded in the Fragment-Host manifest header like:
@@ -1098,34 +814,33 @@
* Fragment-Host: system.bundle; extension:="bootclasspath"
* </pre>
*
- * @see Constants#EXTENSION_DIRECTIVE
+ * @see #EXTENSION_DIRECTIVE
* @since 1.3
*/
public final static String EXTENSION_BOOTCLASSPATH = "bootclasspath";
/**
- * Manifest header (named "Bundle-ActivationPolicy") identifying
- * the bundle's activation policy.
+ * Manifest header identifying the bundle's activation policy.
* <p>
* The attribute value may be retrieved from the <code>Dictionary</code>
* object returned by the <code>Bundle.getHeaders</code> method.
*
* @since 1.4
- * @see Constants#ACTIVATION_LAZY
- * @see Constants#INCLUDE_DIRECTIVE
- * @see Constants#EXCLUDE_DIRECTIVE
+ * @see #ACTIVATION_LAZY
+ * @see #INCLUDE_DIRECTIVE
+ * @see #EXCLUDE_DIRECTIVE
*/
public final static String BUNDLE_ACTIVATIONPOLICY = "Bundle-ActivationPolicy";
/**
- * Bundle activation policy (named "lazy") declaring the bundle
- * must be activated when the first class load is made from the bundle.
+ * Bundle activation policy declaring the bundle must be activated when the
+ * first class load is made from the bundle.
* <p>
* 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 requestor.
+ * before the class is returned to the requester.
* <p>
* The activation policy value is specified as in the
* Bundle-ActivationPolicy manifest header like:
@@ -1134,7 +849,7 @@
* Bundle-ActivationPolicy: lazy
* </pre>
*
- * @see Constants#BUNDLE_ACTIVATIONPOLICY
+ * @see #BUNDLE_ACTIVATIONPOLICY
* @see Bundle#start(int)
* @see Bundle#START_ACTIVATION_POLICY
* @since 1.4
@@ -1142,26 +857,218 @@
public final static String ACTIVATION_LAZY = "lazy";
/**
- * Specifies the type of security manager the framework must use. If not
- * specified then the framework will not set the VM security manager. The
- * following types are defined:
- * <ul>
- * <li> osgi - Enables a security manager that supports all security aspects
- * of the OSGi R4 specification (including postponed conditions).</li>
- * </ul>
+ * Framework environment property identifying the Framework version.
*
+ * <p>
+ * The value of this property may be retrieved by calling the
+ * <code>BundleContext.getProperty</code> method.
+ */
+ public static final String FRAMEWORK_VERSION = "org.osgi.framework.version";
+
+ /**
+ * Framework environment property identifying the Framework implementation
+ * vendor.
+ *
+ * <p>
+ * The value of this property may be retrieved by calling the
+ * <code>BundleContext.getProperty</code> method.
+ */
+ public static final String FRAMEWORK_VENDOR = "org.osgi.framework.vendor";
+
+ /**
+ * Framework environment property identifying the Framework implementation
+ * language (see ISO 639 for possible values).
+ *
+ * <p>
+ * The value of this property may be retrieved by calling the
+ * <code>BundleContext.getProperty</code> method.
+ */
+ public static final String FRAMEWORK_LANGUAGE = "org.osgi.framework.language";
+
+ /**
+ * Framework environment property identifying the Framework host-computer's
+ * operating system.
+ *
+ * <p>
+ * The value of this property may be retrieved by calling the
+ * <code>BundleContext.getProperty</code> method.
+ */
+ public static final String FRAMEWORK_OS_NAME = "org.osgi.framework.os.name";
+
+ /**
+ * Framework environment property identifying the Framework host-computer's
+ * operating system version number.
+ *
+ * <p>
+ * The value of this property may be retrieved by calling the
+ * <code>BundleContext.getProperty</code> method.
+ */
+ public static final String FRAMEWORK_OS_VERSION = "org.osgi.framework.os.version";
+
+ /**
+ * Framework environment property identifying the Framework host-computer's
+ * processor name.
+ *
+ * <p>
+ * The value of this property may be retrieved by calling the
+ * <code>BundleContext.getProperty</code> method.
+ */
+ public static final String FRAMEWORK_PROCESSOR = "org.osgi.framework.processor";
+
+ /**
+ * Framework environment property identifying execution environments
+ * provided by the Framework.
+ *
+ * <p>
+ * The value of this property may be retrieved by calling the
+ * <code>BundleContext.getProperty</code> method.
+ *
+ * @since 1.2
+ */
+ public static final String FRAMEWORK_EXECUTIONENVIRONMENT = "org.osgi.framework.executionenvironment";
+
+ /**
+ * Framework environment property identifying packages for which the
+ * Framework must delegate class loading to the parent class loader of the
+ * bundle.
+ *
+ * <p>
+ * The value of this property may be retrieved by calling the
+ * <code>BundleContext.getProperty</code> method.
+ *
+ * @see #FRAMEWORK_BUNDLE_PARENT
+ * @since 1.3
+ */
+ public static final String FRAMEWORK_BOOTDELEGATION = "org.osgi.framework.bootdelegation";
+
+ /**
+ * Framework environment property identifying packages which the system
+ * bundle must export.
+ *
+ * <p>
+ * If this property is not specified then the framework must calculate a
+ * reasonable default value for the current execution environment.
+ *
+ * <p>
+ * The value of this property may be retrieved by calling the
+ * <code>BundleContext.getProperty</code> method.
+ *
+ * @since 1.3
+ */
+ public static final String FRAMEWORK_SYSTEMPACKAGES = "org.osgi.framework.system.packages";
+
+ /**
+ * Framework environment property identifying extra packages which the
+ * system bundle must export from the current execution environment.
+ *
+ * <p>
+ * This property is useful for configuring extra system packages in addition
+ * to the system packages calculated by the framework.
+ *
+ * <p>
+ * The value of this property may be retrieved by calling the
+ * <code>BundleContext.getProperty</code> method.
+ *
+ * @see #FRAMEWORK_SYSTEMPACKAGES
+ * @since 1.5
+ */
+ public static final String FRAMEWORK_SYSTEMPACKAGES_EXTRA = "org.osgi.framework.system.packages.extra";
+
+ /**
+ * Framework environment property identifying whether the Framework supports
+ * framework extension bundles.
+ *
+ * <p>
+ * As of version 1.4, the value of this property must be <code>true</code>.
+ * The Framework must support framework extension bundles.
+ *
+ * <p>
+ * The value of this property may be retrieved by calling the
+ * <code>BundleContext.getProperty</code> method.
+ *
+ * @since 1.3
+ */
+ public static final String SUPPORTS_FRAMEWORK_EXTENSION = "org.osgi.supports.framework.extension";
+
+ /**
+ * Framework environment property identifying whether the Framework supports
+ * bootclasspath extension bundles.
+ *
+ * <p>
+ * If the value of this property is <code>true</code>, then the Framework
+ * supports bootclasspath extension bundles. The default value is
+ * <code>false</code>.
+ * <p>
+ * The value of this property may be retrieved by calling the
+ * <code>BundleContext.getProperty</code> method.
+ *
+ * @since 1.3
+ */
+ public static final String SUPPORTS_BOOTCLASSPATH_EXTENSION = "org.osgi.supports.bootclasspath.extension";
+
+ /**
+ * Framework environment property identifying whether the Framework supports
+ * fragment bundles.
+ *
+ * <p>
+ * As of version 1.4, the value of this property must be <code>true</code>.
+ * The Framework must support fragment bundles.
+ * <p>
+ * The value of this property may be retrieved by calling the
+ * <code>BundleContext.getProperty</code> method.
+ *
+ * @since 1.3
+ */
+ public static final 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.
+ *
+ * <p>
+ * As of version 1.4, the value of this property must be <code>true</code>.
+ * The Framework must support the <code>Require-Bundle</code> manifest
+ * header.
+ * <p>
+ * The value of this property may be retrieved by calling the
+ * <code>BundleContext.getProperty</code> method.
+ *
+ * @since 1.3
+ */
+ public static final String SUPPORTS_FRAMEWORK_REQUIREBUNDLE = "org.osgi.supports.framework.requirebundle";
+
+ /**
+ * Specifies 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
*/
public final static String FRAMEWORK_SECURITY = "org.osgi.framework.security";
/**
- * 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.
+ * Specifies that a security manager that supports all security aspects of
+ * the OSGi core specification including postponed conditions must be
+ * installed.
+ *
+ * <p>
+ * If this value is specified and there is a security manager already
+ * installed, then a <code>SecurityException</code> must be thrown when the
+ * Framework is initialized.
+ *
+ * @see #FRAMEWORK_SECURITY
+ * @since 1.5
+ */
+ public final static String FRAMEWORK_SECURITY_OSGI = "osgi";
+
+ /**
+ * Specified 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.
* <p>
* If this property is not set, the framework should use a reasonable
* platform default for the persistent storage area.
@@ -1171,43 +1078,35 @@
public final static String FRAMEWORK_STORAGE = "org.osgi.framework.storage";
/**
- * Specifies if and when the storage area for the framework should be
- * cleaned. Default value is {@link #FRAMEWORK_STORAGE_CLEAN_NONE none}
- * @see #FRAMEWORK_STORAGE_CLEAN_NONE none
- * @see #FRAMEWORK_STORAGE_CLEAN_ONFIRSTINIT onFirstInit
+ * Specifies 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
*/
public final static String FRAMEWORK_STORAGE_CLEAN = "org.osgi.framework.storage.clean";
/**
- * A framework configuration property value for
- * {@link #FRAMEWORK_STORAGE_CLEAN org.osgi.framework.storage.clean} (named "onFirstInit") identifying
- * that the framework storage area will be cleaned before the system bundle
- * is initialized for the first time. Subsequent inits, starts or updates of the
- * system bundle will not result in cleaning the framework storage area.
+ * 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
*/
public final static String FRAMEWORK_STORAGE_CLEAN_ONFIRSTINIT = "onFirstInit";
/**
- * A framework configuration property value for
- * {@link #FRAMEWORK_STORAGE_CLEAN org.osgi.framework.storage.clean} (named "none") identifying
- * that the framework storage area should not be cleaned.
- *
- * @since 1.5
- */
- public final static String FRAMEWORK_STORAGE_CLEAN_NONE = "none";
-
- /**
- * A comma separated list of additional library file extensions that must be
- * searched for when a bundle's class loader is searching for native
- * libraries. If not set then only the library name returned by
- * <code>System.mapLibraryName(String)</code> 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</code> and <code>.so</code>, but System.mapLibraryName(String)
- * will only return names with the <code>.a</code> extension.
+ * Specifies 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)</code> 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</code> and <code>.so</code>, but
+ * <code>System.mapLibraryName(String)</code> will only return names with
+ * the <code>.a</code> extension.
*
* @since 1.5
*/
@@ -1215,34 +1114,34 @@
/**
* Specifies an optional OS specific command to set file permissions on
- * extracted native code. On some operating systems it is required that
+ * 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 you could have
- * the following value:
+ * to specify the command. For example, on a UNIX style OS, this property
+ * could have the following value.
*
* <pre>
- * org.osgi.framework.command.execpermission = "chmod +rx ${abspath}"
+ * chmod +rx ${abspath}
* </pre>
*
- * The ${abspath} is used to substitute the actual file path by the
- * framework.
+ * The <code>${abspath}</code> is used by the framework to substitute the
+ * actual absolute file path.
*
* @since 1.5
*/
public final static String FRAMEWORK_EXECPERMISSION = "org.osgi.framework.command.execpermission";
/**
- * This property is used to configure trust repositories for the
- * framework. The value is a <code>java.io.File#pathSeparator</code> separated list of
- * valid file paths in the file system to files that contain key stores of
- * type JKS. 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
+ * Specifies the trust repositories used by the framework. The value is a
+ * <code>java.io.File.pathSeparator</code> separated list of valid file
+ * paths to files that contain key stores of type <code>JKS</code>. 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.
* <p>
* 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
+ * 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
@@ -1263,5 +1162,151 @@
* @see "Core Specification, section 8.2.3."
* @since 1.5
*/
- public final static String FRAMEWORK_BEGINNING_STARTLEVEL = "org.osgi.framework.startlevel";
-}
\ No newline at end of file
+ public final static String FRAMEWORK_BEGINNING_STARTLEVEL = "org.osgi.framework.startlevel.beginning";
+
+ /**
+ * Specifies 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
+ */
+ public final static 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
+ */
+ public final static 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
+ */
+ public final static 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
+ */
+ public final static 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
+ */
+ public final static 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[]</code>.
+ *
+ * <p>
+ * This property is set by the Framework when a service is registered.
+ */
+ public static final String OBJECTCLASS = "objectClass";
+
+ /**
+ * Service property identifying a service's registration number. The value
+ * of this property must be of type <code>Long</code>.
+ *
+ * <p>
+ * The value of this property is assigned by the Framework when a service is
+ * registered. The Framework assigns a unique value that is larger than all
+ * previously assigned values since the Framework was started. These values
+ * are NOT persistent across restarts of the Framework.
+ */
+ public static final String SERVICE_ID = "service.id";
+
+ /**
+ * Service property identifying a service's persistent identifier.
+ *
+ * <p>
+ * This property may be supplied in the <code>properties</code>
+ * <code>Dictionary</code> object passed to the
+ * <code>BundleContext.registerService</code> method. The value of this
+ * property must be of type <code>String</code>, <code>String[]</code>, or
+ * <code>Collection</code> of <code>String</code>.
+ *
+ * <p>
+ * A service's persistent identifier uniquely identifies the service and
+ * persists across multiple Framework invocations.
+ *
+ * <p>
+ * 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.
+ */
+ public static final String SERVICE_PID = "service.pid";
+
+ /**
+ * Service property identifying a service's ranking number.
+ *
+ * <p>
+ * This property may be supplied in the <code>properties
+ * Dictionary</code> object passed to the
+ * <code>BundleContext.registerService</code> method. The value of this
+ * property must be of type <code>Integer</code>.
+ *
+ * <p>
+ * The service ranking is used by the Framework to determine the <i>natural
+ * order</i> of services, see {@link ServiceReference#compareTo(Object)},
+ * and the <i>default</i> service to be returned from a call to the
+ * {@link BundleContext#getServiceReference} method.
+ *
+ * <p>
+ * The default ranking is zero (0). A service with a ranking of
+ * <code>Integer.MAX_VALUE</code> is very likely to be returned as the
+ * default service, whereas a service with a ranking of
+ * <code>Integer.MIN_VALUE</code> is very unlikely to be returned.
+ *
+ * <p>
+ * If the supplied property value is not of type <code>Integer</code>, it is
+ * deemed to have a ranking value of zero.
+ */
+ public static final String SERVICE_RANKING = "service.ranking";
+
+ /**
+ * Service property identifying a service's vendor.
+ *
+ * <p>
+ * This property may be supplied in the properties <code>Dictionary</code>
+ * object passed to the <code>BundleContext.registerService</code> method.
+ */
+ public static final String SERVICE_VENDOR = "service.vendor";
+
+ /**
+ * Service property identifying a service's description.
+ *
+ * <p>
+ * This property may be supplied in the properties <code>Dictionary</code>
+ * object passed to the <code>BundleContext.registerService</code> method.
+ */
+ public static final String SERVICE_DESCRIPTION = "service.description";
+}
diff --git a/framework/src/main/java/org/osgi/framework/hooks/service/EventHook.java b/framework/src/main/java/org/osgi/framework/hooks/service/EventHook.java
index 7db29b3..d2839aa 100644
--- a/framework/src/main/java/org/osgi/framework/hooks/service/EventHook.java
+++ b/framework/src/main/java/org/osgi/framework/hooks/service/EventHook.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) OSGi Alliance (2000, 2009). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2008 2009). 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.
@@ -13,12 +13,42 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.osgi.framework.hooks.service;
import java.util.Collection;
import org.osgi.framework.ServiceEvent;
+/**
+ * OSGi Framework Service Event Hook Service.
+ *
+ * <p>
+ * Bundles registering this service will be called during framework service
+ * (register, modify, and unregister service) operations.
+ *
+ * @ThreadSafe
+ * @version $Revision: 6211 $
+ */
+
public interface EventHook {
- void event(ServiceEvent event, Collection/* <? extends BundleContext> */contexts);
+ /**
+ * Event hook method. This method is called prior to service event delivery
+ * when a publishing bundle registers, modifies or unregisters a service.
+ * This method can filter the bundles which receive the event.
+ *
+ * @param event The service event to be delivered.
+ * @param contexts A <code>Collection</code> of Bundle Contexts for bundles
+ * which have listeners to which the specified event will be
+ * delivered. The implementation of this method may remove bundle
+ * contexts from the collection to prevent the event from being
+ * delivered to the associated bundles. The collection supports all
+ * the optional <code>Collection</code> operations except
+ * <code>add</code> and <code>addAll</code>. Attempting to add to the
+ * collection will result in an
+ * <code>UnsupportedOperationException</code>. The collection is not
+ * synchronized.
+ */
+ void event(ServiceEvent event,
+ Collection/* <? extends BundleContext> */contexts);
}
diff --git a/framework/src/main/java/org/osgi/framework/hooks/service/FindHook.java b/framework/src/main/java/org/osgi/framework/hooks/service/FindHook.java
index 2d3af3b..af6ac84 100644
--- a/framework/src/main/java/org/osgi/framework/hooks/service/FindHook.java
+++ b/framework/src/main/java/org/osgi/framework/hooks/service/FindHook.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) OSGi Alliance (2000, 2009). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2008 2009). 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.
@@ -13,16 +13,51 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.osgi.framework.hooks.service;
import java.util.Collection;
import org.osgi.framework.BundleContext;
+/**
+ * OSGi Framework Service Find Hook Service.
+ *
+ * <p>
+ * Bundles registering this service will be called during framework service find
+ * (get service references) operations.
+ *
+ * @ThreadSafe
+ * @version $Revision: 6211 $
+ */
+
public interface FindHook {
- void find(BundleContext context,
- String name,
- String filter,
- boolean allServices,
- Collection /* <? extends ServiceReference> */ references);
+ /**
+ * Find hook method. This method is called during the service find operation
+ * (for example, {@link BundleContext#getServiceReferences(String, String)}
+ * ). This method can filter the result of the find operation.
+ *
+ * @param context The bundle context of the bundle performing the find
+ * operation.
+ * @param name The class name of the services to find or <code>null</code>
+ * to find all services.
+ * @param filter The filter criteria of the services to find or
+ * <code>null</code> for no filter criteria.
+ * @param allServices <code>true</code> if the find operation is the result
+ * of a call to
+ * {@link BundleContext#getAllServiceReferences(String, String)}
+ * @param references A <code>Collection</code> of Service References to be
+ * returned as a result of the find operation. The implementation of
+ * this method may remove service references from the collection to
+ * prevent the references from being returned to the bundle
+ * performing the find operation. The collection supports all the
+ * optional <code>Collection</code> operations except
+ * <code>add</code> and <code>addAll</code>. Attempting to add to the
+ * collection will result in an
+ * <code>UnsupportedOperationException</code>. The collection is not
+ * synchronized.
+ */
+ void find(BundleContext context, String name, String filter,
+ boolean allServices,
+ Collection/* <? extends ServiceReference> */references);
}
diff --git a/framework/src/main/java/org/osgi/framework/hooks/service/ListenerHook.java b/framework/src/main/java/org/osgi/framework/hooks/service/ListenerHook.java
index 62e2a75..cbda320 100644
--- a/framework/src/main/java/org/osgi/framework/hooks/service/ListenerHook.java
+++ b/framework/src/main/java/org/osgi/framework/hooks/service/ListenerHook.java
@@ -1,37 +1,134 @@
/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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
+ * Copyright (c) OSGi Alliance (2008, 2009). 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
+ * 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.
+ * 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.hooks.service;
import java.util.Collection;
import org.osgi.framework.BundleContext;
-public interface ListenerHook
-{
- public static interface ListenerInfo
- {
- BundleContext getBundleContext();
+/**
+ * OSGi Framework Service Listener Hook Service.
+ *
+ * <p>
+ * Bundles registering this service will be called during service listener
+ * addition and removal.
+ *
+ * @ThreadSafe
+ * @version $Revision: 6405 $
+ */
- String getFilter();
- }
+public interface ListenerHook {
+ /**
+ * Added listeners hook method. This method is called to provide the hook
+ * implementation with information on newly added service listeners. This
+ * method will be called as service listeners are added while this hook is
+ * registered. Also, immediately after registration of this hook, this
+ * method will be called to provide the current collection of service
+ * listeners which had been added prior to the hook being registered.
+ *
+ * @param listeners A collection of {@link ListenerInfo}s for newly added
+ * service listeners which are now listening to service events.
+ * Attempting to add to or remove from the collection will result in
+ * an <code>UnsupportedOperationException</code>. The collection is
+ * not synchronized.
+ */
+ void added(Collection/* <? extends ListenerInfo> */listeners);
- void added(Collection /* <? extends ListenerInfo> */ listeners);
+ /**
+ * Removed listeners hook method. This method is called to provide the hook
+ * implementation with information on newly removed service listeners. This
+ * method will be called as service listeners are removed while this hook is
+ * registered.
+ *
+ * @param listeners A collection of {@link ListenerInfo}s for newly removed
+ * service listeners which are no longer listening to service events.
+ * Attempting to add to or remove from the collection will result in
+ * an <code>UnsupportedOperationException</code>. The collection is
+ * not synchronized.
+ */
+ void removed(Collection/* <? extends ListenerInfo> */listeners);
- void removed(Collection /* <? extends ListenerInfo> */ listener);
-}
\ No newline at end of file
+ /**
+ * Information about a Service Listener. This interface describes the bundle
+ * which added the Service Listener and the filter with which it was added.
+ *
+ * @ThreadSafe
+ */
+ public interface ListenerInfo {
+ /**
+ * Return the context of the bundle which added the listener.
+ *
+ * @return The context of the bundle which added the listener.
+ */
+ BundleContext getBundleContext();
+
+ /**
+ * Return the filter string with which the listener was added.
+ *
+ * @return The filter string with which the listener was added. This may
+ * be <code>null</code> if the listener was added without a
+ * filter.
+ */
+ String getFilter();
+
+ /**
+ * Return the state of the listener for this addition and removal life
+ * cycle. Initially this method will return <code>false</code>
+ * indicating the listener has been added but has not been removed.
+ * After the listener has been removed, this method must always return
+ * <code>true</code>.
+ *
+ * <p>
+ * There is an extremely rare case in which removed notification to
+ * {@link ListenerHook}s can be made before added notification if two
+ * threads are racing to add and remove the same service listener.
+ * Because {@link ListenerHook}s are called synchronously during service
+ * listener addition and removal, the Framework cannot guarantee
+ * in-order delivery of added and removed notification for a given
+ * service listener. This method can be used to detect this rare
+ * occurrence.
+ *
+ * @return <code>false</code> if the listener has not been been removed,
+ * <code>true</code> otherwise.
+ */
+ boolean isRemoved();
+
+ /**
+ * Compares this <code>ListenerInfo</code> to another
+ * <code>ListenerInfo</code>. Two <code>ListenerInfo</code>s are equals
+ * if they refer to the same listener for a given addition and removal
+ * life cycle. If the same listener is added again, it must have a
+ * different <code>ListenerInfo</code> which is not equal to this
+ * <code>ListenerInfo</code>.
+ *
+ * @param obj The object to compare against this
+ * <code>ListenerInfo</code>.
+ * @return <code>true</code> if the other object is a
+ * <code>ListenerInfo</code> object and both objects refer to
+ * the same listener for a given addition and removal life
+ * cycle.
+ */
+ boolean equals(Object obj);
+
+ /**
+ * Returns the hash code for this <code>ListenerInfo</code>.
+ *
+ * @return The hash code of this <code>ListenerInfo</code>.
+ */
+ int hashCode();
+ }
+}
diff --git a/framework/src/main/java/org/osgi/framework/hooks/service/package.html b/framework/src/main/java/org/osgi/framework/hooks/service/package.html
new file mode 100644
index 0000000..46d18ac
--- /dev/null
+++ b/framework/src/main/java/org/osgi/framework/hooks/service/package.html
@@ -0,0 +1,11 @@
+<!-- $Revision: 6211 $ -->
+<BODY>
+<p>Framework Service Hooks Package Version 1.0.
+<p>Bundles wishing to use this package must list the package
+in the Import-Package header of the bundle's manifest.
+For example:
+<pre>
+Import-Package: org.osgi.framework.hooks.service;version="[1.0,2.0)"
+</pre>
+</BODY>
+
diff --git a/framework/src/main/java/org/osgi/framework/hooks/service/packageinfo b/framework/src/main/java/org/osgi/framework/hooks/service/packageinfo
new file mode 100644
index 0000000..7c8de03
--- /dev/null
+++ b/framework/src/main/java/org/osgi/framework/hooks/service/packageinfo
@@ -0,0 +1 @@
+version 1.0
diff --git a/framework/src/main/java/org/osgi/framework/launch/Framework.java b/framework/src/main/java/org/osgi/framework/launch/Framework.java
index 4174e86..f7618aa 100644
--- a/framework/src/main/java/org/osgi/framework/launch/Framework.java
+++ b/framework/src/main/java/org/osgi/framework/launch/Framework.java
@@ -32,7 +32,7 @@
* instance.
*
* @ThreadSafe
- * @version $Revision: 6361 $
+ * @version $Revision: 6542 $
*/
public interface Framework extends Bundle {
@@ -104,8 +104,9 @@
* encountered an error while shutting down or an error has occurred
* which forced the framework to shutdown. </li>
*
- * <li> {@link FrameworkEvent#INFO INFO} - This method has timed out
- * and returned before this Framework has stopped.</li>
+ * <li> {@link FrameworkEvent#WAIT_TIMEDOUT WAIT_TIMEDOUT} - This
+ * method has timed out and returned before this Framework has
+ * stopped.</li>
* </ul>
* @throws InterruptedException If another thread interrupted the current
* thread before or while the current thread was waiting for this