Upgrade to latest OSGi compendium API. (FELIX-1205)


git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@797561 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/Acl.java b/org.osgi.compendium/src/main/java/info/dmtree/Acl.java
index b550d8d..b502c26 100644
--- a/org.osgi.compendium/src/main/java/info/dmtree/Acl.java
+++ b/org.osgi.compendium/src/main/java/info/dmtree/Acl.java
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/info.dmtree/src/info/dmtree/Acl.java,v 1.6 2006/07/12 21:21:37 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.
@@ -17,22 +15,27 @@
  */
 package info.dmtree;
 
-import java.util.*;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.TreeMap;
+import java.util.Vector;
 
 /**
- * <code>Acl</code> is an immutable class representing structured access to
- * DMT ACLs. Under OMA DM the ACLs are defined as strings with an internal
- * syntax.
+ * <code>Acl</code> is an immutable class representing structured access to DMT
+ * ACLs. Under OMA DM the ACLs are defined as strings with an internal syntax.
  * <p>
  * The methods of this class taking a principal as parameter accept remote
- * server IDs (as passed to
- * {@link DmtAdmin#getSession(String, String, int) DmtAdmin.getSession}), as
- * well as &quot; <code>*</code> &quot; indicating any principal.
+ * server IDs (as passed to {@link DmtAdmin#getSession(String, String, int)
+ * DmtAdmin.getSession}), as well as &quot; <code>*</code> &quot; indicating any
+ * principal.
  * <p>
  * The syntax for valid remote server IDs:<br>
- * &lt;<i>server-identifier</i>&gt; ::= All printable characters except 
- *   <code>'='</code>, <code>'&amp;'</code>, <code>'*'</code>, <code>'+'</code>
- *    or white-space characters.
+ * &lt;<i>server-identifier</i>&gt; ::= All printable characters except
+ * <code>'='</code>, <code>'&amp;'</code>, <code>'*'</code>, <code>'+'</code> or white-space
+ * characters.
+ * 
+ * @version $Revision: 5673 $
  */
 public final class Acl {
 
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/DmtAdmin.java b/org.osgi.compendium/src/main/java/info/dmtree/DmtAdmin.java
index abfcc6f..eea6e99 100644
--- a/org.osgi.compendium/src/main/java/info/dmtree/DmtAdmin.java
+++ b/org.osgi.compendium/src/main/java/info/dmtree/DmtAdmin.java
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/info.dmtree/src/info/dmtree/DmtAdmin.java,v 1.9 2006/07/11 16:59:41 tszeredi 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.
@@ -23,8 +21,9 @@
  * service registry as a service. <code>DmtAdmin</code> is the entry point for
  * applications to use the DMT API.
  * <p>
- * The <code>getSession</code> methods are used to open a session on a
- * specified subtree of the DMT. A typical way of usage:
+ * The <code>getSession</code> methods are used to open a session on a specified
+ * subtree of the DMT. A typical way of usage:
+ * 
  * <pre>
  * serviceRef = context.getServiceReference(DmtAdmin.class.getName());
  * DmtAdmin admin = (DmtAdmin) context.getService(serviceRef);
@@ -39,22 +38,24 @@
  * segment using the {@link Uri#mangle(String)} method.
  * <p>
  * It is possible to specify a lock mode when opening the session (see lock type
- * constants in {@link DmtSession}).  This determines whether the session can
- * run in parallel with other sessions, and the kinds of operations that can be 
- * performed in the session.  All Management Objects constituting the device 
- * management tree must support read operations on their nodes, while support 
- * for write operations depends on the Management Object. Management Objects 
- * supporting write access may support transactional write, non-transactional 
- * write or both. Users of <code>DmtAdmin</code> should consult the Management 
- * Object specification and implementation for the supported update modes. If 
- * Management Object definition permits, implementations are encouraged to 
- * support both update modes. 
+ * constants in {@link DmtSession}). This determines whether the session can run
+ * in parallel with other sessions, and the kinds of operations that can be
+ * performed in the session. All Management Objects constituting the device
+ * management tree must support read operations on their nodes, while support
+ * for write operations depends on the Management Object. Management Objects
+ * supporting write access may support transactional write, non-transactional
+ * write or both. Users of <code>DmtAdmin</code> should consult the Management
+ * Object specification and implementation for the supported update modes. If
+ * Management Object definition permits, implementations are encouraged to
+ * support both update modes.
  * <p>
  * This interface also contains methods for manipulating the set of
  * <code>DmtEventListener</code> objects that are called when the structure or
  * content of the tree is changed. These methods are not needed in an OSGi
- * environment, clients should register listeners through the Event Admin 
+ * environment, clients should register listeners through the Event Admin
  * service.
+ * 
+ * @version $Revision: 5673 $
  */
 public interface DmtAdmin {
     /**
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/DmtData.java b/org.osgi.compendium/src/main/java/info/dmtree/DmtData.java
index 51c5cae..264ecf9 100644
--- a/org.osgi.compendium/src/main/java/info/dmtree/DmtData.java
+++ b/org.osgi.compendium/src/main/java/info/dmtree/DmtData.java
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/info.dmtree/src/info/dmtree/DmtData.java,v 1.8 2006/07/10 21:37:07 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.
@@ -38,6 +36,8 @@
  * of future data formats. When using these formats, the actual format name is
  * specified as a <code>String</code>. The application is responsible for the
  * proper encoding of the data according to the specified format.
+ * 
+ * @version $Revision: 5673 $
  */
 public final class DmtData {
 
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/DmtEvent.java b/org.osgi.compendium/src/main/java/info/dmtree/DmtEvent.java
index dac4f1d..1b24fdc 100644
--- a/org.osgi.compendium/src/main/java/info/dmtree/DmtEvent.java
+++ b/org.osgi.compendium/src/main/java/info/dmtree/DmtEvent.java
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/info.dmtree/src/info/dmtree/DmtEvent.java,v 1.8 2006/07/04 12:12:16 tszeredi 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.
@@ -27,8 +25,8 @@
  * actually performed.
  * <p>
  * An event is generated for each group of nodes added, deleted, replaced,
- * renamed or copied, in this order.  Events are also generated when sessions
- * are opened and closed.
+ * renamed or copied, in this order. Events are also generated when sessions are
+ * opened and closed.
  * <p>
  * The <code>type</code> of the event describes the change that triggered the
  * event delivery. Each event carries the unique identifier of the session in
@@ -41,14 +39,16 @@
  * decision is based on the principal specified when the listener was
  * registered:
  * <ul>
- * <li> If the listener was registered specifying an explicit principal, using
+ * <li>If the listener was registered specifying an explicit principal, using
  * the {@link DmtAdmin#addEventListener(String, int, String, DmtEventListener)}
  * method, then the target node ACLs should be checked for providing GET access
  * to the specified principal;
- * <li> When the listener was registered without an explicit principal then the
- * listener needs GET {@link info.dmtree.security.DmtPermission} for
- * the corresponding node.
+ * <li>When the listener was registered without an explicit principal then the
+ * listener needs GET {@link info.dmtree.security.DmtPermission} for the
+ * corresponding node.
  * </ul>
+ * 
+ * @version $Revision: 5673 $
  */
 public interface DmtEvent {
 
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/DmtEventListener.java b/org.osgi.compendium/src/main/java/info/dmtree/DmtEventListener.java
index c5425b7..a0cf664 100644
--- a/org.osgi.compendium/src/main/java/info/dmtree/DmtEventListener.java
+++ b/org.osgi.compendium/src/main/java/info/dmtree/DmtEventListener.java
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/info.dmtree/src/info/dmtree/DmtEventListener.java,v 1.6 2006/07/04 12:12:16 tszeredi 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.
@@ -23,6 +21,8 @@
  * successful DMT change, and also when sessions are opened or closed. If a
  * {@link DmtSession} is opened in atomic mode, DMT events are only sent when
  * the session is committed, when the changes are actually performed.
+ * 
+ * @version $Revision: 5673 $
  */
 public interface DmtEventListener {
 
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/DmtException.java b/org.osgi.compendium/src/main/java/info/dmtree/DmtException.java
index c723bc0..0325e03 100644
--- a/org.osgi.compendium/src/main/java/info/dmtree/DmtException.java
+++ b/org.osgi.compendium/src/main/java/info/dmtree/DmtException.java
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/info.dmtree/src/info/dmtree/DmtException.java,v 1.9 2006/07/12 21:21:37 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.
@@ -38,14 +36,16 @@
  * close multiple plugins, and has to report the exceptions of all failures.
  * <p>
  * Each constructor has two variants, one accepts a <code>String</code> node
- * URI, the other accepts a <code>String[]</code> node path. The former is
- * used by the DmtAdmin implementation, the latter by the plugins, who receive
- * the node URI as an array of segment names. The constructors are otherwise
+ * URI, the other accepts a <code>String[]</code> node path. The former is used
+ * by the DmtAdmin implementation, the latter by the plugins, who receive the
+ * node URI as an array of segment names. The constructors are otherwise
  * identical.
  * <p>
  * Getter methods are provided to retrieve the values of the additional
  * parameters, and the <code>printStackTrace(PrintWriter)</code> method is
  * extended to print the stack trace of all causing throwables as well.
+ * 
+ * @version $Revision: 5837 $
  */
 public class DmtException extends Exception {
     private static final long serialVersionUID = -63006267148118655L;
@@ -331,16 +331,16 @@
      */
     private final int code;
 
-    /**
-     * The message associated with the exception, or <code>null</code> if
-     * there is no error message.
-     */
-    private final String message;
+	/**
+	 * The message associated with the exception, or <code>null</code> if there
+	 * is no error message.
+	 */
+	private final String		message;
 
-    /**
-     * The list of originating exceptions, or empty list or <code>null</code>
-     * if there are no originating exceptions.
-     */
+	/**
+	 * The list of originating exceptions, or empty list or <code>null</code> if
+	 * there are no originating exceptions.
+	 */
     private final Throwable[] causes;
 
     /**
@@ -416,6 +416,7 @@
     
     private DmtException(String uri, int code, String message, 
             Throwable[] causes, boolean fatal) {
+    	super((Throwable) null);
         this.uri = uri;
         this.code = code;
         this.message = message;
@@ -521,7 +522,7 @@
         if (uri != null)
             sb.append(": '").append(uri).append('\'');
         if (message != null)
-            sb.append(": ").append(message);
+			sb.append(": ").append(message);
 
         return sb.toString();
     }
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/DmtIllegalStateException.java b/org.osgi.compendium/src/main/java/info/dmtree/DmtIllegalStateException.java
index e5c06b2..127c754 100644
--- a/org.osgi.compendium/src/main/java/info/dmtree/DmtIllegalStateException.java
+++ b/org.osgi.compendium/src/main/java/info/dmtree/DmtIllegalStateException.java
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/info.dmtree/src/info/dmtree/DmtIllegalStateException.java,v 1.4 2006/07/13 13:42:12 tszeredi Exp $
- *
- * Copyright (c) OSGi Alliance (2006). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2006, 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,23 +17,19 @@
 package info.dmtree;
 
 /**
- * Unchecked illegal state exception. This class is used in DMT because 
+ * Unchecked illegal state exception. This class is used in DMT because
  * java.lang.IllegalStateException does not exist in CLDC.
+ * 
+ * @version $Revision: 6083 $
  */
 public class DmtIllegalStateException extends RuntimeException {
     private static final long serialVersionUID = 2015244852018469700L;
 
     /**
-     * Nested exception.
-     */
-    private final Throwable cause;
-
-    /**
      * Create an instance of the exception with no message.
      */
     public DmtIllegalStateException() {
         super();
-        cause = null;
     }
 
     /**
@@ -45,7 +39,6 @@
      */
     public DmtIllegalStateException(String message) {
         super(message);
-        cause = null;
     }
 
     /**
@@ -55,8 +48,7 @@
      * @param cause the cause of the exception
      */
     public DmtIllegalStateException(Throwable cause) {
-        super();
-        this.cause = cause;
+        super(cause);
     }
 
     /**
@@ -67,18 +59,32 @@
      * @param cause the cause of the exception
      */
     public DmtIllegalStateException(String message, Throwable cause) {
-        super(message);
-        this.cause = cause;
+        super(message, cause);
     }
 
-    /**
-     * 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
-     */
+	/**
+	 * 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.
+	 */
     public Throwable getCause() {
-        return cause;
+        return super.getCause();
+    }
+
+	/**
+	 * 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.0.1
+	 */
+	public Throwable initCause(Throwable cause) {
+		return super.initCause(cause);
     }
 }
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/DmtSession.java b/org.osgi.compendium/src/main/java/info/dmtree/DmtSession.java
index dd1913a..fd8d692 100644
--- a/org.osgi.compendium/src/main/java/info/dmtree/DmtSession.java
+++ b/org.osgi.compendium/src/main/java/info/dmtree/DmtSession.java
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/info.dmtree/src/info/dmtree/DmtSession.java,v 1.7 2006/07/11 16:58:20 tszeredi 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.
@@ -22,9 +20,9 @@
 /**
  * DmtSession provides concurrent access to the DMT. All DMT manipulation
  * commands for management applications are available on the
- * <code>DmtSession</code> interface. The session is associated with a root
- * node which limits the subtree in which the operations can be executed within
- * this session.
+ * <code>DmtSession</code> interface. The session is associated with a root node
+ * which limits the subtree in which the operations can be executed within this
+ * session.
  * <p>
  * Most of the operations take a node URI as parameter, which can be either an
  * absolute URI (starting with &quot;./&quot;) or a URI relative to the root
@@ -38,10 +36,12 @@
  * exception is thrown. The only exception is the {@link #isNodeUri(String)}
  * method which returns <code>false</code> in case of an invalid URI.
  * <p>
- * Each method of <code>DmtSession</code> that accesses the tree in any way
- * can throw <code>DmtIllegalStateException</code> if the session has been
- * closed or invalidated (due to timeout, fatal exceptions, or unexpectedly
- * unregistered plugins).
+ * Each method of <code>DmtSession</code> that accesses the tree in any way can
+ * throw <code>DmtIllegalStateException</code> if the session has been closed or
+ * invalidated (due to timeout, fatal exceptions, or unexpectedly unregistered
+ * plugins).
+ * 
+ * @version $Revision: 5673 $
  */
 public interface DmtSession {
     /**
@@ -1210,7 +1210,7 @@
     /**
      * Get the list of children names of a node. The returned array contains the
      * names - not the URIs - of the immediate children nodes of the given node.
-     * The returned child names are mangled ({@link Uri#mangle}). The elements
+     * The returned child names are mangled ({@link Uri#mangle(String)}). The elements
      * are in no particular order. The returned array must not contain
      * <code>null</code> entries.
      * 
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/MetaNode.java b/org.osgi.compendium/src/main/java/info/dmtree/MetaNode.java
index 18afcfc..91b442f 100644
--- a/org.osgi.compendium/src/main/java/info/dmtree/MetaNode.java
+++ b/org.osgi.compendium/src/main/java/info/dmtree/MetaNode.java
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/info.dmtree/src/info/dmtree/MetaNode.java,v 1.4 2006/07/04 12:26:16 tszeredi 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.
@@ -18,8 +16,8 @@
 package info.dmtree;
 
 /**
- * The MetaNode contains meta data as standardized by OMA DM but extends it 
- * (without breaking the compatibility) to provide for better DMT data quality 
+ * The MetaNode contains meta data as standardized by OMA DM but extends it
+ * (without breaking the compatibility) to provide for better DMT data quality
  * in an environment where many software components manipulate this data.
  * <p>
  * The interface has several types of functions to describe the nodes in the
@@ -31,15 +29,15 @@
  * <p>
  * Most methods in this interface receive no input, just return information
  * about some aspect of the node. However, there are two methods that behave
- * differently, {@link #isValidName} and {@link #isValidValue}. These
- * validation methods are given a potential node name or value (respectively),
- * and can decide whether it is valid for the given node. Passing the validation
- * methods is a necessary condition for a name or value to be used, but it is
- * not necessarily sufficient: the plugin may carry out more thorough (more
+ * differently, {@link #isValidName} and {@link #isValidValue}. These validation
+ * methods are given a potential node name or value (respectively), and can
+ * decide whether it is valid for the given node. Passing the validation methods
+ * is a necessary condition for a name or value to be used, but it is not
+ * necessarily sufficient: the plugin may carry out more thorough (more
  * expensive) checks when the node is actually created or set.
  * <p>
- * If a <code>MetaNode</code> is available for a node, the DmtAdmin must use
- * the information provided by it to filter out invalid requests on that node.
+ * If a <code>MetaNode</code> is available for a node, the DmtAdmin must use the
+ * information provided by it to filter out invalid requests on that node.
  * However, not all methods on this interface are actually used for this
  * purpose, as many of them (e.g. {@link #getFormat} or {@link #getValidNames})
  * can be substituted with the validating methods. For example,
@@ -50,9 +48,11 @@
  * enforce the constraints defined by it - such methods are only for external
  * use, for example in user interfaces.
  * <p>
- * Most of the methods of this class return <code>null</code> if a certain
- * piece of meta information is not defined for the node or providing this
- * information is not supported. Methods of this class do not throw exceptions.
+ * Most of the methods of this class return <code>null</code> if a certain piece
+ * of meta information is not defined for the node or providing this information
+ * is not supported. Methods of this class do not throw exceptions.
+ * 
+ * @version $Revision: 5673 $
  */
 public interface MetaNode {
 
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/Uri.java b/org.osgi.compendium/src/main/java/info/dmtree/Uri.java
index c9ad62c..ab5b8a8 100644
--- a/org.osgi.compendium/src/main/java/info/dmtree/Uri.java
+++ b/org.osgi.compendium/src/main/java/info/dmtree/Uri.java
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/info.dmtree/src/info/dmtree/Uri.java,v 1.12 2006/10/24 17:54:28 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.
@@ -18,7 +16,9 @@
 package info.dmtree;
 
 import java.io.UnsupportedEncodingException;
-import java.lang.reflect.*;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 import java.util.ArrayList;
@@ -30,26 +30,27 @@
  * Syntax of valid DMT URIs:
  * <ul>
  * <li>A slash (<code>'/'</code> &#92;u002F) is the separator of the node names.
- * Slashes used in node name must therefore be escaped using a backslash slash 
- * (<code>"\/"</code>). The backslash must be escaped with a double backslash 
- * sequence. A backslash found must be ignored when it is not followed by a 
- * slash or backslash.
- * <li>The node name can be constructed using full Unicode character set
- * (except the Supplementary code, not being supported by CLDC/CDC). However,
- * using the full Unicode character set for node names is discouraged because
- * the encoding in the underlying storage as well as the encoding needed in
- * communications can create significant performance and memory usage overhead.
- * Names that are restricted to the URI set <code>[-a-zA-Z0-9_.!~*'()]</code>
- * are most efficient.
+ * Slashes used in node name must therefore be escaped using a backslash slash (
+ * <code>"\/"</code>). The backslash must be escaped with a double backslash sequence. A
+ * backslash found must be ignored when it is not followed by a slash or
+ * backslash.
+ * <li>The node name can be constructed using full Unicode character set (except
+ * the Supplementary code, not being supported by CLDC/CDC). However, using the
+ * full Unicode character set for node names is discouraged because the encoding
+ * in the underlying storage as well as the encoding needed in communications
+ * can create significant performance and memory usage overhead. Names that are
+ * restricted to the URI set <code>[-a-zA-Z0-9_.!~*'()]</code> are most efficient.
  * <li>URIs used in the DMT must be treated and interpreted as case sensitive.
  * <li>No End Slash: URI must not end with the delimiter slash (<code>'/'</code>
- * &#92;u002F). This implies that the root node must be denoted as 
+ * &#92;u002F). This implies that the root node must be denoted as
  * <code>"."</code> and not <code>"./"</code>.
  * <li>No parent denotation: URI must not be constructed using the character
  * sequence <code>"../"</code> to traverse the tree upwards.
  * <li>Single Root: The character sequence <code>"./"</code> must not be used
  * anywhere else but in the beginning of a URI.
  * </ul>
+ * 
+ * @version $Revision: 5673 $
  */
 public final class Uri {
 	/*
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/notification/AlertItem.java b/org.osgi.compendium/src/main/java/info/dmtree/notification/AlertItem.java
index 2088743..cacf44f 100644
--- a/org.osgi.compendium/src/main/java/info/dmtree/notification/AlertItem.java
+++ b/org.osgi.compendium/src/main/java/info/dmtree/notification/AlertItem.java
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/info.dmtree/src/info/dmtree/notification/AlertItem.java,v 1.3 2006/07/04 12:26:50 tszeredi 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.
@@ -32,12 +30,14 @@
  * The data syntax and semantics varies widely between various alerts, so does
  * the optionality of particular parameters of an alert item. If an item, such
  * as source or type, is not defined, the corresponding getter method returns
- * <code>null</code>. For example, for alert 1201 (client-initiated session)
- * all elements will be <code>null</code>.
+ * <code>null</code>. For example, for alert 1201 (client-initiated session) all
+ * elements will be <code>null</code>.
  * <P>
  * The syntax used in <code>AlertItem</code> class corresponds to the OMA DM
  * alert format. {@link NotificationService} implementations on other management
  * protocols should map these constructs to the underlying protocol.
+ * 
+ * @version $Revision: 5673 $
  */
 public class AlertItem {
 
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/notification/NotificationService.java b/org.osgi.compendium/src/main/java/info/dmtree/notification/NotificationService.java
index 6ee9cd3..f1aa880 100644
--- a/org.osgi.compendium/src/main/java/info/dmtree/notification/NotificationService.java
+++ b/org.osgi.compendium/src/main/java/info/dmtree/notification/NotificationService.java
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/info.dmtree/src/info/dmtree/notification/NotificationService.java,v 1.5 2006/07/04 12:26:50 tszeredi 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.
@@ -24,6 +22,8 @@
  * NotificationService enables sending aynchronous notifications to a management
  * server. The implementation of <code>NotificationService</code> should
  * register itself in the OSGi service registry as a service.
+ * 
+ * @version $Revision: 5673 $
  */
 public interface NotificationService {
 
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/notification/package.html b/org.osgi.compendium/src/main/java/info/dmtree/notification/package.html
new file mode 100644
index 0000000..b95e61c
--- /dev/null
+++ b/org.osgi.compendium/src/main/java/info/dmtree/notification/package.html
@@ -0,0 +1,13 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>Device Management Tree Notification Package Version 1.0.
+This package contains the public API of the Notification service. This service
+enables the sending of asynchronous notifications to management servers.
+Permission classes are provided by the <code>info.dmtree.security</code> package.
+<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: info.dmtree.notification;version=&quot;[1.0,2.0)&quot;
+</pre>
+</BODY>
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/notification/packageinfo b/org.osgi.compendium/src/main/java/info/dmtree/notification/packageinfo
new file mode 100644
index 0000000..7c8de03
--- /dev/null
+++ b/org.osgi.compendium/src/main/java/info/dmtree/notification/packageinfo
@@ -0,0 +1 @@
+version 1.0
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/notification/spi/RemoteAlertSender.java b/org.osgi.compendium/src/main/java/info/dmtree/notification/spi/RemoteAlertSender.java
index 3e28892..8b7bac4 100644
--- a/org.osgi.compendium/src/main/java/info/dmtree/notification/spi/RemoteAlertSender.java
+++ b/org.osgi.compendium/src/main/java/info/dmtree/notification/spi/RemoteAlertSender.java
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/info.dmtree/src/info/dmtree/notification/spi/RemoteAlertSender.java,v 1.2 2006/06/16 16:31:59 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.
@@ -23,26 +21,26 @@
 /**
  * The RemoteAlertSender can be used to send notifications to (remote) entities
  * identified by principal names. This service is provided by Protocol Adapters,
- * and is used by the
- * {@link info.dmtree.notification.NotificationService} when sending
- * alerts. Implementations of this interface have to be able to connect and send
- * alerts to one or more management servers in a protocol specific way.
+ * and is used by the {@link info.dmtree.notification.NotificationService} when
+ * sending alerts. Implementations of this interface have to be able to connect
+ * and send alerts to one or more management servers in a protocol specific way.
  * <p>
  * The properties of the service registration should specify a list of
  * destinations (principals) where the service is capable of sending alerts.
- * This can be done by providing a <code>String</code> array of principal
- * names in the <code>principals</code> registration property. If this property
- * is not registered, the service will be treated as the default sender. The
- * default alert sender is only used when a more specific alert sender cannot be
- * found.
+ * This can be done by providing a <code>String</code> array of principal names
+ * in the <code>principals</code> registration property. If this property is not
+ * registered, the service will be treated as the default sender. The default
+ * alert sender is only used when a more specific alert sender cannot be found.
  * <p>
  * The <code>principals</code> registration property is used when the
- * {@link info.dmtree.notification.NotificationService#sendNotification}
- * method is called, to find the proper <code>RemoteAlertSender</code> for the
- * given destination. If the caller does not specify a principal, the alert is
- * only sent if the Notification Sender finds a default alert sender, or if the
+ * {@link info.dmtree.notification.NotificationService#sendNotification} method
+ * is called, to find the proper <code>RemoteAlertSender</code> for the given
+ * destination. If the caller does not specify a principal, the alert is only
+ * sent if the Notification Sender finds a default alert sender, or if the
  * choice is unambiguous for some other reason (for example if only one alert
  * sender is registered).
+ * 
+ * @version $Revision: 5673 $
  */
 public interface RemoteAlertSender {
     /**
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/notification/spi/package.html b/org.osgi.compendium/src/main/java/info/dmtree/notification/spi/package.html
new file mode 100644
index 0000000..7a17cd9
--- /dev/null
+++ b/org.osgi.compendium/src/main/java/info/dmtree/notification/spi/package.html
@@ -0,0 +1,15 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>Device Management Tree Notification SPI Package Version 1.0.
+This package contains the SPI (Service Provider Interface) of the Notification
+service. These interfaces are implemented by Protocol Adapters capable of 
+delivering notifications to management servers on a specific protocol.  Users of
+the <code>NotificationService</code> interface do not interact directly with this 
+package.
+<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: info.dmtree.notification.spi;version=&quot;[1.0,2.0)&quot;
+</pre>
+</BODY>
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/notification/spi/packageinfo b/org.osgi.compendium/src/main/java/info/dmtree/notification/spi/packageinfo
new file mode 100644
index 0000000..7c8de03
--- /dev/null
+++ b/org.osgi.compendium/src/main/java/info/dmtree/notification/spi/packageinfo
@@ -0,0 +1 @@
+version 1.0
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/package.html b/org.osgi.compendium/src/main/java/info/dmtree/package.html
new file mode 100644
index 0000000..51602f5
--- /dev/null
+++ b/org.osgi.compendium/src/main/java/info/dmtree/package.html
@@ -0,0 +1,16 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>Device Management Tree Package Version 1.0.
+This package contains the public API for the Device Management Tree 
+manipulations. Permission classes are provided by the 
+<code>info.dmtree.security</code> package, and DMT plugin interfaces can be found in
+the <code>info.dmtree.spi</code> package.  Asynchronous notifications to remote 
+management servers can be sent using the interfaces in the 
+<code>info.dmtree.notification</code> package.
+<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: info.dmtree;version=&quot;[1.0,2.0)&quot;
+</pre>
+</BODY>
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/packageinfo b/org.osgi.compendium/src/main/java/info/dmtree/packageinfo
new file mode 100644
index 0000000..b3d1f97
--- /dev/null
+++ b/org.osgi.compendium/src/main/java/info/dmtree/packageinfo
@@ -0,0 +1 @@
+version 1.0.1
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/registry/DmtServiceFactory.java b/org.osgi.compendium/src/main/java/info/dmtree/registry/DmtServiceFactory.java
index 9820277..b94634a 100644
--- a/org.osgi.compendium/src/main/java/info/dmtree/registry/DmtServiceFactory.java
+++ b/org.osgi.compendium/src/main/java/info/dmtree/registry/DmtServiceFactory.java
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/info.dmtree/src/info/dmtree/registry/DmtServiceFactory.java,v 1.5 2006/07/11 09:38:25 tszeredi 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.
@@ -23,7 +21,6 @@
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
 
-
 /**
  * This class is the central access point for Device Management services.
  * Applications can use the static factory methods provided in this class to
@@ -32,7 +29,9 @@
  * sending notifications to management servers.
  * <p>
  * These methods are not needed in an OSGi environment, clients should retrieve
- * the required service objects from the OSGi Service Registry. 
+ * the required service objects from the OSGi Service Registry.
+ * 
+ * @version $Revision: 5673 $
  */
 public final class DmtServiceFactory {
     private static BundleContext context = null;
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/registry/package.html b/org.osgi.compendium/src/main/java/info/dmtree/registry/package.html
new file mode 100644
index 0000000..b2122ac
--- /dev/null
+++ b/org.osgi.compendium/src/main/java/info/dmtree/registry/package.html
@@ -0,0 +1,15 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>Device Management Tree Registry Package Version 1.0.
+This package contains the factory class providing access to the different
+Device Management services for non-OSGi applications.  The 
+<code>DmtServiceFactory</code> class contained in this package provides methods
+for retrieving <code>NotificationService</code> and <code>DmtAdmin</code>
+service implementations.
+<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: info.dmtree.registry;version=&quot;[1.0,2.0)&quot;
+</pre>
+</BODY>
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/registry/packageinfo b/org.osgi.compendium/src/main/java/info/dmtree/registry/packageinfo
new file mode 100644
index 0000000..7c8de03
--- /dev/null
+++ b/org.osgi.compendium/src/main/java/info/dmtree/registry/packageinfo
@@ -0,0 +1 @@
+version 1.0
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/security/AlertPermission.java b/org.osgi.compendium/src/main/java/info/dmtree/security/AlertPermission.java
index 6fc0209..99395d5 100644
--- a/org.osgi.compendium/src/main/java/info/dmtree/security/AlertPermission.java
+++ b/org.osgi.compendium/src/main/java/info/dmtree/security/AlertPermission.java
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/info.dmtree/src/info/dmtree/security/AlertPermission.java,v 1.4 2006/07/12 21:21:52 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,17 +17,22 @@
 
 import java.security.Permission;
 import java.security.PermissionCollection;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.Iterator;
 
 /**
  * Indicates the callers authority to send alerts to management servers,
  * identified by their principal names.
  * <p>
- * <code>AlertPermission</code> has a target string which controls the
- * principal names where alerts can be sent. A wildcard is allowed at the end of
- * the target string, to allow sending alerts to any principal with a name
- * matching the given prefix. The &quot;*&quot; target means that alerts can be
- * sent to any destination.
+ * <code>AlertPermission</code> has a target string which controls the principal
+ * names where alerts can be sent. A wildcard is allowed at the end of the
+ * target string, to allow sending alerts to any principal with a name matching
+ * the given prefix. The &quot;*&quot; target means that alerts can be sent to
+ * any destination.
+ * 
+ * @version $Revision: 5673 $
  */
 public class AlertPermission extends Permission {
     private static final long serialVersionUID = -3206463101788245739L;
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/security/DmtPermission.java b/org.osgi.compendium/src/main/java/info/dmtree/security/DmtPermission.java
index aa9702b..5b85398 100644
--- a/org.osgi.compendium/src/main/java/info/dmtree/security/DmtPermission.java
+++ b/org.osgi.compendium/src/main/java/info/dmtree/security/DmtPermission.java
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/info.dmtree/src/info/dmtree/security/DmtPermission.java,v 1.10 2006/10/19 13:32:53 tszeredi 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.
@@ -22,7 +20,11 @@
 
 import java.security.Permission;
 import java.security.PermissionCollection;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.StringTokenizer;
 
 /**
  * Controls access to management objects in the Device Management Tree (DMT). It
@@ -46,15 +48,16 @@
  * 
  * This means that owner of this permission has Get access on every child node
  * of ./OSGi/bundles. The asterix does not necessarily have to follow a '/'
- * character. For example the
- * <code>&quot;./OSGi/a*&quot;</code> target matches the 
- * <code>./OSGi/applications</code> subtree.
+ * character. For example the <code>&quot;./OSGi/a*&quot;</code> target matches
+ * the <code>./OSGi/applications</code> subtree.
  * <p>
- * If wildcard is present in the actions field, all legal OMA DM commands are 
- * allowed on the designated nodes(s) by the owner of the permission.  Action
+ * If wildcard is present in the actions field, all legal OMA DM commands are
+ * allowed on the designated nodes(s) by the owner of the permission. Action
  * names are interpreted case-insensitively, but the canonical action string
- * returned by {@link #getActions} uses the forms defined by the action 
+ * returned by {@link #getActions} uses the forms defined by the action
  * constants.
+ * 
+ * @version $Revision: 5673 $
  */
 public class DmtPermission extends Permission {
     private static final long serialVersionUID = -1910969921419407809L;
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/security/DmtPrincipalPermission.java b/org.osgi.compendium/src/main/java/info/dmtree/security/DmtPrincipalPermission.java
index e875055..9052454 100644
--- a/org.osgi.compendium/src/main/java/info/dmtree/security/DmtPrincipalPermission.java
+++ b/org.osgi.compendium/src/main/java/info/dmtree/security/DmtPrincipalPermission.java
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/info.dmtree/src/info/dmtree/security/DmtPrincipalPermission.java,v 1.4 2006/07/12 21:21:52 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,7 +18,10 @@
 
 import java.security.Permission;
 import java.security.PermissionCollection;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.Iterator;
 
 /**
  * Indicates the callers authority to create DMT sessions on behalf of a remote
@@ -32,6 +33,8 @@
  * wildcard is allowed at the end of the target string, to allow using any
  * principal name with the given prefix. The &quot;*&quot; target means the
  * adapter can create a session in the name of any principal.
+ * 
+ * @version $Revision: 5673 $
  */
 public class DmtPrincipalPermission extends Permission {
     private static final long serialVersionUID = 6388752177325038332L;
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/security/package.html b/org.osgi.compendium/src/main/java/info/dmtree/security/package.html
new file mode 100644
index 0000000..f5c2fb4
--- /dev/null
+++ b/org.osgi.compendium/src/main/java/info/dmtree/security/package.html
@@ -0,0 +1,12 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>Device Management Tree Security Package Version 1.0.
+This package contains the permission classes used by the Device
+Management API in environments that support the Java 2 security model.
+<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: info.dmtree.security;version=&quot;[1.0,2.0)&quot;
+</pre>
+</BODY>
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/security/packageinfo b/org.osgi.compendium/src/main/java/info/dmtree/security/packageinfo
new file mode 100644
index 0000000..7c8de03
--- /dev/null
+++ b/org.osgi.compendium/src/main/java/info/dmtree/security/packageinfo
@@ -0,0 +1 @@
+version 1.0
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/spi/DataPlugin.java b/org.osgi.compendium/src/main/java/info/dmtree/spi/DataPlugin.java
index ab3eea4..19fe359 100644
--- a/org.osgi.compendium/src/main/java/info/dmtree/spi/DataPlugin.java
+++ b/org.osgi.compendium/src/main/java/info/dmtree/spi/DataPlugin.java
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/info.dmtree/src/info/dmtree/spi/DataPlugin.java,v 1.4 2006/06/16 16:31:59 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.
@@ -36,8 +34,8 @@
  * method depends on the lock type of the current session. In case of
  * {@link #openReadWriteSession(String[], DmtSession)} and
  * {@link #openAtomicSession(String[], DmtSession)}, the plugin may return
- * <code>null</code> to indicate that the specified lock type is not
- * supported. In this case the DmtAdmin may call
+ * <code>null</code> to indicate that the specified lock type is not supported.
+ * In this case the DmtAdmin may call
  * {@link #openReadOnlySession(String[], DmtSession)} to start a read-only
  * plugin session, which can be used as long as there are no write operations on
  * the nodes handled by this plugin.
@@ -47,6 +45,8 @@
  * is an absolute path, so the first segment is always &quot;.&quot;. Special
  * characters appear escaped in the segments.
  * <p>
+ * 
+ * @version $Revision: 5673 $
  */
 public interface DataPlugin {
 
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/spi/ExecPlugin.java b/org.osgi.compendium/src/main/java/info/dmtree/spi/ExecPlugin.java
index b2fe0f3..c72784c 100644
--- a/org.osgi.compendium/src/main/java/info/dmtree/spi/ExecPlugin.java
+++ b/org.osgi.compendium/src/main/java/info/dmtree/spi/ExecPlugin.java
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/info.dmtree/src/info/dmtree/spi/ExecPlugin.java,v 1.3 2006/06/16 16:31:59 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.
@@ -28,6 +26,8 @@
  * service registry specifying the list of root node URIs in a
  * <code>String</code> array in the <code>execRootURIs</code> registration
  * parameter.
+ * 
+ * @version $Revision: 5673 $
  */
 public interface ExecPlugin {
 
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/spi/ReadWriteDataSession.java b/org.osgi.compendium/src/main/java/info/dmtree/spi/ReadWriteDataSession.java
index 54e444b..3ec4a56 100644
--- a/org.osgi.compendium/src/main/java/info/dmtree/spi/ReadWriteDataSession.java
+++ b/org.osgi.compendium/src/main/java/info/dmtree/spi/ReadWriteDataSession.java
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/info.dmtree/src/info/dmtree/spi/ReadWriteDataSession.java,v 1.4 2006/07/12 21:21:52 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.
@@ -17,7 +15,10 @@
  */
 package info.dmtree.spi;
 
-import info.dmtree.*;
+import info.dmtree.DmtData;
+import info.dmtree.DmtException;
+import info.dmtree.DmtSession;
+import info.dmtree.MetaNode;
 
 /**
  * Provides non-atomic read-write access to the part of the tree handled by the
@@ -36,8 +37,7 @@
  * certain circumstances for granted: that the path is valid and is within the
  * subtree of the plugin and the session, the command can be applied to the
  * given node (e.g. the target of <code>setNodeValue</code> is a leaf node),
- * etc. All errors described by the error codes {@link DmtException#INVALID_URI},
- * {@link DmtException#URI_TOO_LONG}, {@link DmtException#PERMISSION_DENIED},
+ * etc. All errors described by the error codes {@link DmtException#INVALID_URI}, {@link DmtException#URI_TOO_LONG}, {@link DmtException#PERMISSION_DENIED},
  * {@link DmtException#COMMAND_NOT_ALLOWED} and
  * {@link DmtException#TRANSACTION_ERROR} are fully filtered out before control
  * reaches the plugin.
@@ -63,6 +63,8 @@
  * The plugin can use the remaining error codes as needed. If an error does not
  * fit into any other category, the {@link DmtException#COMMAND_FAILED} code
  * should be used.
+ * 
+ * @version $Revision: 5673 $
  */
 public interface ReadWriteDataSession extends ReadableDataSession {
 
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/spi/ReadableDataSession.java b/org.osgi.compendium/src/main/java/info/dmtree/spi/ReadableDataSession.java
index 7897bad..389e989 100644
--- a/org.osgi.compendium/src/main/java/info/dmtree/spi/ReadableDataSession.java
+++ b/org.osgi.compendium/src/main/java/info/dmtree/spi/ReadableDataSession.java
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/info.dmtree/src/info/dmtree/spi/ReadableDataSession.java,v 1.4 2006/07/12 21:21:52 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.
@@ -17,7 +15,9 @@
  */
 package info.dmtree.spi;
 
-import info.dmtree.*;
+import info.dmtree.DmtData;
+import info.dmtree.DmtException;
+import info.dmtree.MetaNode;
 
 import java.util.Date;
 
@@ -38,15 +38,14 @@
  * <p>
  * <strong>Error handling</strong>
  * <p>
- * When a tree access command is called on the DmtAdmin service, it must
- * perform an extensive set of checks on the parameters and the authority of the
- * caller before delegating the call to a plugin. Therefore plugins can take
- * certain circumstances for granted: that the path is valid and is within the
- * subtree of the plugin and the session, the command can be applied to the
- * given node (e.g. the target of <code>getChildNodeNames</code> is an
- * interior node), etc. All errors described by the error codes
- * {@link DmtException#INVALID_URI}, {@link DmtException#URI_TOO_LONG},
- * {@link DmtException#PERMISSION_DENIED},
+ * When a tree access command is called on the DmtAdmin service, it must perform
+ * an extensive set of checks on the parameters and the authority of the caller
+ * before delegating the call to a plugin. Therefore plugins can take certain
+ * circumstances for granted: that the path is valid and is within the subtree
+ * of the plugin and the session, the command can be applied to the given node
+ * (e.g. the target of <code>getChildNodeNames</code> is an interior node), etc.
+ * All errors described by the error codes {@link DmtException#INVALID_URI},
+ * {@link DmtException#URI_TOO_LONG}, {@link DmtException#PERMISSION_DENIED},
  * {@link DmtException#COMMAND_NOT_ALLOWED} and
  * {@link DmtException#TRANSACTION_ERROR} are fully filtered out before control
  * reaches the plugin.
@@ -58,19 +57,21 @@
  * indicate such discrepancies.
  * <p>
  * The DmtAdmin also ensures that the targeted nodes exist before calling the
- * plugin (except, of course, before the <code>isNodeUri</code> call).
- * However, some small amount of time elapses between the check and the call, so
- * in case of plugins where the node structure can change independantly from the
- * DMT, the target node might disappear in that time. For example, a whole
- * subtree can disappear when a Monitorable application is unregistered, which
- * might happen in the middle of a DMT session accessing it. Plugins managing
- * such nodes always need to check whether they still exist and throw
+ * plugin (except, of course, before the <code>isNodeUri</code> call). However,
+ * some small amount of time elapses between the check and the call, so in case
+ * of plugins where the node structure can change independantly from the DMT,
+ * the target node might disappear in that time. For example, a whole subtree
+ * can disappear when a Monitorable application is unregistered, which might
+ * happen in the middle of a DMT session accessing it. Plugins managing such
+ * nodes always need to check whether they still exist and throw
  * {@link DmtException#NODE_NOT_FOUND} as necessary, but for more static
  * subtrees there is no need for the plugin to use this error code.
  * <p>
  * The plugin can use the remaining error codes as needed. If an error does not
  * fit into any other category, the {@link DmtException#COMMAND_FAILED} code
  * should be used.
+ * 
+ * @version $Revision: 5673 $
  */
 public interface ReadableDataSession {
     /**
@@ -118,7 +119,7 @@
     /**
      * Get the list of children names of a node. The returned array contains the
      * names - not the URIs - of the immediate children nodes of the given node.
-     * The returned child names must be mangled ({@link info.dmtree.Uri#mangle}).
+     * The returned child names must be mangled ({@link info.dmtree.Uri#mangle(String)}).
      * The returned array may contain <code>null</code> entries, but these are
      * removed by the DmtAdmin before returning it to the client.
      * 
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/spi/TransactionalDataSession.java b/org.osgi.compendium/src/main/java/info/dmtree/spi/TransactionalDataSession.java
index 4ddb694..477bd05 100644
--- a/org.osgi.compendium/src/main/java/info/dmtree/spi/TransactionalDataSession.java
+++ b/org.osgi.compendium/src/main/java/info/dmtree/spi/TransactionalDataSession.java
@@ -1,7 +1,5 @@
 /*
- * $Header: /cvshome/build/info.dmtree/src/info/dmtree/spi/TransactionalDataSession.java,v 1.2 2006/06/16 16:31:59 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.
@@ -23,6 +21,8 @@
 /**
  * Provides atomic read-write access to the part of the tree handled by the
  * plugin that created this session.
+ * 
+ * @version $Revision: 5673 $
  */
 public interface TransactionalDataSession extends ReadWriteDataSession {
 
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/spi/package.html b/org.osgi.compendium/src/main/java/info/dmtree/spi/package.html
new file mode 100644
index 0000000..63291f7
--- /dev/null
+++ b/org.osgi.compendium/src/main/java/info/dmtree/spi/package.html
@@ -0,0 +1,13 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>Device Management Tree SPI Package Version 1.0.
+This package contains the interface classes that compose the Device Management 
+SPI (Service Provider Interface).  These interfaces are implemented by DMT plugins;
+users of the <code>DmtAdmin</code> interface do not interact directly with these.
+<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: info.dmtree.spi;version=&quot;[1.0,2.0)&quot;
+</pre>
+</BODY>
diff --git a/org.osgi.compendium/src/main/java/info/dmtree/spi/packageinfo b/org.osgi.compendium/src/main/java/info/dmtree/spi/packageinfo
new file mode 100644
index 0000000..7c8de03
--- /dev/null
+++ b/org.osgi.compendium/src/main/java/info/dmtree/spi/packageinfo
@@ -0,0 +1 @@
+version 1.0