diff --git a/activation/src/main/java/javax/activation/CommandInfo.java b/activation/src/main/java/javax/activation/CommandInfo.java
index 41fff46..439ef12 100644
--- a/activation/src/main/java/javax/activation/CommandInfo.java
+++ b/activation/src/main/java/javax/activation/CommandInfo.java
@@ -130,6 +130,9 @@
      *			passed to the command.
      * @param loader	The ClassLoader to be used to instantiate the bean.
      * @return The bean
+     * @exception	IOException	for failures reading data
+     * @exception	ClassNotFoundException	if command object class can't
+     *						be found
      * @see java.beans.Beans#instantiate
      * @see javax.activation.CommandObject
      */
diff --git a/activation/src/main/java/javax/activation/CommandMap.java b/activation/src/main/java/javax/activation/CommandMap.java
index eca27cc..2f83c89 100644
--- a/activation/src/main/java/javax/activation/CommandMap.java
+++ b/activation/src/main/java/javax/activation/CommandMap.java
@@ -1,7 +1,7 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright (c) 1997-2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997-2017 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
@@ -60,7 +60,6 @@
 
     /**
      * Get the default CommandMap.
-     * <p>
      *
      * <ul>
      * <li> In cases where a CommandMap instance has been previously set
diff --git a/activation/src/main/java/javax/activation/CommandObject.java b/activation/src/main/java/javax/activation/CommandObject.java
index 810cfd0..c9331f7 100644
--- a/activation/src/main/java/javax/activation/CommandObject.java
+++ b/activation/src/main/java/javax/activation/CommandObject.java
@@ -1,7 +1,7 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright (c) 1997-2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997-2017 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
@@ -49,7 +49,7 @@
  * data they should operate on.  JavaBeans that don't implement
  * this interface may be used as well.  Such commands may obtain
  * the data using the Externalizable interface, or using an
- * application-specific method.<p>
+ * application-specific method.
  */
 public interface CommandObject {
 
@@ -61,6 +61,7 @@
      *
      * @param verb The Command Verb this object refers to.
      * @param dh The DataHandler.
+     * @exception	IOException	for failures accessing data
      */
     public void setCommandContext(String verb, DataHandler dh)
 						throws IOException;
diff --git a/activation/src/main/java/javax/activation/DataHandler.java b/activation/src/main/java/javax/activation/DataHandler.java
index 72b3532..7a2e86b 100644
--- a/activation/src/main/java/javax/activation/DataHandler.java
+++ b/activation/src/main/java/javax/activation/DataHandler.java
@@ -1,7 +1,7 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright (c) 1997-2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997-2017 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
@@ -339,6 +339,7 @@
      * Otherwise, <code>null</code> is returned.
      *
      * @return the OutputStream
+     * @exception	IOException	for failures creating the OutputStream
      *
      * @see javax.activation.DataSource#getOutputStream
      * @see javax.activation.URLDataSource
diff --git a/activation/src/main/java/javax/activation/DataSource.java b/activation/src/main/java/javax/activation/DataSource.java
index 4e63cd3..6e5f139 100644
--- a/activation/src/main/java/javax/activation/DataSource.java
+++ b/activation/src/main/java/javax/activation/DataSource.java
@@ -1,7 +1,7 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright (c) 1997-2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997-2017 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
@@ -62,6 +62,7 @@
      * positioned at the beginning of the data.
      *
      * @return an InputStream
+     * @exception	IOException	for failures creating the InputStream
      */
     public InputStream getInputStream() throws IOException;
 
@@ -73,6 +74,7 @@
      * be positioned at the location the data is to be written.
      *
      * @return an OutputStream
+     * @exception	IOException	for failures creating the OutputStream
      */
     public OutputStream getOutputStream() throws IOException;
 
diff --git a/activation/src/main/java/javax/activation/MailcapCommandMap.java b/activation/src/main/java/javax/activation/MailcapCommandMap.java
index 5d3ce50..7489f0a 100644
--- a/activation/src/main/java/javax/activation/MailcapCommandMap.java
+++ b/activation/src/main/java/javax/activation/MailcapCommandMap.java
@@ -59,7 +59,6 @@
  * system for mailcap file entries. When requests are made
  * to search for commands in the MailcapCommandMap, it searches  
  * mailcap files in the following order:
- * <p>
  * <ol>
  * <li> Programatically added entries to the MailcapCommandMap instance.
  * <li> The file <code>.mailcap</code> in the user's home directory.
@@ -92,7 +91,7 @@
  * specifically those parameter names that begin with <code>x-java-</code>.
  * The MailcapCommandMap uses this signature to find
  * command entries for inclusion into its registries.
- * Parameter names with the form <code>x-java-&lt;name></code>
+ * Parameter names with the form <code>x-java-&lt;name&gt;</code>
  * are read by the MailcapCommandMap as identifying a command
  * with the name <i>name</i>. When the <i>name</i> is <code>
  * content-handler</code> the MailcapCommandMap recognizes the class
@@ -117,7 +116,7 @@
  * following general form:<p>
  * <code>
  * # Comments begin with a '#' and continue to the end of the line.<br>
- * &lt;mime type>; ; &lt;parameter list><br>
+ * &lt;mime type&gt;; ; &lt;parameter list&gt;<br>
  * # Where a parameter list consists of one or more parameters,<br>
  * # where parameters look like: x-java-view=com.sun.TextViewer<br>
  * # and a parameter list looks like: <br>
@@ -671,6 +670,7 @@
      * entries that specify a view command for the specified
      * MIME type are returned.
      *
+     * @param	mimeType	the MIME type
      * @return		array of native command entries
      * @since	JAF 1.1
      */
diff --git a/activation/src/main/java/javax/activation/MimeType.java b/activation/src/main/java/javax/activation/MimeType.java
index f602864..140821a 100644
--- a/activation/src/main/java/javax/activation/MimeType.java
+++ b/activation/src/main/java/javax/activation/MimeType.java
@@ -1,7 +1,7 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright (c) 1997-2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997-2017 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
@@ -71,6 +71,7 @@
      * Constructor that builds a MimeType from a String.
      *
      * @param rawdata	the MIME type string
+     * @exception	MimeTypeParseException	if the MIME type can't be parsed
      */
     public MimeType(String rawdata) throws MimeTypeParseException {
         parse(rawdata);
@@ -271,6 +272,7 @@
      *
      * @param rawdata	the MIME type string to compare with
      * @return		true if they match
+     * @exception	MimeTypeParseException	if the MIME type can't be parsed
      */
     public boolean match(String rawdata) throws MimeTypeParseException {
         return match(new MimeType(rawdata));
diff --git a/activation/src/main/java/javax/activation/MimeTypeParameterList.java b/activation/src/main/java/javax/activation/MimeTypeParameterList.java
index c855959..5b5fccf 100644
--- a/activation/src/main/java/javax/activation/MimeTypeParameterList.java
+++ b/activation/src/main/java/javax/activation/MimeTypeParameterList.java
@@ -1,7 +1,7 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright (c) 1997-2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997-2017 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
@@ -71,6 +71,7 @@
      * Constructs a new MimeTypeParameterList with the passed in data.
      *
      * @param parameterList an RFC 2045, 2046 compliant parameter list.
+     * @exception	MimeTypeParseException	if the MIME type can't be parsed
      */
     public MimeTypeParameterList(String parameterList)
 					throws MimeTypeParseException {
@@ -84,6 +85,7 @@
      * A routine for parsing the parameter list out of a String.
      *
      * @param parameterList an RFC 2045, 2046 compliant parameter list.
+     * @exception	MimeTypeParseException	if the MIME type can't be parsed
      */
     protected void parse(String parameterList) throws MimeTypeParseException {
 	if (parameterList == null)
diff --git a/activation/src/main/java/javax/activation/MimetypesFileTypeMap.java b/activation/src/main/java/javax/activation/MimetypesFileTypeMap.java
index 56948ba..04af8ce 100644
--- a/activation/src/main/java/javax/activation/MimetypesFileTypeMap.java
+++ b/activation/src/main/java/javax/activation/MimetypesFileTypeMap.java
@@ -55,7 +55,6 @@
  * system for MIME types file entries. When requests are made
  * to search for MIME types in the MimetypesFileTypeMap, it searches  
  * MIME types files in the following order:
- * <p>
  * <ol>
  * <li> Programmatically added entries to the MimetypesFileTypeMap instance.
  * <li> The file <code>.mime.types</code> in the user's home directory.
@@ -74,7 +73,7 @@
  *
  * <code>
  * # comments begin with a '#'<br>
- * # the format is &lt;mime type> &lt;space separated file extensions><br>
+ * # the format is &lt;mime type&gt; &lt;space separated file extensions&gt;<br>
  * # for example:<br>
  * text/plain    txt text TXT<br>
  * # this would map file.txt, file.text, and file.TXT to<br>
@@ -274,6 +273,7 @@
      * added from the named file.
      *
      * @param mimeTypeFileName	the file name
+     * @exception	IOException	for errors reading the file
      */
     public MimetypesFileTypeMap(String mimeTypeFileName) throws IOException {
 	this();
