You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ri...@apache.org on 2009/07/24 19:06:44 UTC

svn commit: r797561 [5/9] - in /felix/trunk: org.osgi.compendium/ org.osgi.compendium/src/main/java/info/dmtree/ org.osgi.compendium/src/main/java/info/dmtree/notification/ org.osgi.compendium/src/main/java/info/dmtree/notification/spi/ org.osgi.compen...

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/event/TopicPermission.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/event/TopicPermission.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/event/TopicPermission.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/event/TopicPermission.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.event/src/org/osgi/service/event/TopicPermission.java,v 1.11 2006/06/16 16:31:48 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2005, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2005, 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.
@@ -33,25 +31,26 @@
  * For example:
  * 
  * <pre>
- * org/osgi/service/foo/FooEvent/ACTION
+ * org / osgi / service / foo / FooEvent / ACTION
  * </pre>
  * 
  * <p>
  * <code>TopicPermission</code> has two actions: <code>publish</code> and
  * <code>subscribe</code>.
  * 
- * @version $Revision: 1.11 $
+ * @ThreadSafe
+ * @version $Revision: 6381 $
  */
 public final class TopicPermission extends Permission {
 	static final long			serialVersionUID	= -5855563886961618300L;
 	/**
 	 * The action string <code>publish</code>.
 	 */
-	public final static String	PUBLISH				= "publish";				//$NON-NLS-1$
+	public final static String	PUBLISH				= "publish";
 	/**
 	 * The action string <code>subscribe</code>.
 	 */
-	public final static String	SUBSCRIBE			= "subscribe";				//$NON-NLS-1$
+	public final static String	SUBSCRIBE			= "subscribe";
 	private final static int	ACTION_PUBLISH		= 0x00000001;
 	private final static int	ACTION_SUBSCRIBE	= 0x00000002;
 	private final static int	ACTION_ALL			= ACTION_PUBLISH
@@ -60,19 +59,19 @@
 	/**
 	 * The actions mask.
 	 */
-	private transient int		action_mask			= ACTION_NONE;
+	private transient int		action_mask;
 
 	/**
 	 * prefix if the name is wildcarded.
 	 */
-	private transient String	prefix;
+	private transient volatile String	prefix;
 
 	/**
 	 * The actions in canonical form.
 	 * 
 	 * @serial
 	 */
-	private String				actions				= null;
+	private volatile String		actions				= null;
 
 	/**
 	 * Defines the authority to publich and/or subscribe to a topic within the
@@ -95,11 +94,11 @@
 	 * <p>
 	 * 
 	 * @param name Topic name.
-	 * @param actions <code>publish</code>,<code>subscribe</code>
-	 *        (canonical order).
+	 * @param actions <code>publish</code>,<code>subscribe</code> (canonical
+	 *        order).
 	 */
 	public TopicPermission(String name, String actions) {
-		this(name, getMask(actions));
+		this(name, parseActions(actions));
 	}
 
 	/**
@@ -110,7 +109,7 @@
 	 */
 	TopicPermission(String name, int mask) {
 		super(name);
-		init(name, mask);
+		setTransients(mask);
 	}
 
 	/**
@@ -119,26 +118,39 @@
 	 * @param name topic name
 	 * @param mask action mask
 	 */
-	private void init(String name, int mask) {
+	private synchronized void setTransients(final int mask) {
+		final String name = getName();
 		if ((name == null) || name.length() == 0) {
-			throw new IllegalArgumentException("invalid name"); //$NON-NLS-1$
+			throw new IllegalArgumentException("invalid name");
 		}
 
+		if ((mask == ACTION_NONE) || ((mask & ACTION_ALL) != mask)) {
+			throw new IllegalArgumentException("invalid action string");
+		}
+		action_mask = mask;
+
 		if (name.equals("*")) {
 			prefix = "";
 		}
-		else
+		else {
 			if (name.endsWith("/*")) {
 				prefix = name.substring(0, name.length() - 1);
 			}
 			else {
 				prefix = null;
 			}
-
-		if ((mask == ACTION_NONE) || ((mask & ACTION_ALL) != mask)) {
-			throw new IllegalArgumentException("invalid action string"); //$NON-NLS-1$
 		}
-		action_mask = mask;
+	}
+
+	/**
+	 * Returns the current action mask.
+	 * <p>
+	 * Used by the TopicPermissionCollection class.
+	 * 
+	 * @return Current action mask.
+	 */
+	synchronized int getActionsMask() {
+		return action_mask;
 	}
 
 	/**
@@ -147,7 +159,7 @@
 	 * @param actions Action string.
 	 * @return action mask.
 	 */
-	private static int getMask(String actions) {
+	private static int parseActions(final String actions) {
 		boolean seencomma = false;
 		int mask = ACTION_NONE;
 		if (actions == null) {
@@ -191,7 +203,7 @@
 				}
 				else {
 					// parse error
-					throw new IllegalArgumentException("invalid permission: " //$NON-NLS-1$
+					throw new IllegalArgumentException("invalid permission: "
 							+ actions);
 				}
 			// make sure we didn't just match the tail of a word
@@ -201,7 +213,7 @@
 				switch (a[i - matchlen]) {
 					case ',' :
 						seencomma = true;
-					/* FALLTHROUGH */
+						/* FALLTHROUGH */
 					case ' ' :
 					case '\r' :
 					case '\n' :
@@ -210,7 +222,7 @@
 						break;
 					default :
 						throw new IllegalArgumentException(
-								"invalid permission: " + actions); //$NON-NLS-1$
+								"invalid permission: " + actions);
 				}
 				i--;
 			}
@@ -218,7 +230,7 @@
 			i -= matchlen;
 		}
 		if (seencomma) {
-			throw new IllegalArgumentException("invalid permission: " + actions); //$NON-NLS-1$
+			throw new IllegalArgumentException("invalid permission: " + actions);
 		}
 		return mask;
 	}
@@ -245,13 +257,16 @@
 	 */
 	public boolean implies(Permission p) {
 		if (p instanceof TopicPermission) {
-			TopicPermission target = (TopicPermission) p;
-			if ((action_mask & target.action_mask) == target.action_mask) {
-				if (prefix != null) {
-					return target.getName().startsWith(prefix);
+			TopicPermission requested = (TopicPermission) p;
+			int requestedMask = requested.getActionsMask();
+			if ((getActionsMask() & requestedMask) == requestedMask) {
+				String requestedName = requested.getName();
+				String pre = prefix;
+				if (pre != null) {
+					return requestedName.startsWith(pre);
 				}
 
-				return target.getName().equals(getName());
+				return requestedName.equals(getName());
 			}
 		}
 		return false;
@@ -269,21 +284,23 @@
 	 *         <code>TopicPermission</code> actions.
 	 */
 	public String getActions() {
-		if (actions == null) {
+		String result = actions;
+		if (result == null) {
 			StringBuffer sb = new StringBuffer();
 			boolean comma = false;
-			if ((action_mask & ACTION_PUBLISH) == ACTION_PUBLISH) {
+			int mask = getActionsMask();
+			if ((mask & ACTION_PUBLISH) == ACTION_PUBLISH) {
 				sb.append(PUBLISH);
 				comma = true;
 			}
-			if ((action_mask & ACTION_SUBSCRIBE) == ACTION_SUBSCRIBE) {
+			if ((mask & ACTION_SUBSCRIBE) == ACTION_SUBSCRIBE) {
 				if (comma)
 					sb.append(',');
 				sb.append(SUBSCRIBE);
 			}
-			actions = sb.toString();
+			actions = result = sb.toString();
 		}
-		return actions;
+		return result;
 	}
 
 	/**
@@ -299,9 +316,8 @@
 	/**
 	 * Determines the equality of two <code>TopicPermission</code> objects.
 	 * 
-	 * This method checks that specified <code>TopicPermission</code> has the same topic name and
-	 * actions as this
-	 * <code>TopicPermission</code> object.
+	 * This method checks that specified <code>TopicPermission</code> has the
+	 * same topic name and actions as this <code>TopicPermission</code> object.
 	 * 
 	 * @param obj The object to test for equality with this
 	 *        <code>TopicPermission</code> object.
@@ -317,8 +333,9 @@
 		if (!(obj instanceof TopicPermission)) {
 			return false;
 		}
-		TopicPermission p = (TopicPermission) obj;
-		return (action_mask == p.action_mask) && getName().equals(p.getName());
+		TopicPermission tp = (TopicPermission) obj;
+		return (getActionsMask() == tp.getActionsMask())
+				&& getName().equals(tp.getName());
 	}
 
 	/**
@@ -327,18 +344,9 @@
 	 * @return A hash code value for this object.
 	 */
 	public int hashCode() {
-		return getName().hashCode() ^ getActions().hashCode();
-	}
-
-	/**
-	 * Returns the current action mask.
-	 * <p>
-	 * Used by the TopicPermissionCollection class.
-	 * 
-	 * @return Current action mask.
-	 */
-	int getMask() {
-		return action_mask;
+		int h = 31 * 17 + getName().hashCode();
+		h = 31 * h + getActions().hashCode();
+		return h;
 	}
 
 	/**
@@ -363,7 +371,7 @@
 			throws IOException, ClassNotFoundException {
 		// Read in the action, then initialize the rest
 		s.defaultReadObject();
-		init(getName(), getMask(actions));
+		setTransients(parseActions(actions));
 	}
 }
 
@@ -375,19 +383,21 @@
  * @see java.security.PermissionCollection
  */
 final class TopicPermissionCollection extends PermissionCollection {
-	static final long	serialVersionUID	= -614647783533924048L;
+	static final long		serialVersionUID	= -614647783533924048L;
 	/**
 	 * Table of permissions.
 	 * 
 	 * @serial
+	 * @GuardedBy this
 	 */
-	private Hashtable	permissions;
+	private final Hashtable	permissions;
 	/**
 	 * Boolean saying if "*" is in the collection.
 	 * 
 	 * @serial
+	 * @GuardedBy this
 	 */
-	private boolean		all_allowed;
+	private boolean			all_allowed;
 
 	/**
 	 * Create an empty TopicPermissions object.
@@ -405,36 +415,41 @@
 	 * @param permission The <code>TopicPermission</code> object to add.
 	 * 
 	 * @throws IllegalArgumentException If the permission is not a
-	 *            <code>TopicPermission</code> instance.
+	 *         <code>TopicPermission</code> instance.
 	 * 
-	 * @throws SecurityException If this
-	 *            <code>TopicPermissionCollection</code> object has been
-	 *            marked read-only.
-	 */
-	public void add(Permission permission) {
-		if (!(permission instanceof TopicPermission))
-			throw new IllegalArgumentException("invalid permission: " //$NON-NLS-1$
+	 * @throws SecurityException If this <code>TopicPermissionCollection</code>
+	 *         object has been marked read-only.
+	 */
+	public void add(final Permission permission) {
+		if (!(permission instanceof TopicPermission)) {
+			throw new IllegalArgumentException("invalid permission: "
 					+ permission);
-		if (isReadOnly())
-			throw new SecurityException("attempt to add a Permission to a " //$NON-NLS-1$
-					+ "readonly PermissionCollection"); //$NON-NLS-1$
-		TopicPermission pp = (TopicPermission) permission;
-		String name = pp.getName();
-		TopicPermission existing = (TopicPermission) permissions.get(name);
-		if (existing != null) {
-			int oldMask = existing.getMask();
-			int newMask = pp.getMask();
-			if (oldMask != newMask) {
-				permissions.put(name, new TopicPermission(name, oldMask
-						| newMask));
-			}
 		}
-		else {
-			permissions.put(name, permission);
-		}
-		if (!all_allowed) {
-			if (name.equals("*")) //$NON-NLS-1$
-				all_allowed = true;
+		if (isReadOnly()) {
+			throw new SecurityException("attempt to add a Permission to a "
+					+ "readonly PermissionCollection");
+		}
+		final TopicPermission tp = (TopicPermission) permission;
+		final String name = tp.getName();
+		final int newMask = tp.getActionsMask();
+
+		synchronized (this) {
+			final TopicPermission existing = (TopicPermission) permissions
+					.get(name);
+			if (existing != null) {
+				final int oldMask = existing.getActionsMask();
+				if (oldMask != newMask) {
+					permissions.put(name, new TopicPermission(name, oldMask
+							| newMask));
+				}
+			}
+			else {
+				permissions.put(name, tp);
+			}
+			if (!all_allowed) {
+				if (name.equals("*"))
+					all_allowed = true;
+			}
 		}
 	}
 
@@ -445,47 +460,55 @@
 	 * @param permission The Permission object to compare with this
 	 *        <code>TopicPermission</code> object.
 	 * 
-	 * @return <code>true</code> if <code>permission</code> is a proper
-	 *         subset of a permission in the set; <code>false</code>
-	 *         otherwise.
+	 * @return <code>true</code> if <code>permission</code> is a proper subset
+	 *         of a permission in the set; <code>false</code> otherwise.
 	 */
-	public boolean implies(Permission permission) {
-		if (!(permission instanceof TopicPermission))
+	public boolean implies(final Permission permission) {
+		if (!(permission instanceof TopicPermission)) {
 			return false;
-		TopicPermission pp = (TopicPermission) permission;
-		TopicPermission x;
-		int desired = pp.getMask();
+		}
+		final TopicPermission requested = (TopicPermission) permission;
+		String name = requested.getName();
+		final int desired = requested.getActionsMask();
 		int effective = 0;
+
+		TopicPermission x;
 		// short circuit if the "*" Permission was added
-		if (all_allowed) {
-			x = (TopicPermission) permissions.get("*"); //$NON-NLS-1$
-			if (x != null) {
-				effective |= x.getMask();
-				if ((effective & desired) == desired)
-					return true;
+		synchronized (this) {
+			if (all_allowed) {
+				x = (TopicPermission) permissions.get("*");
+				if (x != null) {
+					effective |= x.getActionsMask();
+					if ((effective & desired) == desired) {
+						return true;
+					}
+				}
 			}
+			x = (TopicPermission) permissions.get(name);
 		}
 		// strategy:
 		// Check for full match first. Then work our way up the
 		// name looking for matches on a/b/*
-		String name = pp.getName();
-		x = (TopicPermission) permissions.get(name);
 		if (x != null) {
 			// we have a direct hit!
-			effective |= x.getMask();
-			if ((effective & desired) == desired)
+			effective |= x.getActionsMask();
+			if ((effective & desired) == desired) {
 				return true;
+			}
 		}
 		// work our way up the tree...
-		int last, offset;
-		offset = name.length() - 1;
-		while ((last = name.lastIndexOf("/", offset)) != -1) { //$NON-NLS-1$
-			name = name.substring(0, last + 1) + "*"; //$NON-NLS-1$
-			x = (TopicPermission) permissions.get(name);
+		int last;
+		int offset = name.length() - 1;
+		while ((last = name.lastIndexOf("/", offset)) != -1) {
+			name = name.substring(0, last + 1) + "*";
+			synchronized (this) {
+				x = (TopicPermission) permissions.get(name);
+			}
 			if (x != null) {
-				effective |= x.getMask();
-				if ((effective & desired) == desired)
+				effective |= x.getActionsMask();
+				if ((effective & desired) == desired) {
 					return true;
+				}
 			}
 			offset = last - 1;
 		}
@@ -495,8 +518,8 @@
 	}
 
 	/**
-	 * Returns an enumeration of all <code>TopicPermission</code> objects in
-	 * the container.
+	 * Returns an enumeration of all <code>TopicPermission</code> objects in the
+	 * container.
 	 * 
 	 * @return Enumeration of all <code>TopicPermission</code> objects.
 	 */

Added: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/event/package.html
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/event/package.html?rev=797561&view=auto
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/event/package.html (added)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/event/package.html Fri Jul 24 17:06:37 2009
@@ -0,0 +1,10 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>Event Admin Package Version 1.2.
+<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.service.event; version=&quot;[1.2,2.0)&quot;
+</pre>
+</BODY>

Added: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/event/packageinfo
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/event/packageinfo?rev=797561&view=auto
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/event/packageinfo (added)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/event/packageinfo Fri Jul 24 17:06:37 2009
@@ -0,0 +1 @@
+version 1.2

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/http/HttpContext.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/http/HttpContext.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/http/HttpContext.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/http/HttpContext.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.http/src/org/osgi/service/http/HttpContext.java,v 1.12 2006/07/12 21:22:13 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2000, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2000, 2008). 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.
@@ -37,7 +35,7 @@
  * <p>
  * This interface is implemented by users of the <code>HttpService</code>.
  * 
- * @version $Revision: 1.12 $
+ * @version $Revision: 5673 $
  */
 public interface HttpContext {
 	/**

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/http/HttpService.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/http/HttpService.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/http/HttpService.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/http/HttpService.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.http/src/org/osgi/service/http/HttpService.java,v 1.13 2006/07/12 21:22:13 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2000, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2000, 2008). 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.
@@ -27,7 +25,7 @@
  * register resources and servlets into the URI namespace of Http Service. A
  * bundle may later unregister its resources or servlets.
  * 
- * @version $Revision: 1.13 $
+ * @version $Revision: 5673 $
  * @see HttpContext
  */
 public interface HttpService {
@@ -90,9 +88,10 @@
 	 * the registration will be mapped. An alias must begin with slash ('/') and
 	 * must not end with slash ('/'), with the exception that an alias of the
 	 * form &quot;/&quot; is used to denote the root alias. The name parameter
-	 * must also not end with slash ('/'). See the specification text for
-	 * details on how HTTP requests are mapped to servlet and resource
-	 * registrations.
+	 * must also not end with slash ('/') with the exception that a name of the
+	 * form &quot;/&quot; is used to denote the root of the bundle. See the
+	 * specification text for details on how HTTP requests are mapped to servlet
+	 * and resource registrations.
 	 * <p>
 	 * For example, suppose the resource name /tmp is registered to the alias
 	 * /files. A request for /files/foo.txt will map to the resource name
@@ -104,20 +103,20 @@
 	 * 
 	 * The Http Service will call the <code>HttpContext</code> argument to map
 	 * resource names to URLs and MIME types and to handle security for
-	 * requests. If the <code>HttpContext</code> argument is <code>null</code>, a
-	 * default <code>HttpContext</code> is used (see
+	 * requests. If the <code>HttpContext</code> argument is <code>null</code>,
+	 * a default <code>HttpContext</code> is used (see
 	 * {@link #createDefaultHttpContext}).
 	 * 
 	 * @param alias name in the URI namespace at which the resources are
 	 *        registered
 	 * @param name the base name of the resources that will be registered
 	 * @param context the <code>HttpContext</code> object for the registered
-	 *        resources, or <code>null</code> if a default <code>HttpContext</code>
-	 *        is to be created and used.
-	 * @throws NamespaceException if the registration fails because the alias
-	 *            is already in use.
-	 * @throws java.lang.IllegalArgumentException if any of the parameters
-	 *            are invalid
+	 *        resources, or <code>null</code> if a default
+	 *        <code>HttpContext</code> is to be created and used.
+	 * @throws NamespaceException if the registration fails because the alias is
+	 *         already in use.
+	 * @throws java.lang.IllegalArgumentException if any of the parameters are
+	 *         invalid
 	 */
 	public void registerResources(String alias, String name,
 			HttpContext context) throws NamespaceException;

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/http/NamespaceException.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/http/NamespaceException.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/http/NamespaceException.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/http/NamespaceException.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.http/src/org/osgi/service/http/NamespaceException.java,v 1.11 2006/07/11 13:15:56 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2000, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2000, 2008). 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,15 +20,11 @@
  * to register a servlet or resources into the URI namespace of the Http
  * Service. This exception indicates that the requested alias already is in use.
  * 
- * @version $Revision: 1.11 $
+ * @version $Revision: 6083 $
  */
 public class NamespaceException extends Exception {
     static final long serialVersionUID = 7235606031147877747L;
-	/**
-	 * Nested exception.
-	 */
-	private final Throwable	cause;
-
+    
 	/**
 	 * Construct a <code>NamespaceException</code> object with a detail message.
 	 * 
@@ -38,7 +32,6 @@
 	 */
 	public NamespaceException(String message) {
 		super(message);
-		cause = null;
 	}
 
 	/**
@@ -49,47 +42,47 @@
 	 * @param cause The nested exception.
 	 */
 	public NamespaceException(String message, Throwable cause) {
-		super(message);
-		this.cause = cause;
+		super(message, cause);
 	}
 
 	/**
 	 * Returns the nested exception.
-	 *
-     * <p>This method predates the general purpose exception chaining mechanism.
-     * The {@link #getCause()} method is now the preferred means of
-     * obtaining this information.
 	 * 
-	 * @return the nested exception or <code>null</code> if there is no nested
-	 *         exception.
+	 * <p>
+	 * This method predates the general purpose exception chaining mechanism.
+	 * The <code>getCause()</code> method is now the preferred means of
+	 * obtaining this information.
+	 * 
+	 * @return The result of calling <code>getCause()</code>.
 	 */
 	public Throwable getException() {
-		return cause;
+		return getCause();
 	}
-
+	
 	/**
-	 * Returns the cause of this exception or <code>null</code> if no
-	 * cause was specified when this exception was created.
-	 *
-	 * @return  The cause of this exception or <code>null</code> if no
-	 * cause was specified.
-	 * @since 1.2 
+	 * Returns the cause of this exception or <code>null</code> if no cause was
+	 * set.
+	 * 
+	 * @return The cause of this exception or <code>null</code> if no cause was
+	 *         set.
+	 * @since 1.2
 	 */
 	public Throwable getCause() {
-	    return cause;
+		return super.getCause();
 	}
 
 	/**
-	 * The cause of this exception can only be set when constructed.
-	 *
-	 * @param cause Cause of the exception.
-	 * @return This object.
-	 * @throws java.lang.IllegalStateException
-	 * This method will always throw an <code>IllegalStateException</code>
-	 * since the cause of this exception can only be set when constructed.
-	 * @since 1.2 
+	 * Initializes the cause of this exception to the specified value.
+	 * 
+	 * @param cause The cause of this exception.
+	 * @return This exception.
+	 * @throws IllegalArgumentException If the specified cause is this
+	 *         exception.
+	 * @throws IllegalStateException If the cause of this exception has already
+	 *         been set.
+	 * @since 1.2
 	 */
 	public Throwable initCause(Throwable cause) {
-		throw new IllegalStateException();
+		return super.initCause(cause);
 	}
 }

Added: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/http/package.html
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/http/package.html?rev=797561&view=auto
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/http/package.html (added)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/http/package.html Fri Jul 24 17:06:37 2009
@@ -0,0 +1,10 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>Http Service Package Version 1.2.
+<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.service.http; version=&quot;[1.2,2.0)&quot;
+</pre>
+</BODY>

Added: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/http/packageinfo
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/http/packageinfo?rev=797561&view=auto
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/http/packageinfo (added)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/http/packageinfo Fri Jul 24 17:06:37 2009
@@ -0,0 +1 @@
+version 1.2.1

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/io/ConnectionFactory.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/io/ConnectionFactory.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/io/ConnectionFactory.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/io/ConnectionFactory.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.io/src/org/osgi/service/io/ConnectionFactory.java,v 1.9 2006/07/12 21:22:12 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2002, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2002, 2008). 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.
@@ -34,7 +32,7 @@
  * Factory will then be called to create the actual <code>Connection</code>
  * object.
  * 
- * @version $Revision: 1.9 $
+ * @version $Revision: 7337 $
  */
 public interface ConnectionFactory {
 	/**

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/io/ConnectorService.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/io/ConnectorService.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/io/ConnectorService.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/io/ConnectorService.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.io/src/org/osgi/service/io/ConnectorService.java,v 1.9 2006/07/12 21:22:12 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2002, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2002, 2008). 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.
@@ -42,7 +40,7 @@
  * first, is called. This is the same algorithm used by
  * <code>BundleContext.getServiceReference</code>.
  * 
- * @version $Revision: 1.9 $
+ * @version $Revision: 5673 $
  */
 public interface ConnectorService {
 	/**

Added: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/io/package.html
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/io/package.html?rev=797561&view=auto
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/io/package.html (added)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/io/package.html Fri Jul 24 17:06:37 2009
@@ -0,0 +1,10 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>IO Connector 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.service.io; version=&quot;[1.0,2.0)&quot;, javax.microedition.io
+</pre>
+</BODY>

Added: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/io/packageinfo
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/io/packageinfo?rev=797561&view=auto
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/io/packageinfo (added)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/io/packageinfo Fri Jul 24 17:06:37 2009
@@ -0,0 +1 @@
+version 1.0

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/log/LogEntry.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/log/LogEntry.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/log/LogEntry.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/log/LogEntry.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.log/src/org/osgi/service/log/LogEntry.java,v 1.9 2006/06/16 16:31:49 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2000, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2000, 2008). 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.
@@ -29,7 +27,8 @@
  * <code>LogReaderService.getLog</code> method or by registering a
  * <code>LogListener</code> object.
  * 
- * @version $Revision: 1.9 $
+ * @ThreadSafe
+ * @version $Revision: 5654 $
  * @see LogReaderService#getLog
  * @see LogListener
  */

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/log/LogListener.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/log/LogListener.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/log/LogListener.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/log/LogListener.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.log/src/org/osgi/service/log/LogListener.java,v 1.9 2006/06/16 16:31:49 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2000, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2000, 2008). 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.
@@ -30,7 +28,8 @@
  * unregistered by calling the <code>LogReaderService.removeLogListener</code>
  * method.
  * 
- * @version $Revision: 1.9 $
+ * @ThreadSafe
+ * @version $Revision: 5654 $
  * @see LogReaderService
  * @see LogEntry
  * @see LogReaderService#addLogListener(LogListener)

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/log/LogReaderService.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/log/LogReaderService.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/log/LogReaderService.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/log/LogReaderService.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.log/src/org/osgi/service/log/LogReaderService.java,v 1.10 2006/06/16 16:31:49 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2000, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2000, 2008). 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.
@@ -31,7 +29,8 @@
  * method can be called which will return an <code>Enumeration</code> of all
  * <code>LogEntry</code> objects in the log.
  * 
- * @version $Revision: 1.10 $
+ * @ThreadSafe
+ * @version $Revision: 5654 $
  * @see LogEntry
  * @see LogListener
  * @see LogListener#logged(LogEntry)

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/log/LogService.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/log/LogService.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/log/LogService.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/log/LogService.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.log/src/org/osgi/service/log/LogService.java,v 1.9 2006/06/16 16:31:49 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2000, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2000, 2008). 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.
@@ -36,7 +34,8 @@
  * <li>{@link #LOG_DEBUG}
  * </ol>
  * 
- * @version $Revision: 1.9 $
+ * @ThreadSafe
+ * @version $Revision: 5654 $
  */
 public interface LogService {
 	/**

Added: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/log/package.html
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/log/package.html?rev=797561&view=auto
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/log/package.html (added)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/log/package.html Fri Jul 24 17:06:37 2009
@@ -0,0 +1,11 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>Log Service Package Version 1.3.
+<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.service.log; version=&quot;[1.3,2.0)&quot;
+</pre>
+</BODY>
+

Added: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/log/packageinfo
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/log/packageinfo?rev=797561&view=auto
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/log/packageinfo (added)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/log/packageinfo Fri Jul 24 17:06:37 2009
@@ -0,0 +1 @@
+version 1.3

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/AttributeDefinition.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/AttributeDefinition.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/AttributeDefinition.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/AttributeDefinition.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.metatype/src/org/osgi/service/metatype/AttributeDefinition.java,v 1.13 2006/06/16 16:31:23 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2001, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2001, 2008). 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.
@@ -24,7 +22,7 @@
  * An <code>AttributeDefinition</code> object defines a description of the data
  * type of a property/attribute.
  * 
- * @version $Revision: 1.13 $
+ * @version $Revision: 5673 $
  */
 public interface AttributeDefinition {
 	/**

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/MetaTypeInformation.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/MetaTypeInformation.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/MetaTypeInformation.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/MetaTypeInformation.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.metatype/src/org/osgi/service/metatype/MetaTypeInformation.java,v 1.8 2006/06/16 16:31:23 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2005, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2005, 2008). 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.
@@ -23,7 +21,7 @@
  * A MetaType Information object is created by the MetaTypeService to return
  * meta type information for a specific bundle.
  * 
- * @version $Revision: 1.8 $
+ * @version $Revision: 5673 $
  * @since 1.1
  */
 public interface MetaTypeInformation extends MetaTypeProvider {

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/MetaTypeProvider.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/MetaTypeProvider.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/MetaTypeProvider.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/MetaTypeProvider.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.metatype/src/org/osgi/service/metatype/MetaTypeProvider.java,v 1.11 2006/06/16 16:31:23 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2001, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2001, 2008). 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.
@@ -20,7 +18,7 @@
 /**
  * Provides access to metatypes.
  * 
- * @version $Revision: 1.11 $
+ * @version $Revision: 5673 $
  */
 public interface MetaTypeProvider {
 	/**

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/MetaTypeService.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/MetaTypeService.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/MetaTypeService.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/MetaTypeService.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.metatype/src/org/osgi/service/metatype/MetaTypeService.java,v 1.10 2006/06/16 16:31:23 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2005, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2005, 2008). 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.
@@ -33,7 +31,7 @@
  * retrieve meta type information for bundles which contain a meta type
  * documents or which provide their own <code>MetaTypeProvider</code> objects.
  * 
- * @version $Revision: 1.10 $
+ * @version $Revision: 5673 $
  * @since 1.1
  */
 public interface MetaTypeService {

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/ObjectClassDefinition.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/ObjectClassDefinition.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/ObjectClassDefinition.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/ObjectClassDefinition.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.metatype/src/org/osgi/service/metatype/ObjectClassDefinition.java,v 1.11 2006/06/16 16:31:23 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2001, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2001, 2008). 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.
@@ -23,7 +21,7 @@
 /**
  * Description for the data type information of an objectclass.
  * 
- * @version $Revision: 1.11 $
+ * @version $Revision: 5673 $
  */
 public interface ObjectClassDefinition {
 	/**

Added: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/package.html
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/package.html?rev=797561&view=auto
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/package.html (added)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/package.html Fri Jul 24 17:06:37 2009
@@ -0,0 +1,11 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>Metatype Package Version 1.1.
+<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.service.metatype; version=&quot;[1.1,2.0)&quot;
+</pre>
+</BODY>
+

Added: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/packageinfo
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/packageinfo?rev=797561&view=auto
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/packageinfo (added)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/metatype/packageinfo Fri Jul 24 17:06:37 2009
@@ -0,0 +1 @@
+version 1.1

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitorAdmin.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitorAdmin.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitorAdmin.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitorAdmin.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.monitor/src/org/osgi/service/monitor/MonitorAdmin.java,v 1.25 2006/06/16 16:31:25 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2004, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2004, 2008). 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.
@@ -29,14 +27,14 @@
  * <code>Monitorable</code> services from the service registry and then query
  * the list of <code>StatusVariable</code> names from the
  * <code>Monitorable</code> services. This way all services which publish
- * <code>StatusVariable</code>s will be returned regardless of whether they
- * do or do not hold the necessary <code>MonitorPermission</code> for
- * publishing <code>StatusVariable</code>s. By using the
- * <code>MonitorAdmin</code> to obtain the <code>StatusVariable</code>s it
- * is guaranteed that only those <code>Monitorable</code> services will be
- * accessed who are authorized to publish <code>StatusVariable</code>s. It is
- * the responsibility of the <code>MonitorAdmin</code> implementation to check
- * the required permissions and show only those variables which pass this check.
+ * <code>StatusVariable</code>s will be returned regardless of whether they do
+ * or do not hold the necessary <code>MonitorPermission</code> for publishing
+ * <code>StatusVariable</code>s. By using the <code>MonitorAdmin</code> to
+ * obtain the <code>StatusVariable</code>s it is guaranteed that only those
+ * <code>Monitorable</code> services will be accessed who are authorized to
+ * publish <code>StatusVariable</code>s. It is the responsibility of the
+ * <code>MonitorAdmin</code> implementation to check the required permissions
+ * and show only those variables which pass this check.
  * <p>
  * The events posted by <code>MonitorAdmin</code> contain the following
  * properties:
@@ -53,11 +51,13 @@
  * </ul>
  * <p>
  * Most of the methods require either a Monitorable ID or a Status Variable path
- * parameter, the latter in [Monitorable_ID]/[StatusVariable_ID] format.  These
+ * parameter, the latter in [Monitorable_ID]/[StatusVariable_ID] format. These
  * parameters must not be <code>null</code>, and the IDs they contain must
  * conform to their respective definitions in {@link Monitorable} and
- * {@link StatusVariable}.  If any of the restrictions are violated, the method
+ * {@link StatusVariable}. If any of the restrictions are violated, the method
  * must throw an <code>IllegalArgumentException</code>.
+ * 
+ * @version $Revision: 5673 $
  */
 public interface MonitorAdmin {
 

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitorListener.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitorListener.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitorListener.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitorListener.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.monitor/src/org/osgi/service/monitor/MonitorListener.java,v 1.11 2006/06/16 16:31:25 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2004, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2004, 2008). 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.
@@ -19,11 +17,13 @@
 package org.osgi.service.monitor;
 
 /**
- * The <code>MonitorListener</code> is used by <code>Monitorable</code>
- * services to send notifications when a <code>StatusVariable</code> value is
- * changed. The <code>MonitorListener</code> should register itself as a
- * service at the OSGi Service Registry. This interface must (only) be 
- * implemented by the Monitor Admin component.
+ * The <code>MonitorListener</code> is used by <code>Monitorable</code> services
+ * to send notifications when a <code>StatusVariable</code> value is changed.
+ * The <code>MonitorListener</code> should register itself as a service at the
+ * OSGi Service Registry. This interface must (only) be implemented by the
+ * Monitor Admin component.
+ * 
+ * @version $Revision: 5673 $
  */
 public interface MonitorListener {
     /**

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitorPermission.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitorPermission.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitorPermission.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitorPermission.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.monitor/src/org/osgi/service/monitor/MonitorPermission.java,v 1.17 2006/06/21 15:17:16 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2005, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2005, 2008). 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.
@@ -24,18 +22,20 @@
 
 /**
  * Indicates the callers authority to publish, read or reset
- * <code>StatusVariable</code>s, to switch event sending on or off or to
- * start monitoring jobs. The target of the permission is the identifier of the
+ * <code>StatusVariable</code>s, to switch event sending on or off or to start
+ * monitoring jobs. The target of the permission is the identifier of the
  * <code>StatusVariable</code>, the action can be <code>read</code>,
  * <code>publish</code>, <code>reset</code>, <code>startjob</code>,
- * <code>switchevents</code>, or the combination of these separated by
- * commas.  Action names are interpreted case-insensitively, but the canonical 
- * action string returned by {@link #getActions} uses the forms defined by the 
- * action constants.
+ * <code>switchevents</code>, or the combination of these separated by commas.
+ * Action names are interpreted case-insensitively, but the canonical action
+ * string returned by {@link #getActions} uses the forms defined by the action
+ * constants.
  * <p>
- * If the wildcard <code>*</code> appears in the actions field, all legal 
- * monitoring commands are allowed on the designated target(s) by the owner of 
+ * If the wildcard <code>*</code> appears in the actions field, all legal
+ * monitoring commands are allowed on the designated target(s) by the owner of
  * the permission.
+ * 
+ * @version $Revision: 5673 $
  */
 public class MonitorPermission extends Permission {
 

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/Monitorable.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/Monitorable.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/Monitorable.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/Monitorable.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.monitor/src/org/osgi/service/monitor/Monitorable.java,v 1.17 2006/06/16 16:31:25 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2004, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2004, 2008). 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.
@@ -20,11 +18,11 @@
 
 /**
  * A <code>Monitorable</code> can provide information about itself in the form
- * of <code>StatusVariables</code>. Instances of this interface should
- * register themselves at the OSGi Service Registry. The
- * <code>MonitorAdmin</code> listens to the registration of
- * <code>Monitorable</code> services, and makes the information they provide
- * available also through the Device Management Tree (DMT) for remote access.
+ * of <code>StatusVariables</code>. Instances of this interface should register
+ * themselves at the OSGi Service Registry. The <code>MonitorAdmin</code>
+ * listens to the registration of <code>Monitorable</code> services, and makes
+ * the information they provide available also through the Device Management
+ * Tree (DMT) for remote access.
  * <p>
  * The monitorable service is identified by its PID string which must be a non-
  * <code>null</code>, non-empty string that conforms to the "symbolic-name"
@@ -32,17 +30,19 @@
  * characters [-_.a-zA-Z0-9] may be used. The length of the PID must not exceed
  * 20 characters.
  * <p>
- * A <code>Monitorable</code> may optionally support sending notifications
- * when the status of its <code>StatusVariables</code> change. Support for
- * change notifications can be defined per <code>StatusVariable</code>.
+ * A <code>Monitorable</code> may optionally support sending notifications when
+ * the status of its <code>StatusVariables</code> change. Support for change
+ * notifications can be defined per <code>StatusVariable</code>.
  * <p>
  * Publishing <code>StatusVariables</code> requires the presence of the
- * <code>MonitorPermission</code> with the <code>publish</code> action
- * string. This permission, however, is not checked during registration of the
+ * <code>MonitorPermission</code> with the <code>publish</code> action string.
+ * This permission, however, is not checked during registration of the
  * <code>Monitorable</code> service. Instead, the <code>MonitorAdmin</code>
  * implemenatation must make sure that when a <code>StatusVariable</code> is
  * queried, it is shown only if the <code>Monitorable</code> is authorized to
  * publish the given <code>StatusVariable</code>.
+ * 
+ * @version $Revision: 5673 $
  */
 public interface Monitorable {
     /**

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitoringJob.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitoringJob.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitoringJob.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitoringJob.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.monitor/src/org/osgi/service/monitor/MonitoringJob.java,v 1.14 2006/06/16 16:31:25 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2004, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2004, 2008). 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.
@@ -20,28 +18,29 @@
 
 /**
  * A Monitoring Job is a request for scheduled or event based notifications on
- * update of a set of <code>StatusVariable</code>s. The job is a data
- * structure that holds a non-empty list of <code>StatusVariable</code> names,
- * an identification of the initiator of the job, and the sampling parameters.
+ * update of a set of <code>StatusVariable</code>s. The job is a data structure
+ * that holds a non-empty list of <code>StatusVariable</code> names, an
+ * identification of the initiator of the job, and the sampling parameters.
  * There are two kinds of monitoring jobs: time based and change based. Time
- * based jobs take samples of all <code>StatusVariable</code>s with a
- * specified frequency. The number of samples to be taken before the job
- * finishes may be specified. Change based jobs are only interested in the
- * changes of the monitored <code>StatusVariable</code>s. In this case, the
- * number of changes that must take place between two notifications can be
- * specified.
+ * based jobs take samples of all <code>StatusVariable</code>s with a specified
+ * frequency. The number of samples to be taken before the job finishes may be
+ * specified. Change based jobs are only interested in the changes of the
+ * monitored <code>StatusVariable</code>s. In this case, the number of changes
+ * that must take place between two notifications can be specified.
  * <p>
  * The job can be started on the <code>MonitorAdmin</code> interface. Running
- * the job (querying the <code>StatusVariable</code>s, listening to changes,
- * and sending out notifications on updates) is the task of the
+ * the job (querying the <code>StatusVariable</code>s, listening to changes, and
+ * sending out notifications on updates) is the task of the
  * <code>MonitorAdmin</code> implementation.
  * <p>
  * Whether a monitoring job keeps track dynamically of the
- * <code>StatusVariable</code>s it monitors is not specified. This means that
- * if we monitor a <code>StatusVariable</code> of a <code>Monitorable</code>
+ * <code>StatusVariable</code>s it monitors is not specified. This means that if
+ * we monitor a <code>StatusVariable</code> of a <code>Monitorable</code>
  * service which disappears and later reappears then it is implementation
  * specific whether we still receive updates of the <code>StatusVariable</code>
  * changes or not.
+ * 
+ * @version $Revision: 5673 $
  */
 public interface MonitoringJob {
     /**

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/StatusVariable.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/StatusVariable.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/StatusVariable.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/StatusVariable.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.monitor/src/org/osgi/service/monitor/StatusVariable.java,v 1.14 2006/06/16 16:31:25 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2004, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2004, 2008). 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.
@@ -33,6 +31,8 @@
  * definition in the OSGi core specification. This means that only the
  * characters [-_.a-zA-Z0-9] may be used. The length of the ID must not exceed
  * 32 bytes when UTF-8 encoded.
+ * 
+ * @version $Revision: 5673 $
  */
 public final class StatusVariable {
     //----- Public constants -----//

Added: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/package.html
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/package.html?rev=797561&view=auto
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/package.html (added)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/package.html Fri Jul 24 17:06:37 2009
@@ -0,0 +1,10 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>Monitor Admin 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.service.monitor; version=&quot;[1.0,2.0)&quot;
+</pre>
+</BODY>

Added: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/packageinfo
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/packageinfo?rev=797561&view=auto
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/packageinfo (added)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/monitor/packageinfo Fri Jul 24 17:06:37 2009
@@ -0,0 +1 @@
+version 1.0

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/prefs/BackingStoreException.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/prefs/BackingStoreException.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/prefs/BackingStoreException.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/prefs/BackingStoreException.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.prefs/src/org/osgi/service/prefs/BackingStoreException.java,v 1.12 2006/07/11 13:15:55 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2001, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2001, 2008). 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.
@@ -21,63 +19,57 @@
  * Thrown to indicate that a preferences operation could not complete because of
  * a failure in the backing store, or a failure to contact the backing store.
  * 
- * @version $Revision: 1.12 $
+ * @version $Revision: 6083 $
  */
 public class BackingStoreException extends Exception {
     static final long serialVersionUID = -1415637364122829574L;
-	/**
-	 * Nested exception.
-	 */
-	private final Throwable	cause;
 
 	/**
 	 * Constructs a <code>BackingStoreException</code> with the specified detail
 	 * message.
 	 * 
-	 * @param s The detail message.
+	 * @param message The detail message.
 	 */
-	public BackingStoreException(String s) {
-		super(s);
-		this.cause = null;
+	public BackingStoreException(String message) {
+		super(message);
 	}
 	
 	/**
 	 * Constructs a <code>BackingStoreException</code> with the specified detail
 	 * message.
 	 * 
-	 * @param s The detail message.
+	 * @param message The detail message.
 	 * @param cause The cause of the exception. May be <code>null</code>.
 	 * @since 1.1 
 	 */
-	public BackingStoreException(String s, Throwable cause) {
-		super(s);
-		this.cause = cause;
+	public BackingStoreException(String message, Throwable cause) {
+		super(message, cause);
 	}
-	
+
 	/**
 	 * Returns the cause of this exception or <code>null</code> if no cause was
-	 * specified when this exception was created.
+	 * set.
 	 * 
 	 * @return The cause of this exception or <code>null</code> if no cause was
-	 *         specified.
-	 * @since 1.1 
+	 *         set.
+	 * @since 1.1
 	 */
 	public Throwable getCause() {
-		return cause;
+		return super.getCause();
 	}
 
 	/**
-	 * The cause of this exception can only be set when constructed.
+	 * Initializes the cause of this exception to the specified value.
 	 * 
-	 * @param cause Cause of the exception.
-	 * @return This object.
-	 * @throws java.lang.IllegalStateException This method will always throw an
-	 *         <code>IllegalStateException</code> since the cause of this
-	 *         exception can only be set when constructed.
-	 * @since 1.1 
+	 * @param cause The cause of this exception.
+	 * @return This exception.
+	 * @throws IllegalArgumentException If the specified cause is this
+	 *         exception.
+	 * @throws IllegalStateException If the cause of this exception has already
+	 *         been set.
+	 * @since 1.1
 	 */
 	public Throwable initCause(Throwable cause) {
-		throw new IllegalStateException();
+		return super.initCause(cause);
 	}
-
 }

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/prefs/Preferences.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/prefs/Preferences.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/prefs/Preferences.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/prefs/Preferences.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.prefs/src/org/osgi/service/prefs/Preferences.java,v 1.11 2006/07/11 00:54:04 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2001, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2001, 2008). 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.
@@ -110,7 +108,7 @@
  * preference data.
  * 
  * 
- * @version $Revision: 1.11 $
+ * @version $Revision: 5673 $
  */
 public interface Preferences {
 	/**

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/prefs/PreferencesService.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/prefs/PreferencesService.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/prefs/PreferencesService.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/prefs/PreferencesService.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.prefs/src/org/osgi/service/prefs/PreferencesService.java,v 1.10 2006/06/16 16:31:30 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2001, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2001, 2008). 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.

Added: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/prefs/package.html
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/prefs/package.html?rev=797561&view=auto
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/prefs/package.html (added)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/prefs/package.html Fri Jul 24 17:06:37 2009
@@ -0,0 +1,11 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>Preferences Service Package Version 1.1.
+<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.service.prefs; version=&quot;[1.1,2.0)&quot;
+</pre>
+</BODY>
+

Added: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/prefs/packageinfo
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/prefs/packageinfo?rev=797561&view=auto
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/prefs/packageinfo (added)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/prefs/packageinfo Fri Jul 24 17:06:37 2009
@@ -0,0 +1 @@
+version 1.1.1

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/provisioning/ProvisioningService.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/provisioning/ProvisioningService.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/provisioning/ProvisioningService.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/provisioning/ProvisioningService.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.provisioning/src/org/osgi/service/provisioning/ProvisioningService.java,v 1.11 2006/07/12 21:21:31 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2002, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2002, 2008). 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.
@@ -31,14 +29,15 @@
  * these bundles to exchange information. It also provides a means for the
  * initial Management Bundle to get its initial configuration information.
  * <p>
- * The provisioning information is collected in a <code>Dictionary</code> object,
- * called the Provisioning Dictionary. Any bundle that can access the service
- * can get a reference to this object and read and update provisioning
- * information. The key of the dictionary is a <code>String</code> object and the
- * value is a <code>String</code> or <code>byte[]</code> object. The single
- * exception is the PROVISIONING_UPDATE_COUNT value which is an Integer. The
- * <code>provisioning</code> prefix is reserved for keys defined by OSGi, other
- * key names may be used for implementation dependent provisioning systems.
+ * The provisioning information is collected in a <code>Dictionary</code>
+ * object, called the Provisioning Dictionary. Any bundle that can access the
+ * service can get a reference to this object and read and update provisioning
+ * information. The key of the dictionary is a <code>String</code> object and
+ * the value is a <code>String</code> or <code>byte[]</code> object. The
+ * single exception is the PROVISIONING_UPDATE_COUNT value which is an Integer.
+ * The <code>provisioning</code> prefix is reserved for keys defined by OSGi,
+ * other key names may be used for implementation dependent provisioning
+ * systems.
  * <p>
  * Any changes to the provisioning information will be reflected immediately in
  * all the dictionary objects obtained from the Provisioning Service.
@@ -54,11 +53,11 @@
  * drastic consequences. Thus, only trusted bundles should be allowed to
  * register and get the Provisioning Service. The <code>ServicePermission</code>
  * is used to limit the bundles that can gain access to the Provisioning
- * Service. There is no check of <code>Permission</code> objects to read or modify
- * the provisioning information, so care must be taken not to leak the
+ * Service. There is no check of <code>Permission</code> objects to read or
+ * modify the provisioning information, so care must be taken not to leak the
  * Provisioning Dictionary received from <code>getInformation</code> method.
  * 
- * @version $Revision: 1.11 $
+ * @version $Revision: 7347 $
  */
 public interface ProvisioningService {
 	/**
@@ -66,17 +65,20 @@
 	 * Service Platform. The value must be of type <code>String</code>.
 	 */
 	public final static String	PROVISIONING_SPID			= "provisioning.spid";
+
 	/**
 	 * The key to the provisioning information that contains the location of the
 	 * provision data provider. The value must be of type <code>String</code>.
 	 */
 	public final static String	PROVISIONING_REFERENCE		= "provisioning.reference";
+	
 	/**
 	 * The key to the provisioning information that contains the initial
 	 * configuration information of the initial Management Agent. The value will
 	 * be of type <code>byte[]</code>.
 	 */
 	public final static String	PROVISIONING_AGENT_CONFIG	= "provisioning.agent.config";
+	
 	/**
 	 * The key to the provisioning information that contains the update count of
 	 * the info data. Each set of changes to the provisioning information must
@@ -85,39 +87,59 @@
 	 * properties of the ProvisioningService in the service registry.
 	 */
 	public final static String	PROVISIONING_UPDATE_COUNT	= "provisioning.update.count";
+	
 	/**
 	 * The key to the provisioning information that contains the location of the
-	 * bundle to start with <code>AllPermission</code>. The bundle must have be
-	 * previously installed for this entry to have any effect.
+	 * bundle to start with <code>AllPermission</code>. The bundle must have
+	 * be previously installed for this entry to have any effect.
 	 */
 	public final static String	PROVISIONING_START_BUNDLE	= "provisioning.start.bundle";
+	
 	/**
 	 * The key to the provisioning information that contains the root X509
-	 * certificate used to esatblish trust with operator when using HTTPS.
+	 * certificate used to establish trust with operator when using HTTPS.
 	 */
 	public final static String	PROVISIONING_ROOTX509		= "provisioning.rootx509";
+	
 	/**
 	 * The key to the provisioning information that contains the shared secret
 	 * used in conjunction with the RSH protocol.
 	 */
 	public final static String	PROVISIONING_RSH_SECRET		= "provisioning.rsh.secret";
+
 	/**
-	 * MIME type to be stored in the extra field of a <code>ZipEntry</code> object
-	 * for String data.
+	 * MIME type to be stored in the extra field of a <code>ZipEntry</code>
+	 * object for String data.
 	 */
 	public final static String	MIME_STRING					= "text/plain;charset=utf-8";
+
 	/**
-	 * MIME type to be stored in the extra field of a <code>ZipEntry</code> object
-	 * for <code>byte[]</code> data.
+	 * MIME type to be stored stored in the extra field of a
+	 * <code>ZipEntry</code> object for <code>byte[]</code> data.
 	 */
 	public final static String	MIME_BYTE_ARRAY				= "application/octet-stream";
+
 	/**
-	 * MIME type to be stored in the extra field of a <code>ZipEntry</code> object
-	 * for an installable bundle file. Zip entries of this type will be
+	 * MIME type to be stored in the extra field of a <code>ZipEntry</code>
+	 * object for an installable bundle file. Zip entries of this type will be
 	 * installed in the framework, but not started. The entry will also not be
 	 * put into the information dictionary.
 	 */
-	public final static String	MIME_BUNDLE					= "application/x-osgi-bundle";
+	public final static String	MIME_BUNDLE					= "application/vnd.osgi.bundle";
+
+	/**
+	 * Alternative MIME type to be stored in the extra field of a
+	 * <code>ZipEntry</code> object for an installable bundle file. Zip entries
+	 * of this type will be installed in the framework, but not started. The
+	 * entry will also not be put into the information dictionary. This
+	 * alternative entry is only for backward compatibility, new applications
+	 * are recommended to use <code>MIME_BUNDLE</code>, which is an official
+	 * IANA MIME type.
+	 * 
+	 * @since 1.2
+	 */
+	public final static String	MIME_BUNDLE_ALT				= "application/x-osgi-bundle";
+
 	/**
 	 * MIME type to be stored in the extra field of a ZipEntry for a String that
 	 * represents a URL for a bundle. Zip entries of this type will be used to
@@ -127,20 +149,30 @@
 	public final static String	MIME_BUNDLE_URL				= "text/x-osgi-bundle-url";
 
 	/**
+	 * Name of the header that specifies the type information for the ZIP file
+	 * entries.
+	 * 
+	 * @since 1.2
+	 */	
+	public final static String INITIALPROVISIONING_ENTRIES = "InitialProvisioning-Entries";
+	
+	/**
 	 * Returns a reference to the Provisioning Dictionary. Any change operations
 	 * (put and remove) to the dictionary will cause an
-	 * <code>UnsupportedOperationException</code> to be thrown. Changes must be
-	 * done using the <code>setInformation</code> and <code>addInformation</code>
-	 * methods of this service.
+	 * <code>UnsupportedOperationException</code> to be thrown. Changes must
+	 * be done using the <code>setInformation</code> and
+	 * <code>addInformation</code> methods of this service.
+	 * 
 	 * @return A reference to the Provisioning Dictionary.
 	 */
 	public Dictionary getInformation();
 
 	/**
 	 * Replaces the Provisioning Information dictionary with the key/value pairs
-	 * contained in <code>info</code>. Any key/value pairs not in <code>info</code>
-	 * will be removed from the Provisioning Information dictionary. This method
-	 * causes the <code>PROVISIONING_UPDATE_COUNT</code> to be incremented.
+	 * contained in <code>info</code>. Any key/value pairs not in
+	 * <code>info</code> will be removed from the Provisioning Information
+	 * dictionary. This method causes the <code>PROVISIONING_UPDATE_COUNT</code>
+	 * to be incremented.
 	 * 
 	 * @param info the new set of Provisioning Information key/value pairs. Any
 	 *        keys are values that are of an invalid type will be silently
@@ -149,8 +181,8 @@
 	public void setInformation(Dictionary info);
 
 	/**
-	 * Adds the key/value pairs contained in <code>info</code> to the Provisioning
-	 * Information dictionary. This method causes the
+	 * Adds the key/value pairs contained in <code>info</code> to the
+	 * Provisioning Information dictionary. This method causes the
 	 * <code>PROVISIONING_UPDATE_COUNT</code> to be incremented.
 	 * 
 	 * @param info the set of Provisioning Information key/value pairs to add to
@@ -160,22 +192,22 @@
 	public void addInformation(Dictionary info);
 
 	/**
-	 * Processes the <code>ZipInputStream</code> and extracts information to add
-	 * to the Provisioning Information dictionary, as well as, install/update
-	 * and start bundles. This method causes the
+	 * Processes the <code>ZipInputStream</code> and extracts information to
+	 * add to the Provisioning Information dictionary, as well as,
+	 * install/update and start bundles. This method causes the
 	 * <code>PROVISIONING_UPDATE_COUNT</code> to be incremented.
 	 * 
 	 * @param zis the <code>ZipInputStream</code> that will be used to add
 	 *        key/value pairs to the Provisioning Information dictionary and
-	 *        install and start bundles. If a <code>ZipEntry</code> does not have
-	 *        an <code>Extra</code> field that corresponds to one of the four
-	 *        defined MIME types (<code>MIME_STRING</code>,
+	 *        install and start bundles. If a <code>ZipEntry</code> does not
+	 *        have an <code>Extra</code> field that corresponds to one of the
+	 *        four defined MIME types (<code>MIME_STRING</code>,
 	 *        <code>MIME_BYTE_ARRAY</code>,<code>MIME_BUNDLE</code>, and
 	 *        <code>MIME_BUNDLE_URL</code>) in will be silently ignored.
 	 * @throws IOException if an error occurs while processing the
-	 *            ZipInputStream. No additions will be made to the Provisioning
-	 *            Information dictionary and no bundles must be started or
-	 *            installed.
+	 *         ZipInputStream. No additions will be made to the Provisioning
+	 *         Information dictionary and no bundles must be started or
+	 *         installed.
 	 */
 	public void addInformation(ZipInputStream zis) throws IOException;
 }

Added: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/provisioning/package.html
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/provisioning/package.html?rev=797561&view=auto
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/provisioning/package.html (added)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/provisioning/package.html Fri Jul 24 17:06:37 2009
@@ -0,0 +1,10 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>Provisioning Package Version 1.2.
+<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.service.provisioning; version=&quot;[1.2,2.0)&quot;
+</pre>
+</BODY>

Added: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/provisioning/packageinfo
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/provisioning/packageinfo?rev=797561&view=auto
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/provisioning/packageinfo (added)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/provisioning/packageinfo Fri Jul 24 17:06:37 2009
@@ -0,0 +1 @@
+version 1.2

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/upnp/UPnPAction.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/upnp/UPnPAction.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/upnp/UPnPAction.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/upnp/UPnPAction.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.upnp/src/org/osgi/service/upnp/UPnPAction.java,v 1.10 2006/06/16 16:31:46 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2002, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2002, 2008). 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.
@@ -24,7 +22,8 @@
  * 
  * Each UPnP service contains zero or more actions. Each action may have zero or
  * more UPnP state variables as arguments.
- *  
+ * 
+ * @version $Revision: 5673 $
  */
 public interface UPnPAction {
 	/**

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/upnp/UPnPDevice.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/upnp/UPnPDevice.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/upnp/UPnPDevice.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/upnp/UPnPDevice.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.upnp/src/org/osgi/service/upnp/UPnPDevice.java,v 1.9 2006/06/16 16:31:46 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2002, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2002, 2008). 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.
@@ -36,7 +34,8 @@
  * <p>
  * If an application wants to query for a set of localized property values, it
  * has to use the method <code>UPnPDevice.getDescriptions(String locale)</code>.
- *  
+ * 
+ * @version $Revision: 5673 $
  */
 public interface UPnPDevice {
 	/*

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/upnp/UPnPEventListener.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/upnp/UPnPEventListener.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/upnp/UPnPEventListener.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/upnp/UPnPEventListener.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.upnp/src/org/osgi/service/upnp/UPnPEventListener.java,v 1.8 2006/06/16 16:31:46 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2002, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2002, 2008). 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.
@@ -25,9 +23,9 @@
  * generated by a particular UPnP Device registers a service extending this
  * interface.
  * <p>
- * The notification call from the UPnP Service to any <code>UPnPEventListener</code>
- * object must be done asynchronous with respect to the originator (in a
- * separate thread).
+ * The notification call from the UPnP Service to any
+ * <code>UPnPEventListener</code> object must be done asynchronous with respect
+ * to the originator (in a separate thread).
  * <p>
  * Upon registration of the UPnP Event Listener service with the Framework, the
  * service is notified for each variable which it listens for with an initial
@@ -56,6 +54,8 @@
  * <li><code>UPnPService.ID</code>-- The ID of a specific service to listen for
  * events.</li>
  * </ul>
+ * 
+ * @version $Revision: 5673 $
  */
 public interface UPnPEventListener {
 	/**

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/upnp/UPnPException.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/upnp/UPnPException.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/upnp/UPnPException.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/upnp/UPnPException.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.upnp/src/org/osgi/service/upnp/UPnPException.java,v 1.14 2006/07/12 21:21:34 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2005, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2005, 2008). 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.
@@ -17,12 +15,12 @@
  */
 package org.osgi.service.upnp;
 
-
 /**
  * There are several defined error situations describing UPnP problems while a
  * control point invokes actions to UPnPDevices.
  * 
  * @since 1.1
+ * @version $Revision: 5673 $
  */
 public class UPnPException extends Exception {
 	static final long		serialVersionUID		= -262013318122195146L;

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/upnp/UPnPIcon.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/upnp/UPnPIcon.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/upnp/UPnPIcon.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/upnp/UPnPIcon.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.upnp/src/org/osgi/service/upnp/UPnPIcon.java,v 1.12 2006/07/12 21:21:34 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2002, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2002, 2008). 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.
@@ -24,6 +22,8 @@
  * A UPnP icon representation.
  * 
  * Each UPnP device can contain zero or more icons.
+ * 
+ * @version $Revision: 5673 $
  */
 public interface UPnPIcon {
 	/**

Modified: felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/upnp/UPnPLocalStateVariable.java
URL: http://svn.apache.org/viewvc/felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/upnp/UPnPLocalStateVariable.java?rev=797561&r1=797560&r2=797561&view=diff
==============================================================================
--- felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/upnp/UPnPLocalStateVariable.java (original)
+++ felix/trunk/org.osgi.compendium/src/main/java/org/osgi/service/upnp/UPnPLocalStateVariable.java Fri Jul 24 17:06:37 2009
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/org.osgi.service.upnp/src/org/osgi/service/upnp/UPnPLocalStateVariable.java,v 1.12 2006/06/16 16:31:46 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2005, 2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2005, 2008). 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.
@@ -29,6 +27,8 @@
  * be queried.
  * 
  * @since 1.1
+ * 
+ * @version $Revision: 5673 $
  */
 public interface UPnPLocalStateVariable extends UPnPStateVariable {
 	/**