blob: 16a10d80bd6ec7b505aefbea846a2ab6d8a840d1 [file] [log] [blame]
Richard S. Hallc88fca32006-10-18 22:01:22 +00001/*
Richard S. Hallf28d6762009-06-08 19:31:06 +00002 * Copyright (c) OSGi Alliance (2000, 2009). All Rights Reserved.
Richard S. Hallc88fca32006-10-18 22:01:22 +00003 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package org.osgi.framework;
18
19/**
Richard S. Hall53e70d32008-08-01 19:31:32 +000020 * Defines standard names for the OSGi environment system properties, service
21 * properties, and Manifest header attribute keys.
Richard S. Hallc88fca32006-10-18 22:01:22 +000022 *
23 * <p>
24 * The values associated with these keys are of type
Richard S. Hallf28d6762009-06-08 19:31:06 +000025 * <code>String</code>, unless otherwise indicated.
Richard S. Hallc88fca32006-10-18 22:01:22 +000026 *
Richard S. Hallc88fca32006-10-18 22:01:22 +000027 * @since 1.1
Richard S. Hallf28d6762009-06-08 19:31:06 +000028 * @version $Revision: 6552 $
Richard S. Hallc88fca32006-10-18 22:01:22 +000029 */
30
31public interface Constants {
32 /**
33 * Location identifier of the OSGi <i>system bundle </i>, which is defined
34 * to be &quot;System Bundle&quot;.
35 */
36 public static final String SYSTEM_BUNDLE_LOCATION = "System Bundle";
37
38 /**
39 * Alias for the symbolic name of the OSGi <i>system bundle </i>. It is
40 * defined to be &quot;system.bundle&quot;.
41 *
42 * @since 1.3
43 */
44 public static final String SYSTEM_BUNDLE_SYMBOLICNAME = "system.bundle";
45
46 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +000047 * Manifest header identifying the bundle's category.
Richard S. Hallc88fca32006-10-18 22:01:22 +000048 * <p>
49 * The attribute value may be retrieved from the <code>Dictionary</code>
50 * object returned by the <code>Bundle.getHeaders</code> method.
51 */
52 public static final String BUNDLE_CATEGORY = "Bundle-Category";
53
54 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +000055 * Manifest header identifying a list of directories and embedded JAR files,
56 * which are bundle resources used to extend the bundle's classpath.
Richard S. Hallc88fca32006-10-18 22:01:22 +000057 *
58 * <p>
59 * The attribute value may be retrieved from the <code>Dictionary</code>
60 * object returned by the <code>Bundle.getHeaders</code> method.
61 */
62 public static final String BUNDLE_CLASSPATH = "Bundle-ClassPath";
63
64 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +000065 * Manifest header identifying the bundle's copyright information.
Richard S. Hallc88fca32006-10-18 22:01:22 +000066 * <p>
67 * The attribute value may be retrieved from the <code>Dictionary</code>
68 * object returned by the <code>Bundle.getHeaders</code> method.
69 */
70 public static final String BUNDLE_COPYRIGHT = "Bundle-Copyright";
71
72 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +000073 * Manifest header containing a brief description of the bundle's
74 * functionality.
Richard S. Hallc88fca32006-10-18 22:01:22 +000075 * <p>
76 * The attribute value may be retrieved from the <code>Dictionary</code>
77 * object returned by the <code>Bundle.getHeaders</code> method.
78 */
79 public static final String BUNDLE_DESCRIPTION = "Bundle-Description";
80
81 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +000082 * Manifest header identifying the bundle's name.
Richard S. Hallc88fca32006-10-18 22:01:22 +000083 * <p>
84 * The attribute value may be retrieved from the <code>Dictionary</code>
85 * object returned by the <code>Bundle.getHeaders</code> method.
86 */
87 public static final String BUNDLE_NAME = "Bundle-Name";
88
89 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +000090 * Manifest header identifying a number of hardware environments and the
91 * native language code libraries that the bundle is carrying for each of
92 * these environments.
Richard S. Hallc88fca32006-10-18 22:01:22 +000093 *
94 * <p>
95 * The attribute value may be retrieved from the <code>Dictionary</code>
96 * object returned by the <code>Bundle.getHeaders</code> method.
97 */
98 public static final String BUNDLE_NATIVECODE = "Bundle-NativeCode";
99
100 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000101 * Manifest header identifying the packages that the bundle offers to the
102 * Framework for export.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000103 *
104 * <p>
105 * The attribute value may be retrieved from the <code>Dictionary</code>
106 * object returned by the <code>Bundle.getHeaders</code> method.
107 */
108 public static final String EXPORT_PACKAGE = "Export-Package";
109
110 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000111 * Manifest header identifying the fully qualified class names of the
112 * services that the bundle may register (used for informational purposes
113 * only).
Richard S. Hallc88fca32006-10-18 22:01:22 +0000114 *
115 * <p>
116 * The attribute value may be retrieved from the <code>Dictionary</code>
117 * object returned by the <code>Bundle.getHeaders</code> method.
118 *
119 * @deprecated As of 1.2.
120 */
121 public static final String EXPORT_SERVICE = "Export-Service";
122
123 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000124 * Manifest header identifying the packages on which the bundle depends.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000125 *
126 * <p>
127 * The attribute value may be retrieved from the <code>Dictionary</code>
128 * object returned by the <code>Bundle.getHeaders</code> method.
129 */
130 public static final String IMPORT_PACKAGE = "Import-Package";
131
132 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000133 * Manifest header identifying the packages that the bundle may dynamically
134 * import during execution.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000135 *
136 * <p>
137 * The attribute value may be retrieved from the <code>Dictionary</code>
138 * object returned by the <code>Bundle.getHeaders</code> method.
139 *
140 * @since 1.2
141 */
142 public static final String DYNAMICIMPORT_PACKAGE = "DynamicImport-Package";
143
144 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000145 * Manifest header identifying the fully qualified class names of the
146 * services that the bundle requires (used for informational purposes only).
Richard S. Hallc88fca32006-10-18 22:01:22 +0000147 *
148 * <p>
149 * The attribute value may be retrieved from the <code>Dictionary</code>
150 * object returned by the <code>Bundle.getHeaders</code> method.
Richard S. Hall53e70d32008-08-01 19:31:32 +0000151 *
Richard S. Hallc88fca32006-10-18 22:01:22 +0000152 * @deprecated As of 1.2.
153 */
154 public static final String IMPORT_SERVICE = "Import-Service";
155
156 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000157 * Manifest header identifying the bundle's vendor.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000158 *
159 * <p>
160 * The attribute value may be retrieved from the <code>Dictionary</code>
161 * object returned by the <code>Bundle.getHeaders</code> method.
162 */
163 public static final String BUNDLE_VENDOR = "Bundle-Vendor";
164
165 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000166 * Manifest header identifying the bundle's version.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000167 *
168 * <p>
169 * The attribute value may be retrieved from the <code>Dictionary</code>
170 * object returned by the <code>Bundle.getHeaders</code> method.
171 */
172 public static final String BUNDLE_VERSION = "Bundle-Version";
173
174 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000175 * Manifest header identifying the bundle's documentation URL, from which
176 * further information about the bundle may be obtained.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000177 *
178 * <p>
179 * The attribute value may be retrieved from the <code>Dictionary</code>
180 * object returned by the <code>Bundle.getHeaders</code> method.
181 */
182 public static final String BUNDLE_DOCURL = "Bundle-DocURL";
183
184 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000185 * Manifest header identifying the contact address where problems with the
186 * bundle may be reported; for example, an email address.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000187 *
188 * <p>
189 * The attribute value may be retrieved from the <code>Dictionary</code>
190 * object returned by the <code>Bundle.getHeaders</code> method.
191 */
192 public static final String BUNDLE_CONTACTADDRESS = "Bundle-ContactAddress";
193
194 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000195 * Manifest header attribute identifying the bundle's activator class.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000196 *
197 * <p>
198 * If present, this header specifies the name of the bundle resource class
199 * that implements the <code>BundleActivator</code> interface and whose
200 * <code>start</code> and <code>stop</code> methods are called by the
201 * Framework when the bundle is started and stopped, respectively.
202 *
203 * <p>
204 * The attribute value may be retrieved from the <code>Dictionary</code>
205 * object returned by the <code>Bundle.getHeaders</code> method.
206 */
207 public static final String BUNDLE_ACTIVATOR = "Bundle-Activator";
208
209 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000210 * Manifest header identifying the location from which a new bundle version
211 * is obtained during a bundle update operation.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000212 *
213 * <p>
214 * The attribute value may be retrieved from the <code>Dictionary</code>
215 * object returned by the <code>Bundle.getHeaders</code> method.
216 */
217 public static final String BUNDLE_UPDATELOCATION = "Bundle-UpdateLocation";
218
219 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000220 * Manifest header attribute identifying the version of a package specified
221 * in the Export-Package or Import-Package manifest header.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000222 *
Richard S. Hallc88fca32006-10-18 22:01:22 +0000223 * @deprecated As of 1.3. This has been replaced by
224 * {@link #VERSION_ATTRIBUTE}.
225 */
226 public static final String PACKAGE_SPECIFICATION_VERSION = "specification-version";
227
228 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000229 * Manifest header attribute identifying the processor required to run
230 * native bundle code specified in the Bundle-NativeCode manifest header).
Richard S. Hallc88fca32006-10-18 22:01:22 +0000231 *
232 * <p>
233 * The attribute value is encoded in the Bundle-NativeCode manifest header
234 * like:
235 *
236 * <pre>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000237 * Bundle-NativeCode: http.so ; processor=x86 ...
Richard S. Hallc88fca32006-10-18 22:01:22 +0000238 * </pre>
Richard S. Hallf28d6762009-06-08 19:31:06 +0000239 *
240 * @see #BUNDLE_NATIVECODE
Richard S. Hallc88fca32006-10-18 22:01:22 +0000241 */
242 public static final String BUNDLE_NATIVECODE_PROCESSOR = "processor";
243
244 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000245 * Manifest header attribute identifying the operating system required to
246 * run native bundle code specified in the Bundle-NativeCode manifest
247 * header).
Richard S. Hallc88fca32006-10-18 22:01:22 +0000248 * <p>
249 * The attribute value is encoded in the Bundle-NativeCode manifest header
250 * like:
251 *
252 * <pre>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000253 * Bundle-NativeCode: http.so ; osname=Linux ...
Richard S. Hallc88fca32006-10-18 22:01:22 +0000254 * </pre>
Richard S. Hallf28d6762009-06-08 19:31:06 +0000255 *
256 * @see #BUNDLE_NATIVECODE
Richard S. Hallc88fca32006-10-18 22:01:22 +0000257 */
258 public static final String BUNDLE_NATIVECODE_OSNAME = "osname";
259
260 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000261 * Manifest header attribute identifying the operating system version
262 * required to run native bundle code specified in the Bundle-NativeCode
263 * manifest header).
Richard S. Hallc88fca32006-10-18 22:01:22 +0000264 * <p>
265 * The attribute value is encoded in the Bundle-NativeCode manifest header
266 * like:
267 *
268 * <pre>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000269 * Bundle-NativeCode: http.so ; osversion=&quot;2.34&quot; ...
Richard S. Hallc88fca32006-10-18 22:01:22 +0000270 * </pre>
Richard S. Hallf28d6762009-06-08 19:31:06 +0000271 *
272 * @see #BUNDLE_NATIVECODE
Richard S. Hallc88fca32006-10-18 22:01:22 +0000273 */
274 public static final String BUNDLE_NATIVECODE_OSVERSION = "osversion";
275
276 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000277 * Manifest header attribute identifying the language in which the native
278 * bundle code is written specified in the Bundle-NativeCode manifest
279 * header. See ISO 639 for possible values.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000280 * <p>
281 * The attribute value is encoded in the Bundle-NativeCode manifest header
282 * like:
283 *
284 * <pre>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000285 * Bundle-NativeCode: http.so ; language=nl_be ...
Richard S. Hallc88fca32006-10-18 22:01:22 +0000286 * </pre>
Richard S. Hallf28d6762009-06-08 19:31:06 +0000287 *
288 * @see #BUNDLE_NATIVECODE
Richard S. Hallc88fca32006-10-18 22:01:22 +0000289 */
290 public static final String BUNDLE_NATIVECODE_LANGUAGE = "language";
291
292 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000293 * Manifest header identifying the required execution environment for the
294 * bundle. The service platform may run this bundle if any of the execution
295 * environments named in this header matches one of the execution
296 * environments it implements.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000297 *
298 * <p>
299 * The attribute value may be retrieved from the <code>Dictionary</code>
300 * object returned by the <code>Bundle.getHeaders</code> method.
301 *
302 * @since 1.2
303 */
304 public static final String BUNDLE_REQUIREDEXECUTIONENVIRONMENT = "Bundle-RequiredExecutionEnvironment";
305
Richard S. Hallc88fca32006-10-18 22:01:22 +0000306 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000307 * Manifest header identifying the bundle's symbolic name.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000308 *
309 * <p>
Richard S. Hallc88fca32006-10-18 22:01:22 +0000310 * The attribute value may be retrieved from the <code>Dictionary</code>
311 * object returned by the <code>Bundle.getHeaders</code> method.
312 *
313 * @since 1.3
314 */
315 public final static String BUNDLE_SYMBOLICNAME = "Bundle-SymbolicName";
316
317 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000318 * Manifest header directive identifying whether a bundle is a singleton.
319 * The default value is <code>false</code>.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000320 *
321 * <p>
322 * The directive value is encoded in the Bundle-SymbolicName manifest header
323 * like:
324 *
325 * <pre>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000326 * Bundle-SymbolicName: com.acme.module.test; singleton:=true
Richard S. Hallc88fca32006-10-18 22:01:22 +0000327 * </pre>
328 *
Richard S. Hallf28d6762009-06-08 19:31:06 +0000329 * <p>
330 * The attribute value may be retrieved from the <code>Dictionary</code>
331 * object returned by the <code>Bundle.getHeaders</code> method.
332 *
333 * @see #BUNDLE_SYMBOLICNAME
Richard S. Hallc88fca32006-10-18 22:01:22 +0000334 * @since 1.3
335 */
336 public final static String SINGLETON_DIRECTIVE = "singleton";
337
338 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000339 * Manifest header directive identifying if and when a fragment may attach
340 * to a host bundle. The default value is
341 * {@link #FRAGMENT_ATTACHMENT_ALWAYS always}.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000342 *
343 * <p>
344 * The directive value is encoded in the Bundle-SymbolicName manifest header
345 * like:
346 *
347 * <pre>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000348 * Bundle-SymbolicName: com.acme.module.test; fragment-attachment:=&quot;never&quot;
Richard S. Hallc88fca32006-10-18 22:01:22 +0000349 * </pre>
350 *
Richard S. Hallf28d6762009-06-08 19:31:06 +0000351 * @see #BUNDLE_SYMBOLICNAME
352 * @see #FRAGMENT_ATTACHMENT_ALWAYS
353 * @see #FRAGMENT_ATTACHMENT_RESOLVETIME
354 * @see #FRAGMENT_ATTACHMENT_NEVER
Richard S. Hallc88fca32006-10-18 22:01:22 +0000355 * @since 1.3
356 */
357 public final static String FRAGMENT_ATTACHMENT_DIRECTIVE = "fragment-attachment";
358
359 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000360 * Manifest header directive value identifying a fragment attachment type of
361 * always. A fragment attachment type of always indicates that fragments are
362 * allowed to attach to the host bundle at any time (while the host is
363 * resolved or during the process of resolving the host bundle).
Richard S. Hallc88fca32006-10-18 22:01:22 +0000364 *
365 * <p>
366 * The directive value is encoded in the Bundle-SymbolicName manifest header
367 * like:
368 *
369 * <pre>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000370 * Bundle-SymbolicName: com.acme.module.test; fragment-attachment:=&quot;always&quot;
Richard S. Hallc88fca32006-10-18 22:01:22 +0000371 * </pre>
372 *
Richard S. Hallf28d6762009-06-08 19:31:06 +0000373 * @see #FRAGMENT_ATTACHMENT_DIRECTIVE
Richard S. Hallc88fca32006-10-18 22:01:22 +0000374 * @since 1.3
375 */
376 public final static String FRAGMENT_ATTACHMENT_ALWAYS = "always";
377
378 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000379 * Manifest header directive value identifying a fragment attachment type of
380 * resolve-time. A fragment attachment type of resolve-time indicates that
381 * fragments are allowed to attach to the host bundle only during the
382 * process of resolving the host bundle.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000383 *
384 * <p>
385 * The directive value is encoded in the Bundle-SymbolicName manifest header
386 * like:
387 *
388 * <pre>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000389 * Bundle-SymbolicName: com.acme.module.test; fragment-attachment:=&quot;resolve-time&quot;
Richard S. Hallc88fca32006-10-18 22:01:22 +0000390 * </pre>
391 *
Richard S. Hallf28d6762009-06-08 19:31:06 +0000392 * @see #FRAGMENT_ATTACHMENT_DIRECTIVE
Richard S. Hallc88fca32006-10-18 22:01:22 +0000393 * @since 1.3
394 */
395 public final static String FRAGMENT_ATTACHMENT_RESOLVETIME = "resolve-time";
396
397 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000398 * Manifest header directive value identifying a fragment attachment type of
399 * never. A fragment attachment type of never indicates that no fragments
400 * are allowed to attach to the host bundle at any time.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000401 *
402 * <p>
403 * The directive value is encoded in the Bundle-SymbolicName manifest header
404 * like:
405 *
406 * <pre>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000407 * Bundle-SymbolicName: com.acme.module.test; fragment-attachment:=&quot;never&quot;
Richard S. Hallc88fca32006-10-18 22:01:22 +0000408 * </pre>
409 *
Richard S. Hallf28d6762009-06-08 19:31:06 +0000410 * @see #FRAGMENT_ATTACHMENT_DIRECTIVE
Richard S. Hallc88fca32006-10-18 22:01:22 +0000411 * @since 1.3
412 */
413 public final static String FRAGMENT_ATTACHMENT_NEVER = "never";
414
415 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000416 * Manifest header identifying the base name of the bundle's localization
417 * entries.
418 *
Richard S. Hallc88fca32006-10-18 22:01:22 +0000419 * <p>
420 * The attribute value may be retrieved from the <code>Dictionary</code>
421 * object returned by the <code>Bundle.getHeaders</code> method.
422 *
423 * @see #BUNDLE_LOCALIZATION_DEFAULT_BASENAME
424 * @since 1.3
425 */
426 public final static String BUNDLE_LOCALIZATION = "Bundle-Localization";
427
428 /**
429 * Default value for the <code>Bundle-Localization</code> manifest header.
430 *
431 * @see #BUNDLE_LOCALIZATION
432 * @since 1.3
433 */
434 public final static String BUNDLE_LOCALIZATION_DEFAULT_BASENAME = "OSGI-INF/l10n/bundle";
435
436 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000437 * Manifest header identifying the symbolic names of other bundles required
438 * by the bundle.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000439 *
440 * <p>
441 * The attribute value may be retrieved from the <code>Dictionary</code>
442 * object returned by the <code>Bundle.getHeaders</code> method.
443 *
444 * @since 1.3
445 */
446 public final static String REQUIRE_BUNDLE = "Require-Bundle";
447
448 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000449 * Manifest header attribute identifying a range of versions for a bundle
450 * specified in the <code>Require-Bundle</code> or
451 * <code>Fragment-Host</code> manifest headers. The default value is
452 * <code>0.0.0</code>.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000453 *
454 * <p>
455 * The attribute value is encoded in the Require-Bundle manifest header
456 * like:
457 *
458 * <pre>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000459 * Require-Bundle: com.acme.module.test; bundle-version=&quot;1.1&quot;
460 * Require-Bundle: com.acme.module.test; bundle-version=&quot;[1.0,2.0)&quot;
Richard S. Hallc88fca32006-10-18 22:01:22 +0000461 * </pre>
462 *
463 * <p>
464 * The bundle-version attribute value uses a mathematical interval notation
465 * to specify a range of bundle versions. A bundle-version attribute value
466 * specified as a single version means a version range that includes any
467 * bundle version greater than or equal to the specified version.
468 *
Richard S. Hallf28d6762009-06-08 19:31:06 +0000469 * @see #REQUIRE_BUNDLE
Richard S. Hallc88fca32006-10-18 22:01:22 +0000470 * @since 1.3
471 */
472 public static final String BUNDLE_VERSION_ATTRIBUTE = "bundle-version";
473
474 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000475 * Manifest header identifying the symbolic name of another bundle for which
476 * that the bundle is a fragment.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000477 *
478 * <p>
479 * The attribute value may be retrieved from the <code>Dictionary</code>
480 * object returned by the <code>Bundle.getHeaders</code> method.
481 *
482 * @since 1.3
483 */
484 public final static String FRAGMENT_HOST = "Fragment-Host";
485
486 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000487 * Manifest header attribute is used for selection by filtering based upon
488 * system properties.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000489 *
490 * <p>
491 * The attribute value is encoded in manifest headers like:
492 *
493 * <pre>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000494 * Bundle-NativeCode: libgtk.so; selection-filter=&quot;(ws=gtk)&quot;; ...
Richard S. Hallc88fca32006-10-18 22:01:22 +0000495 * </pre>
496 *
Richard S. Hallf28d6762009-06-08 19:31:06 +0000497 * @see #BUNDLE_NATIVECODE
Richard S. Hallc88fca32006-10-18 22:01:22 +0000498 * @since 1.3
499 */
500 public final static String SELECTION_FILTER_ATTRIBUTE = "selection-filter";
501
502 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000503 * Manifest header identifying the bundle manifest version. A bundle
504 * manifest may express the version of the syntax in which it is written by
505 * specifying a bundle manifest version. Bundles exploiting OSGi Release 4,
506 * or later, syntax must specify a bundle manifest version.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000507 * <p>
Richard S. Hallf28d6762009-06-08 19:31:06 +0000508 * The bundle manifest version defined by OSGi Release 4 or, more
509 * specifically, by version 1.3 of the OSGi Core Specification is "2".
Richard S. Hallc88fca32006-10-18 22:01:22 +0000510 *
511 * <p>
512 * The attribute value may be retrieved from the <code>Dictionary</code>
513 * object returned by the <code>Bundle.getHeaders</code> method.
514 *
515 * @since 1.3
516 */
517 public final static String BUNDLE_MANIFESTVERSION = "Bundle-ManifestVersion";
518
519 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000520 * Manifest header attribute identifying the version of a package specified
521 * in the Export-Package or Import-Package manifest header.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000522 *
523 * <p>
524 * The attribute value is encoded in the Export-Package or Import-Package
525 * manifest header like:
526 *
527 * <pre>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000528 * Import-Package: org.osgi.framework; version=&quot;1.1&quot;
Richard S. Hallc88fca32006-10-18 22:01:22 +0000529 * </pre>
530 *
Richard S. Hallf28d6762009-06-08 19:31:06 +0000531 * @see #EXPORT_PACKAGE
532 * @see #IMPORT_PACKAGE
Richard S. Hallc88fca32006-10-18 22:01:22 +0000533 * @since 1.3
534 */
535 public final static String VERSION_ATTRIBUTE = "version";
536
537 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000538 * Manifest header attribute identifying the symbolic name of a bundle that
539 * exports a package specified in the Import-Package manifest header.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000540 *
541 * <p>
542 * The attribute value is encoded in the Import-Package manifest header
543 * like:
544 *
545 * <pre>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000546 * Import-Package: org.osgi.framework; bundle-symbolic-name=&quot;com.acme.module.test&quot;
Richard S. Hallc88fca32006-10-18 22:01:22 +0000547 * </pre>
548 *
Richard S. Hallf28d6762009-06-08 19:31:06 +0000549 * @see #IMPORT_PACKAGE
Richard S. Hallc88fca32006-10-18 22:01:22 +0000550 * @since 1.3
551 */
552 public final static String BUNDLE_SYMBOLICNAME_ATTRIBUTE = "bundle-symbolic-name";
553
554 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000555 * Manifest header directive identifying the resolution type in the
556 * Import-Package or Require-Bundle manifest header. The default value is
557 * {@link #RESOLUTION_MANDATORY mandatory}.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000558 *
559 * <p>
560 * The directive value is encoded in the Import-Package or Require-Bundle
561 * manifest header like:
562 *
563 * <pre>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000564 * Import-Package: org.osgi.framework; resolution:=&quot;optional&quot;
565 * Require-Bundle: com.acme.module.test; resolution:=&quot;optional&quot;
Richard S. Hallc88fca32006-10-18 22:01:22 +0000566 * </pre>
567 *
Richard S. Hallf28d6762009-06-08 19:31:06 +0000568 * @see #IMPORT_PACKAGE
569 * @see #REQUIRE_BUNDLE
570 * @see #RESOLUTION_MANDATORY
571 * @see #RESOLUTION_OPTIONAL
Richard S. Hallc88fca32006-10-18 22:01:22 +0000572 * @since 1.3
573 */
574 public final static String RESOLUTION_DIRECTIVE = "resolution";
575
576 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000577 * Manifest header directive value identifying a mandatory resolution type.
578 * A mandatory resolution type indicates that the import package or require
579 * bundle must be resolved when the bundle is resolved. If such an import or
580 * require bundle cannot be resolved, the module fails to resolve.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000581 *
582 * <p>
583 * The directive value is encoded in the Import-Package or Require-Bundle
584 * manifest header like:
585 *
586 * <pre>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000587 * Import-Package: org.osgi.framework; resolution:=&quot;manditory&quot;
588 * Require-Bundle: com.acme.module.test; resolution:=&quot;manditory&quot;
Richard S. Hallc88fca32006-10-18 22:01:22 +0000589 * </pre>
590 *
Richard S. Hallf28d6762009-06-08 19:31:06 +0000591 * @see #RESOLUTION_DIRECTIVE
Richard S. Hallc88fca32006-10-18 22:01:22 +0000592 * @since 1.3
593 */
594 public final static String RESOLUTION_MANDATORY = "mandatory";
595
596 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000597 * Manifest header directive value identifying an optional resolution type.
598 * An optional resolution type indicates that the import or require bundle
599 * is optional and the bundle may be resolved without the import or require
600 * bundle being resolved. If the import or require bundle is not resolved
601 * when the bundle is resolved, the import or require bundle may not be
602 * resolved before the bundle is refreshed.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000603 *
604 * <p>
605 * The directive value is encoded in the Import-Package or Require-Bundle
606 * manifest header like:
607 *
608 * <pre>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000609 * Import-Package: org.osgi.framework; resolution:=&quot;optional&quot;
610 * Require-Bundle: com.acme.module.test; resolution:=&quot;optional&quot;
Richard S. Hallc88fca32006-10-18 22:01:22 +0000611 * </pre>
612 *
Richard S. Hallf28d6762009-06-08 19:31:06 +0000613 * @see #RESOLUTION_DIRECTIVE
Richard S. Hallc88fca32006-10-18 22:01:22 +0000614 * @since 1.3
615 */
616 public final static String RESOLUTION_OPTIONAL = "optional";
617
618 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000619 * Manifest header directive identifying a list of packages that an exported
620 * package uses.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000621 *
622 * <p>
623 * The directive value is encoded in the Export-Package manifest header
624 * like:
625 *
626 * <pre>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000627 * Export-Package: org.osgi.util.tracker; uses:=&quot;org.osgi.framework&quot;
Richard S. Hallc88fca32006-10-18 22:01:22 +0000628 * </pre>
629 *
Richard S. Hallf28d6762009-06-08 19:31:06 +0000630 * @see #EXPORT_PACKAGE
Richard S. Hallc88fca32006-10-18 22:01:22 +0000631 * @since 1.3
632 */
633 public final static String USES_DIRECTIVE = "uses";
634
635 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000636 * Manifest header directive identifying a list of classes to include in the
637 * exported package.
638 *
Richard S. Hallc88fca32006-10-18 22:01:22 +0000639 * <p>
Richard S. Hallf28d6762009-06-08 19:31:06 +0000640 * This directive is used by the Export-Package manifest header to identify
Richard S. Hall53e70d32008-08-01 19:31:32 +0000641 * a list of classes of the specified package which must be allowed to be
Richard S. Hallf28d6762009-06-08 19:31:06 +0000642 * exported. The directive value is encoded in the Export-Package manifest
Richard S. Hall53e70d32008-08-01 19:31:32 +0000643 * header like:
Richard S. Hallc88fca32006-10-18 22:01:22 +0000644 *
645 * <pre>
Richard S. Hallf28d6762009-06-08 19:31:06 +0000646 * Export-Package: org.osgi.framework; include:=&quot;MyClass*&quot;
Richard S. Hall53e70d32008-08-01 19:31:32 +0000647 * </pre>
648 *
649 * <p>
650 * This directive is also used by the Bundle-ActivationPolicy manifest
651 * header to identify the packages from which class loads will trigger lazy
652 * activation. The directive value is encoded in the Bundle-ActivationPolicy
653 * manifest header like:
654 *
655 * <pre>
656 * Bundle-ActivationPolicy: lazy; include:=&quot;org.osgi.framework&quot;
Richard S. Hallc88fca32006-10-18 22:01:22 +0000657 * </pre>
658 *
Richard S. Hallf28d6762009-06-08 19:31:06 +0000659 * @see #EXPORT_PACKAGE
660 * @see #BUNDLE_ACTIVATIONPOLICY
Richard S. Hallc88fca32006-10-18 22:01:22 +0000661 * @since 1.3
662 */
663 public final static String INCLUDE_DIRECTIVE = "include";
664
665 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000666 * Manifest header directive identifying a list of classes to exclude in the
667 * exported package..
Richard S. Hallc88fca32006-10-18 22:01:22 +0000668 * <p>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000669 * This directive is used by the Export-Package manifest header to identify
670 * a list of classes of the specified package which must not be allowed to
671 * be exported. The directive value is encoded in the Export-Package
672 * manifest header like:
Richard S. Hallc88fca32006-10-18 22:01:22 +0000673 *
674 * <pre>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000675 * Export-Package: org.osgi.framework; exclude:=&quot;*Impl&quot;
676 * </pre>
677 *
678 * <p>
679 * This directive is also used by the Bundle-ActivationPolicy manifest
680 * header to identify the packages from which class loads will not trigger
681 * lazy activation. The directive value is encoded in the
682 * Bundle-ActivationPolicy manifest header like:
683 *
684 * <pre>
685 * Bundle-ActivationPolicy: lazy; exclude:=&quot;org.osgi.framework&quot;
Richard S. Hallc88fca32006-10-18 22:01:22 +0000686 * </pre>
687 *
Richard S. Hallf28d6762009-06-08 19:31:06 +0000688 * @see #EXPORT_PACKAGE
689 * @see #BUNDLE_ACTIVATIONPOLICY
Richard S. Hallc88fca32006-10-18 22:01:22 +0000690 * @since 1.3
691 */
692 public final static String EXCLUDE_DIRECTIVE = "exclude";
693
694 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000695 * Manifest header directive identifying names of matching attributes which
696 * must be specified by matching Import-Package statements in the
697 * Export-Package manifest header.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000698 *
699 * <p>
700 * The directive value is encoded in the Export-Package manifest header
701 * like:
702 *
703 * <pre>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000704 * Export-Package: org.osgi.framework; mandatory:=&quot;bundle-symbolic-name&quot;
Richard S. Hallc88fca32006-10-18 22:01:22 +0000705 * </pre>
706 *
Richard S. Hallf28d6762009-06-08 19:31:06 +0000707 * @see #EXPORT_PACKAGE
Richard S. Hallc88fca32006-10-18 22:01:22 +0000708 * @since 1.3
709 */
710 public final static String MANDATORY_DIRECTIVE = "mandatory";
711
712 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000713 * Manifest header directive identifying the visibility of a required bundle
714 * in the Require-Bundle manifest header. The default value is
715 * {@link #VISIBILITY_PRIVATE private}.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000716 *
717 * <p>
718 * The directive value is encoded in the Require-Bundle manifest header
719 * like:
720 *
721 * <pre>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000722 * Require-Bundle: com.acme.module.test; visibility:=&quot;reexport&quot;
Richard S. Hallc88fca32006-10-18 22:01:22 +0000723 * </pre>
724 *
Richard S. Hallf28d6762009-06-08 19:31:06 +0000725 * @see #REQUIRE_BUNDLE
726 * @see #VISIBILITY_PRIVATE
727 * @see #VISIBILITY_REEXPORT
Richard S. Hallc88fca32006-10-18 22:01:22 +0000728 * @since 1.3
729 */
730 public final static String VISIBILITY_DIRECTIVE = "visibility";
731
732 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000733 * Manifest header directive value identifying a private visibility type. A
734 * private visibility type indicates that any packages that are exported by
735 * the required bundle are not made visible on the export signature of the
736 * requiring bundle.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000737 *
738 * <p>
739 * The directive value is encoded in the Require-Bundle manifest header
740 * like:
741 *
742 * <pre>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000743 * Require-Bundle: com.acme.module.test; visibility:=&quot;private&quot;
Richard S. Hallc88fca32006-10-18 22:01:22 +0000744 * </pre>
745 *
Richard S. Hallf28d6762009-06-08 19:31:06 +0000746 * @see #VISIBILITY_DIRECTIVE
Richard S. Hallc88fca32006-10-18 22:01:22 +0000747 * @since 1.3
748 */
749 public final static String VISIBILITY_PRIVATE = "private";
750
751 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000752 * Manifest header directive value identifying a reexport visibility type. A
753 * reexport visibility type indicates any packages that are exported by the
754 * required bundle are re-exported by the requiring bundle. Any arbitrary
755 * arbitrary matching attributes with which they were exported by the
756 * required bundle are deleted.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000757 *
758 * <p>
759 * The directive value is encoded in the Require-Bundle manifest header
760 * like:
761 *
762 * <pre>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000763 * Require-Bundle: com.acme.module.test; visibility:=&quot;reexport&quot;
Richard S. Hallc88fca32006-10-18 22:01:22 +0000764 * </pre>
765 *
Richard S. Hallf28d6762009-06-08 19:31:06 +0000766 * @see #VISIBILITY_DIRECTIVE
Richard S. Hallc88fca32006-10-18 22:01:22 +0000767 * @since 1.3
768 */
769 public final static String VISIBILITY_REEXPORT = "reexport";
Richard S. Hallf28d6762009-06-08 19:31:06 +0000770
Richard S. Hallc88fca32006-10-18 22:01:22 +0000771 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000772 * Manifest header directive identifying the type of the extension fragment.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000773 *
774 * <p>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000775 * The directive value is encoded in the Fragment-Host manifest header like:
Richard S. Hallc88fca32006-10-18 22:01:22 +0000776 *
777 * <pre>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000778 * Fragment-Host: system.bundle; extension:=&quot;framework&quot;
Richard S. Hallc88fca32006-10-18 22:01:22 +0000779 * </pre>
780 *
Richard S. Hallf28d6762009-06-08 19:31:06 +0000781 * @see #FRAGMENT_HOST
782 * @see #EXTENSION_FRAMEWORK
783 * @see #EXTENSION_BOOTCLASSPATH
Richard S. Hallc88fca32006-10-18 22:01:22 +0000784 * @since 1.3
785 */
Richard S. Hall53e70d32008-08-01 19:31:32 +0000786 public final static String EXTENSION_DIRECTIVE = "extension";
Richard S. Hallc88fca32006-10-18 22:01:22 +0000787
788 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000789 * Manifest header directive value identifying the type of extension
790 * fragment. An extension fragment type of framework indicates that the
791 * extension fragment is to be loaded by the framework's class loader.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000792 *
793 * <p>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000794 * The directive value is encoded in the Fragment-Host manifest header like:
Richard S. Hallc88fca32006-10-18 22:01:22 +0000795 *
796 * <pre>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000797 * Fragment-Host: system.bundle; extension:=&quot;framework&quot;
Richard S. Hallc88fca32006-10-18 22:01:22 +0000798 * </pre>
799 *
Richard S. Hallf28d6762009-06-08 19:31:06 +0000800 * @see #EXTENSION_DIRECTIVE
Richard S. Hallc88fca32006-10-18 22:01:22 +0000801 * @since 1.3
802 */
Richard S. Hall53e70d32008-08-01 19:31:32 +0000803 public final static String EXTENSION_FRAMEWORK = "framework";
Richard S. Hallc88fca32006-10-18 22:01:22 +0000804
805 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000806 * Manifest header directive value identifying the type of extension
807 * fragment. An extension fragment type of bootclasspath indicates that the
808 * extension fragment is to be loaded by the boot class loader.
Richard S. Hallc88fca32006-10-18 22:01:22 +0000809 *
810 * <p>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000811 * The directive value is encoded in the Fragment-Host manifest header like:
Richard S. Hallc88fca32006-10-18 22:01:22 +0000812 *
813 * <pre>
Richard S. Hall53e70d32008-08-01 19:31:32 +0000814 * Fragment-Host: system.bundle; extension:=&quot;bootclasspath&quot;
Richard S. Hallc88fca32006-10-18 22:01:22 +0000815 * </pre>
816 *
Richard S. Hallf28d6762009-06-08 19:31:06 +0000817 * @see #EXTENSION_DIRECTIVE
Richard S. Hallc88fca32006-10-18 22:01:22 +0000818 * @since 1.3
819 */
Richard S. Hall53e70d32008-08-01 19:31:32 +0000820 public final static String EXTENSION_BOOTCLASSPATH = "bootclasspath";
821
822 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000823 * Manifest header identifying the bundle's activation policy.
Richard S. Hall53e70d32008-08-01 19:31:32 +0000824 * <p>
825 * The attribute value may be retrieved from the <code>Dictionary</code>
826 * object returned by the <code>Bundle.getHeaders</code> method.
827 *
828 * @since 1.4
Richard S. Hallf28d6762009-06-08 19:31:06 +0000829 * @see #ACTIVATION_LAZY
830 * @see #INCLUDE_DIRECTIVE
831 * @see #EXCLUDE_DIRECTIVE
Richard S. Hall53e70d32008-08-01 19:31:32 +0000832 */
833 public final static String BUNDLE_ACTIVATIONPOLICY = "Bundle-ActivationPolicy";
834
835 /**
Richard S. Hallf28d6762009-06-08 19:31:06 +0000836 * Bundle activation policy declaring the bundle must be activated when the
837 * first class load is made from the bundle.
Richard S. Hall53e70d32008-08-01 19:31:32 +0000838 * <p>
839 * A bundle with the lazy activation policy that is started with the
840 * {@link Bundle#START_ACTIVATION_POLICY START_ACTIVATION_POLICY} option
841 * will wait in the {@link Bundle#STARTING STARTING} state until the first
842 * class load from the bundle occurs. The bundle will then be activated
Richard S. Hallf28d6762009-06-08 19:31:06 +0000843 * before the class is returned to the requester.
Richard S. Hall53e70d32008-08-01 19:31:32 +0000844 * <p>
845 * The activation policy value is specified as in the
846 * Bundle-ActivationPolicy manifest header like:
847 *
848 * <pre>
849 * Bundle-ActivationPolicy: lazy
850 * </pre>
851 *
Richard S. Hallf28d6762009-06-08 19:31:06 +0000852 * @see #BUNDLE_ACTIVATIONPOLICY
Richard S. Hall53e70d32008-08-01 19:31:32 +0000853 * @see Bundle#start(int)
854 * @see Bundle#START_ACTIVATION_POLICY
855 * @since 1.4
856 */
857 public final static String ACTIVATION_LAZY = "lazy";
Richard S. Hallc88fca32006-10-18 22:01:22 +0000858
Richard S. Hallf28d6762009-06-08 19:31:06 +0000859 /**
860 * Framework environment property identifying the Framework version.
861 *
862 * <p>
863 * The value of this property may be retrieved by calling the
864 * <code>BundleContext.getProperty</code> method.
865 */
866 public static final String FRAMEWORK_VERSION = "org.osgi.framework.version";
867
868 /**
869 * Framework environment property identifying the Framework implementation
870 * vendor.
871 *
872 * <p>
873 * The value of this property may be retrieved by calling the
874 * <code>BundleContext.getProperty</code> method.
875 */
876 public static final String FRAMEWORK_VENDOR = "org.osgi.framework.vendor";
877
878 /**
879 * Framework environment property identifying the Framework implementation
880 * language (see ISO 639 for possible values).
881 *
882 * <p>
883 * The value of this property may be retrieved by calling the
884 * <code>BundleContext.getProperty</code> method.
885 */
886 public static final String FRAMEWORK_LANGUAGE = "org.osgi.framework.language";
887
888 /**
889 * Framework environment property identifying the Framework host-computer's
890 * operating system.
891 *
892 * <p>
893 * The value of this property may be retrieved by calling the
894 * <code>BundleContext.getProperty</code> method.
895 */
896 public static final String FRAMEWORK_OS_NAME = "org.osgi.framework.os.name";
897
898 /**
899 * Framework environment property identifying the Framework host-computer's
900 * operating system version number.
901 *
902 * <p>
903 * The value of this property may be retrieved by calling the
904 * <code>BundleContext.getProperty</code> method.
905 */
906 public static final String FRAMEWORK_OS_VERSION = "org.osgi.framework.os.version";
907
908 /**
909 * Framework environment property identifying the Framework host-computer's
910 * processor name.
911 *
912 * <p>
913 * The value of this property may be retrieved by calling the
914 * <code>BundleContext.getProperty</code> method.
915 */
916 public static final String FRAMEWORK_PROCESSOR = "org.osgi.framework.processor";
917
918 /**
919 * Framework environment property identifying execution environments
920 * provided by the Framework.
921 *
922 * <p>
923 * The value of this property may be retrieved by calling the
924 * <code>BundleContext.getProperty</code> method.
925 *
926 * @since 1.2
927 */
928 public static final String FRAMEWORK_EXECUTIONENVIRONMENT = "org.osgi.framework.executionenvironment";
929
930 /**
931 * Framework environment property identifying packages for which the
932 * Framework must delegate class loading to the parent class loader of the
933 * bundle.
934 *
935 * <p>
936 * The value of this property may be retrieved by calling the
937 * <code>BundleContext.getProperty</code> method.
938 *
939 * @see #FRAMEWORK_BUNDLE_PARENT
940 * @since 1.3
941 */
942 public static final String FRAMEWORK_BOOTDELEGATION = "org.osgi.framework.bootdelegation";
943
944 /**
945 * Framework environment property identifying packages which the system
946 * bundle must export.
947 *
948 * <p>
949 * If this property is not specified then the framework must calculate a
950 * reasonable default value for the current execution environment.
951 *
952 * <p>
953 * The value of this property may be retrieved by calling the
954 * <code>BundleContext.getProperty</code> method.
955 *
956 * @since 1.3
957 */
958 public static final String FRAMEWORK_SYSTEMPACKAGES = "org.osgi.framework.system.packages";
959
960 /**
961 * Framework environment property identifying extra packages which the
962 * system bundle must export from the current execution environment.
963 *
964 * <p>
965 * This property is useful for configuring extra system packages in addition
966 * to the system packages calculated by the framework.
967 *
968 * <p>
969 * The value of this property may be retrieved by calling the
970 * <code>BundleContext.getProperty</code> method.
971 *
972 * @see #FRAMEWORK_SYSTEMPACKAGES
973 * @since 1.5
974 */
975 public static final String FRAMEWORK_SYSTEMPACKAGES_EXTRA = "org.osgi.framework.system.packages.extra";
976
977 /**
978 * Framework environment property identifying whether the Framework supports
979 * framework extension bundles.
980 *
981 * <p>
982 * As of version 1.4, the value of this property must be <code>true</code>.
983 * The Framework must support framework extension bundles.
984 *
985 * <p>
986 * The value of this property may be retrieved by calling the
987 * <code>BundleContext.getProperty</code> method.
988 *
989 * @since 1.3
990 */
991 public static final String SUPPORTS_FRAMEWORK_EXTENSION = "org.osgi.supports.framework.extension";
992
993 /**
994 * Framework environment property identifying whether the Framework supports
995 * bootclasspath extension bundles.
996 *
997 * <p>
998 * If the value of this property is <code>true</code>, then the Framework
999 * supports bootclasspath extension bundles. The default value is
1000 * <code>false</code>.
1001 * <p>
1002 * The value of this property may be retrieved by calling the
1003 * <code>BundleContext.getProperty</code> method.
1004 *
1005 * @since 1.3
1006 */
1007 public static final String SUPPORTS_BOOTCLASSPATH_EXTENSION = "org.osgi.supports.bootclasspath.extension";
1008
1009 /**
1010 * Framework environment property identifying whether the Framework supports
1011 * fragment bundles.
1012 *
1013 * <p>
1014 * As of version 1.4, the value of this property must be <code>true</code>.
1015 * The Framework must support fragment bundles.
1016 * <p>
1017 * The value of this property may be retrieved by calling the
1018 * <code>BundleContext.getProperty</code> method.
1019 *
1020 * @since 1.3
1021 */
1022 public static final String SUPPORTS_FRAMEWORK_FRAGMENT = "org.osgi.supports.framework.fragment";
1023
1024 /**
1025 * Framework environment property identifying whether the Framework supports
1026 * the {@link #REQUIRE_BUNDLE Require-Bundle} manifest header.
1027 *
1028 * <p>
1029 * As of version 1.4, the value of this property must be <code>true</code>.
1030 * The Framework must support the <code>Require-Bundle</code> manifest
1031 * header.
1032 * <p>
1033 * The value of this property may be retrieved by calling the
1034 * <code>BundleContext.getProperty</code> method.
1035 *
1036 * @since 1.3
1037 */
1038 public static final String SUPPORTS_FRAMEWORK_REQUIREBUNDLE = "org.osgi.supports.framework.requirebundle";
1039
1040 /**
1041 * Specifies the type of security manager the framework must use. If not
1042 * specified then the framework will not set the VM security manager.
1043 *
1044 * @see #FRAMEWORK_SECURITY_OSGI
1045 * @since 1.5
1046 */
1047 public final static String FRAMEWORK_SECURITY = "org.osgi.framework.security";
1048
1049 /**
1050 * Specifies that a security manager that supports all security aspects of
1051 * the OSGi core specification including postponed conditions must be
1052 * installed.
1053 *
1054 * <p>
1055 * If this value is specified and there is a security manager already
1056 * installed, then a <code>SecurityException</code> must be thrown when the
1057 * Framework is initialized.
1058 *
1059 * @see #FRAMEWORK_SECURITY
1060 * @since 1.5
1061 */
1062 public final static String FRAMEWORK_SECURITY_OSGI = "osgi";
1063
1064 /**
1065 * Specified the persistent storage area used by the framework. The value of
1066 * this property must be a valid file path in the file system to a
1067 * directory. If the specified directory does not exist then the framework
1068 * will create the directory. If the specified path exists but is not a
1069 * directory or if the framework fails to create the storage directory, then
1070 * framework initialization must fail. The framework is free to use this
1071 * directory as it sees fit. This area can not be shared with anything else.
1072 * <p>
1073 * If this property is not set, the framework should use a reasonable
1074 * platform default for the persistent storage area.
1075 *
1076 * @since 1.5
1077 */
1078 public final static String FRAMEWORK_STORAGE = "org.osgi.framework.storage";
1079
1080 /**
1081 * Specifies if and when the persistent storage area for the framework
1082 * should be cleaned. If this property is not set, then the framework
1083 * storage area must not be cleaned.
1084 *
1085 * @see #FRAMEWORK_STORAGE_CLEAN_ONFIRSTINIT
1086 * @since 1.5
1087 */
1088 public final static String FRAMEWORK_STORAGE_CLEAN = "org.osgi.framework.storage.clean";
1089
1090 /**
1091 * Specifies that the framework storage area must be cleaned before the
1092 * framework is initialized for the first time. Subsequent inits, starts or
1093 * updates of the framework will not result in cleaning the framework
1094 * storage area.
1095 *
1096 * @since 1.5
1097 */
1098 public final static String FRAMEWORK_STORAGE_CLEAN_ONFIRSTINIT = "onFirstInit";
1099
1100 /**
1101 * Specifies a comma separated list of additional library file extensions
1102 * that must be used when a bundle's class loader is searching for native
1103 * libraries. If this property is not set, then only the library name
1104 * returned by <code>System.mapLibraryName(String)</code> will be used to
1105 * search. This is needed for certain operating systems which allow more
1106 * than one extension for a library. For example, AIX allows library
1107 * extensions of <code>.a</code> and <code>.so</code>, but
1108 * <code>System.mapLibraryName(String)</code> will only return names with
1109 * the <code>.a</code> extension.
1110 *
1111 * @since 1.5
1112 */
1113 public final static String FRAMEWORK_LIBRARY_EXTENSIONS = "org.osgi.framework.library.extensions";
1114
1115 /**
1116 * Specifies an optional OS specific command to set file permissions on
1117 * extracted native code. On some operating systems, it is required that
1118 * native libraries be set to executable. This optional property allows you
1119 * to specify the command. For example, on a UNIX style OS, this property
1120 * could have the following value.
1121 *
1122 * <pre>
1123 * chmod +rx ${abspath}
1124 * </pre>
1125 *
1126 * The <code>${abspath}</code> is used by the framework to substitute the
1127 * actual absolute file path.
1128 *
1129 * @since 1.5
1130 */
1131 public final static String FRAMEWORK_EXECPERMISSION = "org.osgi.framework.command.execpermission";
1132
1133 /**
1134 * Specifies the trust repositories used by the framework. The value is a
1135 * <code>java.io.File.pathSeparator</code> separated list of valid file
1136 * paths to files that contain key stores of type <code>JKS</code>. The
1137 * framework will use the key stores as trust repositories to authenticate
1138 * certificates of trusted signers. The key stores are only used as
1139 * read-only trust repositories to access public keys. No passwords are
1140 * required to access the key stores' public keys.
1141 * <p>
1142 * Note that framework implementations are allowed to use other trust
1143 * repositories in addition to the trust repositories specified by this
1144 * property. How these other trust repositories are configured and populated
1145 * is implementation specific.
1146 *
1147 * @since 1.5
1148 */
1149 public final static String FRAMEWORK_TRUST_REPOSITORIES = "org.osgi.framework.trust.repositories";
1150
1151 /**
1152 * Specifies the current windowing system. The framework should provide a
1153 * reasonable default if this is not set.
1154 *
1155 * @since 1.5
1156 */
1157 public final static String FRAMEWORK_WINDOWSYSTEM = "org.osgi.framework.windowsystem";
1158
1159 /**
1160 * Specifies the beginning start level of the framework.
1161 *
1162 * @see "Core Specification, section 8.2.3."
1163 * @since 1.5
1164 */
1165 public final static String FRAMEWORK_BEGINNING_STARTLEVEL = "org.osgi.framework.startlevel.beginning";
1166
1167 /**
1168 * Specifies the parent class loader type for all bundle class loaders.
1169 * Default value is {@link #FRAMEWORK_BUNDLE_PARENT_BOOT boot}.
1170 *
1171 * @see #FRAMEWORK_BUNDLE_PARENT_BOOT
1172 * @see #FRAMEWORK_BUNDLE_PARENT_EXT
1173 * @see #FRAMEWORK_BUNDLE_PARENT_APP
1174 * @see #FRAMEWORK_BUNDLE_PARENT_FRAMEWORK
1175 * @since 1.5
1176 */
1177 public final static String FRAMEWORK_BUNDLE_PARENT = "org.osgi.framework.bundle.parent";
1178
1179 /**
1180 * Specifies to use of the boot class loader as the parent class loader for
1181 * all bundle class loaders.
1182 *
1183 * @since 1.5
1184 * @see #FRAMEWORK_BUNDLE_PARENT
1185 */
1186 public final static String FRAMEWORK_BUNDLE_PARENT_BOOT = "boot";
1187
1188 /**
1189 * Specifies to use the extension class loader as the parent class loader
1190 * for all bundle class loaders.
1191 *
1192 * @since 1.5
1193 * @see #FRAMEWORK_BUNDLE_PARENT
1194 */
1195 public final static String FRAMEWORK_BUNDLE_PARENT_EXT = "ext";
1196
1197 /**
1198 * Specifies to use the application class loader as the parent class loader
1199 * for all bundle class loaders. Depending on how the framework is
1200 * launched, this may refer to the same class loader as
1201 * {@link #FRAMEWORK_BUNDLE_PARENT_FRAMEWORK}.
1202 *
1203 * @since 1.5
1204 * @see #FRAMEWORK_BUNDLE_PARENT
1205 */
1206 public final static String FRAMEWORK_BUNDLE_PARENT_APP = "app";
1207
1208 /**
1209 * Specifies to use the framework class loader as the parent class loader
1210 * for all bundle class loaders. The framework class loader is the class
1211 * loader used to load the framework implementation. Depending on how the
1212 * framework is launched, this may refer to the same class loader as
1213 * {@link #FRAMEWORK_BUNDLE_PARENT_APP}.
1214 *
1215 * @since 1.5
1216 * @see #FRAMEWORK_BUNDLE_PARENT
1217 */
1218 public final static String FRAMEWORK_BUNDLE_PARENT_FRAMEWORK = "framework";
1219
1220 /*
1221 * Service properties.
1222 */
1223
1224 /**
1225 * Service property identifying all of the class names under which a service
1226 * was registered in the Framework. The value of this property must be of
1227 * type <code>String[]</code>.
1228 *
1229 * <p>
1230 * This property is set by the Framework when a service is registered.
1231 */
1232 public static final String OBJECTCLASS = "objectClass";
1233
1234 /**
1235 * Service property identifying a service's registration number. The value
1236 * of this property must be of type <code>Long</code>.
1237 *
1238 * <p>
1239 * The value of this property is assigned by the Framework when a service is
1240 * registered. The Framework assigns a unique value that is larger than all
1241 * previously assigned values since the Framework was started. These values
1242 * are NOT persistent across restarts of the Framework.
1243 */
1244 public static final String SERVICE_ID = "service.id";
1245
1246 /**
1247 * Service property identifying a service's persistent identifier.
1248 *
1249 * <p>
1250 * This property may be supplied in the <code>properties</code>
1251 * <code>Dictionary</code> object passed to the
1252 * <code>BundleContext.registerService</code> method. The value of this
1253 * property must be of type <code>String</code>, <code>String[]</code>, or
1254 * <code>Collection</code> of <code>String</code>.
1255 *
1256 * <p>
1257 * A service's persistent identifier uniquely identifies the service and
1258 * persists across multiple Framework invocations.
1259 *
1260 * <p>
1261 * By convention, every bundle has its own unique namespace, starting with
1262 * the bundle's identifier (see {@link Bundle#getBundleId}) and followed by
1263 * a dot (.). A bundle may use this as the prefix of the persistent
1264 * identifiers for the services it registers.
1265 */
1266 public static final String SERVICE_PID = "service.pid";
1267
1268 /**
1269 * Service property identifying a service's ranking number.
1270 *
1271 * <p>
1272 * This property may be supplied in the <code>properties
1273 * Dictionary</code> object passed to the
1274 * <code>BundleContext.registerService</code> method. The value of this
1275 * property must be of type <code>Integer</code>.
1276 *
1277 * <p>
1278 * The service ranking is used by the Framework to determine the <i>natural
1279 * order</i> of services, see {@link ServiceReference#compareTo(Object)},
1280 * and the <i>default</i> service to be returned from a call to the
1281 * {@link BundleContext#getServiceReference} method.
1282 *
1283 * <p>
1284 * The default ranking is zero (0). A service with a ranking of
1285 * <code>Integer.MAX_VALUE</code> is very likely to be returned as the
1286 * default service, whereas a service with a ranking of
1287 * <code>Integer.MIN_VALUE</code> is very unlikely to be returned.
1288 *
1289 * <p>
1290 * If the supplied property value is not of type <code>Integer</code>, it is
1291 * deemed to have a ranking value of zero.
1292 */
1293 public static final String SERVICE_RANKING = "service.ranking";
1294
1295 /**
1296 * Service property identifying a service's vendor.
1297 *
1298 * <p>
1299 * This property may be supplied in the properties <code>Dictionary</code>
1300 * object passed to the <code>BundleContext.registerService</code> method.
1301 */
1302 public static final String SERVICE_VENDOR = "service.vendor";
1303
1304 /**
1305 * Service property identifying a service's description.
1306 *
1307 * <p>
1308 * This property may be supplied in the properties <code>Dictionary</code>
1309 * object passed to the <code>BundleContext.registerService</code> method.
1310 */
1311 public static final String SERVICE_DESCRIPTION = "service.description";
1312}