6780803: Wrong parameter name in description of EventClient::addListeners()
6470295: Misleading exception message says context classloader when it isn't
6714954: Description of MBeanPermission checking in MBeanServer javadoc is inaccurate
6732037: Event Service spec needs more detail about Executor use
6740900: Specify that listeners invoked via SendNotification should not block
6778436: Typo in @NotificationInfos spec
Reviewed-by: dfuchs
--- a/jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java Tue Dec 09 17:41:59 2008 +0100
+++ b/jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java Tue Dec 09 18:30:27 2008 +0100
@@ -645,7 +645,7 @@
}
} catch (ClassNotFoundException e) {
throw new ReflectionException(e,
- "The MBean class could not be loaded by the context classloader");
+ "The MBean class could not be loaded");
}
return theClass;
}
--- a/jdk/src/share/classes/javax/management/MBeanRegistration.java Tue Dec 09 17:41:59 2008 +0100
+++ b/jdk/src/share/classes/javax/management/MBeanRegistration.java Tue Dec 09 18:30:27 2008 +0100
@@ -79,6 +79,9 @@
* }
* </pre>
*
+ * <p>(Listeners may be invoked in the same thread as the caller of
+ * {@code sender.sendNotification}.)</p>
+ *
* <p>A field to be injected must not be static. It is recommended that
* such fields be declared {@code volatile}.</p>
*
--- a/jdk/src/share/classes/javax/management/MBeanServer.java Tue Dec 09 17:41:59 2008 +0100
+++ b/jdk/src/share/classes/javax/management/MBeanServer.java Tue Dec 09 18:30:27 2008 +0100
@@ -186,11 +186,11 @@
* caller's permissions must imply {@link
* MBeanPermission#MBeanPermission(String,String,String,ObjectName,String)
* MBeanPermission(mbeanServerName, null, null, null, "queryMBeans")}.
- * Additionally, for each MBean that matches <code>name</code>,
+ * Additionally, for each MBean <em>n</em> that matches <code>name</code>,
* if the caller's permissions do not imply {@link
* MBeanPermission#MBeanPermission(String,String,String,ObjectName,String)
- * MBeanPermission(mbeanServerName, className, null, name, "queryMBeans")}, the
- * MBean server will behave as if that MBean did not exist.</p>
+ * MBeanPermission(mbeanServerName, className, null, <em>n</em>, "queryMBeans")},
+ * the MBean server will behave as if that MBean did not exist.</p>
*
* <p>Certain query elements perform operations on the MBean server.
* If the caller does not have the required permissions for a given
--- a/jdk/src/share/classes/javax/management/event/EventClient.java Tue Dec 09 17:41:59 2008 +0100
+++ b/jdk/src/share/classes/javax/management/event/EventClient.java Tue Dec 09 18:30:27 2008 +0100
@@ -187,9 +187,10 @@
* forwarded by the {@link EventClientDelegateMBean}. If {@code null}, a
* {@link FetchingEventRelay} object will be used.
* @param distributingExecutor Used to distribute notifications to local
- * listeners. If {@code null}, the thread that calls {@link
- * EventReceiver#receive EventReceiver.receive} from the {@link EventRelay}
- * object is used.
+ * listeners. Only one job at a time will be submitted to this Executor.
+ * If {@code distributingExecutor} is {@code null}, the thread that calls
+ * {@link EventReceiver#receive EventReceiver.receive} from the {@link
+ * EventRelay} object is used.
* @param leaseScheduler An object that will be used to schedule the
* periodic {@linkplain EventClientDelegateMBean#lease lease updates}.
* If {@code null}, a default scheduler will be used.
@@ -545,7 +546,7 @@
*
* <P>The method returns the listeners which were added successfully. The
* elements in the returned collection are a subset of the elements in
- * {@code infoList}. If all listeners were added successfully, the two
+ * {@code listeners}. If all listeners were added successfully, the two
* collections are the same. If no listener was added successfully, the
* returned collection is empty.</p>
*
--- a/jdk/src/share/classes/javax/management/event/FetchingEventRelay.java Tue Dec 09 17:41:59 2008 +0100
+++ b/jdk/src/share/classes/javax/management/event/FetchingEventRelay.java Tue Dec 09 18:30:27 2008 +0100
@@ -39,10 +39,18 @@
import javax.management.remote.NotificationResult;
/**
- * This class is an implementation of the {@link EventRelay} interface. It calls
+ * <p>This class is an implementation of the {@link EventRelay} interface. It calls
* {@link EventClientDelegateMBean#fetchNotifications
* fetchNotifications(String, long, int, long)} to get
- * notifications and then forwards them to an {@link EventReceiver} object.
+ * notifications and then forwards them to an {@link EventReceiver} object.</p>
+ *
+ * <p>A {@code fetchExecutor} parameter can be specified when creating a
+ * {@code FetchingEventRelay}. That is then the {@code Executor} that will
+ * be used to perform the {@code fetchNotifications} operation. Only one
+ * job at a time will be submitted to this {@code Executor}. The behavior
+ * is unspecified if {@link Executor#execute} throws an exception, including
+ * {@link java.util.concurrent.RejectedExecutionException
+ * RejectedExecutionException}.
*
* @since JMX 2.0
*/