This adds support to javax.management for notifications,
in preparation for adding such support to the memory
bean.

Changelog:

2006-07-16  Andrew John Hughes  <[EMAIL PROTECTED]>

        * javax/management/ListenerNotFoundException.java:
        New file.
        * javax/management/MBeanFeatureInfo.java:
        (hashCode()): Use summation instead of multiplication
        for consistency with other classes.
        * javax/management/MBeanNotificationInfo.java,
        * javax/management/Notification.java,
        * javax/management/NotificationBroadcaster.java,
        * javax/management/NotificationEmitter.java,
        * javax/management/NotificationFilter.java,
        * javax/management/NotificationListener.java:
        New files.
        * javax/management/OperationsException.java:
        (serialVersionUID): Added.

-- 
Andrew :-)

Escape the Java Trap with GNU Classpath!
http://www.gnu.org/philosophy/java-trap.html
public class gcj extends Freedom implements Java { ... }
Index: javax/management/ListenerNotFoundException.java
===================================================================
RCS file: javax/management/ListenerNotFoundException.java
diff -N javax/management/ListenerNotFoundException.java
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ javax/management/ListenerNotFoundException.java     16 Jul 2006 14:31:22 
-0000
@@ -0,0 +1,75 @@
+/* ListenerNotFoundException.java -- Thrown when a listener does not exist.
+   Copyright (C) 2006 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+package javax.management;
+
+/**
+ * Thrown when a requested listener does not exist.
+ *
+ * @author Andrew John Hughes ([EMAIL PROTECTED])
+ * @since 1.5
+ */
+public class ListenerNotFoundException
+  extends OperationsException
+{
+
+  /**
+   * Compatible with JDK 1.5
+   */
+  private static final long serialVersionUID = -7242605822448519061L;
+
+  /**
+   * Constructs a new <code>ListenerNotFoundException</code>.
+   */
+  public ListenerNotFoundException()
+  {
+    super();
+  }
+
+  /**
+   * Constructs a new <code>ListenerNotFoundException</code>
+   * with the specified message.
+   *
+   * @param message the error message to give to the user.
+   */
+  public ListenerNotFoundException(String message)
+  {
+    super(message);
+  }
+
+}
+
Index: javax/management/MBeanFeatureInfo.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/management/MBeanFeatureInfo.java,v
retrieving revision 1.1
diff -u -3 -p -u -r1.1 MBeanFeatureInfo.java
--- javax/management/MBeanFeatureInfo.java      17 Jun 2006 11:10:04 -0000      
1.1
+++ javax/management/MBeanFeatureInfo.java      16 Jul 2006 14:31:22 -0000
@@ -141,14 +141,14 @@ public class MBeanFeatureInfo
 
   /**
    * Returns the hashcode of the feature as
-   * the multiplication of the hashcodes of
-   * its name and description.
+   * the sum of the hashcodes of its name
+   * and description.
    *
    * @return the hashcode of this feature.
    */
   public int hashCode()
   {
-    return name.hashCode() * description.hashCode();
+    return name.hashCode() + description.hashCode();
   }
 
 }
Index: javax/management/MBeanNotificationInfo.java
===================================================================
RCS file: javax/management/MBeanNotificationInfo.java
diff -N javax/management/MBeanNotificationInfo.java
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ javax/management/MBeanNotificationInfo.java 16 Jul 2006 14:31:22 -0000
@@ -0,0 +1,201 @@
+/* MBeanNotificationInfo.java -- Information about a bean's notification.
+   Copyright (C) 2006 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+package javax.management;
+
+import java.util.Arrays;
+
+/**
+ * <p>
+ * Describes the notifications emitted by a management bean.
+ * An instance of this class is specific to notifications
+ * involving a particular type of object.  A new instance
+ * should be created for each Java class used for notifications,
+ * and the Java class name forms the name of the instance.
+ * Each instance lists a number of notification types; these
+ * are not types in the sense of different Java classes, but
+ * instead form the names of notifications following the same
+ * syntax as Java property and package names.
+ * </p>
+ * <p>
+ * For instance, a management bean may emit two notifications
+ * containing [EMAIL PROTECTED] java.lang.String} objects.  Both would be 
described
+ * using one instance of this class, with a member of the array
+ * returned by [EMAIL PROTECTED] #getNotifTypes()} for each one.  If another
+ * notification containing a [EMAIL PROTECTED] java.util.Date} object were to
+ * be added, this would require a new instance of this class.
+ * </p>
+ * <p>
+ * The information in this class is immutable as standard.
+ * Of course, subclasses may change this, but this
+ * behaviour is not recommended.
+ * </p>
+ *
+ * @author Andrew John Hughes ([EMAIL PROTECTED])
+ * @since 1.5
+ */
+public class MBeanNotificationInfo
+  extends MBeanFeatureInfo
+  implements Cloneable
+{
+
+  /**
+   * Compatible with JDK 1.5
+   */
+  private static final long serialVersionUID = -3888371564530107064L;
+
+  /**
+   * The types of notification described by this instance.
+   *
+   * @serial the types of notification.
+   */
+  private String[] types;
+
+  /**
+   * Constructs a new [EMAIL PROTECTED] MBeanNotificationInfo} with the
+   * specified name, description and notification types. The
+   * notification types array may be <code>null</code> or of
+   * zero length, in order to indicate the absence of any types.
+   *
+   * @param types an array of [EMAIL PROTECTED] java.lang.String} objects,
+   *              containing the names of the notifications emitted
+   *              of this Java type.  The names use the dot notation
+   *              familiar from Java property and package names.
+   * @param name the name of the Java class the notifications described
+   *             by this object are instances of.
+   * @param description a description of the data.
+   * @throws IllegalArgumentException for some reason...
+   */
+  public MBeanNotificationInfo(String[] types, String name,
+                              String description)
+  {
+    super(name, description);
+    this.types = types;
+  }
+
+  /**
+   * Returns a clone of this instance.  The clone is created
+   * using just the method provided by [EMAIL PROTECTED] java.lang.Object}.
+   * Thus, the clone is just a shallow clone as returned by
+   * that method, and does not contain any deeper cloning based
+   * on the subject of this class.
+   *
+   * @return a clone of this instance.
+   * @see java.lang.Cloneable
+   */
+  public Object clone()
+  {
+    try
+      {
+       return super.clone();
+      }
+    catch (CloneNotSupportedException e)
+      {
+       /* This shouldn't happen; we implement Cloneable */
+       throw new IllegalStateException("clone() called on " +
+                                       "non-cloneable object.");
+      }
+  }
+
+  /**
+   * Compares this feature with the supplied object.  This
+   * returns true iff the object is an instance of
+   * [EMAIL PROTECTED] MBeanNotificationInfo}, [EMAIL PROTECTED] 
Object#equals()}
+   * returns true for a comparison of both the name and
+   * description of this notification with that of the specified
+   * object, and the two notification type arrays contain the
+   * same elements in the same order (but one may be longer than
+   * the other).
+   *
+   * @param obj the object to compare.
+   * @return true if the object is a [EMAIL PROTECTED] MBeanNotificationInfo}
+   *         instance, 
+   *         <code>name.equals(object.getName())</code>,
+   *         <code>description.equals(object.getDescription</code>
+   *         and the corresponding elements of the type arrays are
+   *         equal.
+   */
+  public boolean equals(Object obj)
+  {
+    if (obj instanceof MBeanNotificationInfo)
+      {
+       if (!(super.equals(obj)))
+         return false;
+       MBeanNotificationInfo o = (MBeanNotificationInfo) obj;
+       String[] oTypes = o.getNotifTypes();
+       for (int a = 0; a < types.length; ++a)
+         {
+           if (a == oTypes.length)
+             return true;
+           if (!(types[a].equals(oTypes[a])))
+             return false;
+         }
+       return true;
+      }
+    else
+      return false;
+  }
+
+  /**
+   * Returns the notification types that the management bean
+   * may emit.  The notification types are strings using the
+   * dot notation familiar from Java property and package
+   * names.  Changing the returned array does not affect
+   * the values retained by this instance.
+   *
+   * @return the notification types.
+   */
+  public String[] getNotifTypes()
+  {
+    return types;
+  }
+
+  /**
+   * Returns the hashcode of the notification
+   * information as the sum of the hashcode of
+   * the superclass and the hashcode of the
+   * types array.
+   *
+   * @return the hashcode of the notification
+   *         information.
+   */
+  public int hashCode()
+  {
+    return super.hashCode() + Arrays.hashCode(types);
+  }
+
+}
Index: javax/management/Notification.java
===================================================================
RCS file: javax/management/Notification.java
diff -N javax/management/Notification.java
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ javax/management/Notification.java  16 Jul 2006 14:31:22 -0000
@@ -0,0 +1,314 @@
+/* Notification.java -- A notification emitted by a bean.
+   Copyright (C) 2006 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+package javax.management;
+
+import java.util.Date;
+import java.util.EventObject;
+
+/**
+ * <p>
+ * A notification message that may be emitted by a bean.
+ * Notifications have both a message and a type, so individual
+ * notifications can be grouped by type.  They also incorporate
+ * sequencing, so that the recipient can order the delivered
+ * messages correctly (there is no guarantee that they will
+ * be delivered in order).
+ * </p>
+ * <p>
+ * Notifications also include a reference to the source of
+ * the notification.  The source bean is represented either
+ * by an [EMAIL PROTECTED] ObjectName} or by a direct reference to the
+ * bean.  The former is preferable, and notifications emitted
+ * via a [EMAIL PROTECTED] MBeanServer} will automatically have the source
+ * transformed into an [EMAIL PROTECTED] ObjectName}.
+ * </p>
+ *
+ * @author Andrew John Hughes ([EMAIL PROTECTED])
+ * @since 1.5
+ */
+public class Notification
+  extends EventObject
+{
+
+  /**
+   * The notification message.
+   *
+   * @serial the notification message.
+   */
+  private String message;
+
+  /**
+   * The notification's sequence number, relative to the notifications
+   * emitted by the bean.
+   *
+   * @serial the notification sequence number.
+   */
+  private long sequenceNumber;
+
+  /**
+   * The source of the notification.  This is redeclared in order to
+   * replace the <code>source</code> variable in [EMAIL PROTECTED] 
java.util.EventObject}
+   * with a non-transient version.
+   *
+   * @serial the notification source.
+   */
+  protected Object source;
+
+  /**
+   * The time the notification was generated.
+   *
+   * @serial the notification timestamp.
+   */
+  private long timeStamp;
+
+  /**
+   * The type of notification sent.  This utilises the same style
+   * as Java property and package names.  For example,
+   * <code>gnu.gcj.compiler</code> may be one type of notifications.
+   *
+   * @serial the notification type.
+   */
+  private String type;
+
+  /**
+   * The user data associated with the notification.  This includes
+   * any additional data which should be transmitted with the notification,
+   * but can't be achieved using the [EMAIL PROTECTED] java.lang.String} format
+   * of the <code>message</code>.
+   *
+   * @serial the notification user data.
+   */
+  private Object userData;
+
+  /**
+   * Creates a new [EMAIL PROTECTED] Notification} object with the specified 
type,
+   * source and sequence number.  The timestamp is created using the
+   * current date and time.
+   *
+   * @param type the type of the notification.
+   * @param source the source of the notification.
+   * @param sequenceNumber the sequence number of the notifcation.
+   */
+  public Notification(String type, Object source, long sequenceNumber)
+  {
+    this(type, source, sequenceNumber, new Date().getTime());
+  }
+
+  /**
+   * Creates a new [EMAIL PROTECTED] Notification} object with the specified 
type,
+   * source, sequence number and timestamp.  
+   *
+   * @param type the type of the notification.
+   * @param source the source of the notification.
+   * @param sequenceNumber the sequence number of the notifcation.
+   * @param timeStamp the time the notification was emitted.
+   */
+  public Notification(String type, Object source, long sequenceNumber,
+                     long timeStamp)
+  {
+    this(type, source, sequenceNumber, timeStamp, null);
+  }
+
+  /**
+   * Creates a new [EMAIL PROTECTED] Notification} object with the specified 
type,
+   * source, sequence number, timestamp and message.  
+   *
+   * @param type the type of the notification.
+   * @param source the source of the notification.
+   * @param sequenceNumber the sequence number of the notifcation.
+   * @param timeStamp the time the notification was emitted.
+   * @param message the message contained in the notification.
+   */
+  public Notification(String type, Object source, long sequenceNumber,
+                     long timeStamp, String message)
+  {
+    super(source);
+    this.type = type;
+    this.sequenceNumber = sequenceNumber;
+    this.timeStamp = timeStamp;
+    this.message = message;
+  }
+
+  /**
+   * Creates a new [EMAIL PROTECTED] Notification} object with the specified 
type,
+   * source, sequence number and message.  The timestamp is created using
+   * the current date and time.
+   *
+   * @param type the type of the notification.
+   * @param source the source of the notification.
+   * @param sequenceNumber the sequence number of the notifcation.
+   * @param message the message contained in the notification.
+   */
+  public Notification(String type, Object source, long sequenceNumber,
+                     String message)
+  {
+    this(type, source, sequenceNumber, new Date().getTime(), message);
+  }
+
+  /**
+   * Returns the message contained in this notification.  The message
+   * is in [EMAIL PROTECTED] java.lang.String} form, and is thus intended for
+   * display to the end-user.  Data transferred as part of the notification
+   * which shouldn't be displayed is included in the <code>userData</code>
+   * field.
+   *
+   * @return the notification message.
+   * @see #getUserData()
+   * @see #setUserData(java.lang.Object)
+   */
+  public String getMessage()
+  {
+    return message;
+  }
+
+  /**
+   * Returns the sequence number of this notification.  This
+   * can be used to determine the order in which notifications
+   * were emitted by the broadcasting bean.
+   *
+   * @return the sequence number.
+   * @see #setSequenceNumber(long)
+   */
+  public long getSequenceNumber()
+  {
+    return sequenceNumber;
+  }
+
+  /**
+   * Returns the date and time at which this notification was
+   * emitted.
+   *
+   * @return the notification timestamp.
+   * @see #setTimeStamp(long)
+   */
+  public long getTimeStamp()
+  {
+    return timeStamp;
+  }
+
+  /**
+   * Returns the type of this notification.  Types take the same
+   * form as Java package and property names.
+   *
+   * @return the type of the notification.
+   */
+  public String getType()
+  {
+    return type;
+  }
+
+  /**
+   * Returns the additional user data associated with the notification.
+   * This is used to attach additional non-textual information to the
+   * notification.
+   *
+   * @return the user data associated with the notification.
+   * @see #setUserData(java.lang.Object)
+   */
+  public Object getUserData()
+  {
+    return userData;
+  }
+
+  /**
+   * Sets the sequence number to the value specified.
+   *
+   * @param sequenceNumber the new sequence number.
+   * @see #getSequenceNumber()
+   */
+  public void setSequenceNumber(long sequenceNumber)
+  {
+    this.sequenceNumber = sequenceNumber;
+  }
+
+  /**
+   * Sets the source of this notification to the value
+   * specified.
+   *
+   * @param source the new source of the notification.
+   * @see java.util.EventSource#getSource()
+   */
+  public void setSource(Object source)
+  {
+    this.source = source;
+  }
+
+  /**
+   * Sets the date and time at which this notification
+   * was emitted.
+   *
+   * @param timeStamp the new time stamp of the notification.
+   * @see #getTimeStamp()
+   */
+  public void setTimeStamp(long timeStamp)
+  {
+    this.timeStamp = timeStamp;
+  }
+
+  /**
+   * Sets the additional user data associated with the notification
+   * to the specified value.  This is used to attach additional
+   * non-textual information to the notification.
+   *
+   * @param userData the new user data associated with the notification.
+   * @see #getUserData()
+   */
+  public void setUserData(Object userData)
+  {
+    this.userData = userData;
+  }
+
+  /**
+   * A textual representation of the notification.
+   * 
+   * @return the notification in [EMAIL PROTECTED] java.lang.String} form.
+   */
+  public String toString()
+  {
+    return getClass().getName()
+      + "[message=" + message 
+      + ", sequenceNumber=" + sequenceNumber 
+      + ", source=" + source 
+      + ", timeStamp=" + timeStamp
+      + ", type=" + type
+      + ", userData=" + userData
+      + "]";
+  }
+
+}
+
Index: javax/management/NotificationBroadcaster.java
===================================================================
RCS file: javax/management/NotificationBroadcaster.java
diff -N javax/management/NotificationBroadcaster.java
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ javax/management/NotificationBroadcaster.java       16 Jul 2006 14:31:22 
-0000
@@ -0,0 +1,112 @@
+/* NotificationBroadcaster.java -- Interface for broadcasters.
+   Copyright (C) 2006 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+package javax.management;
+
+/**
+ * <p>
+ * Represents a bean that can emit notifications when
+ * events occur.  Other beans can use this interface
+ * to add themselves to the list of recipients of such
+ * notifications.
+ * </p>
+ * <p>
+ * <strong>Note</strong>: New classes should use
+ * [EMAIL PROTECTED] NotificationEmitter}, a subinterface of this,
+ * in preference to using this interface directly.
+ * </p>
+ *
+ * @author Andrew John Hughes ([EMAIL PROTECTED])
+ * @since 1.5
+ */
+public interface NotificationBroadcaster
+{
+  
+  /**
+   * Registers the specified listener as a new recipient of
+   * notifications from this bean.  If non-null, the filter
+   * argument will be used to select which notifications are
+   * delivered.  The supplied object will also be passed to
+   * the recipient with each notification.  This should not
+   * be modified by the broadcaster, but instead should be
+   * passed unmodified to the listener.
+   *
+   * @param listener the new listener, who will receive
+   *                 notifications from this broadcasting bean.
+   * @param filter a filter to determine which notifications are
+   *               delivered to the listener, or <code>null</code>
+   *               if no filtering is required.
+   * @param passback an object to be passed to the listener with
+   *                 each notification.
+   * @throws IllegalArgumentException if <code>listener</code> is
+   *                                  <code>null</code>.
+   * @see #removeNotificationListener(NotificationListener)
+   */
+  void addNotificationListener(NotificationListener listener,
+                              NotificationFilter filter,
+                              Object passback)
+    throws IllegalArgumentException;
+
+  /**
+   * Returns an array describing the notifications this
+   * bean may send to its registered listeners.  Ideally, this
+   * array should be complete, but in some cases, this may
+   * not be possible.  However, be aware that some listeners
+   * may expect this to be so.
+   *
+   * @return the array of possible notifications.
+   */
+  MBeanNotificationInfo[] getNotificationInfo();
+
+  /**
+   * Removes the specified listener from the list of recipients
+   * of notifications from this bean.  This includes all combinations
+   * of filters and passback objects registered for this listener.
+   * For more specific removal of listeners, see the subinterface
+   * [EMAIL PROTECTED] NotificationEmitter}.
+   *
+   * @param listener the listener to remove.
+   * @throws ListenerNotFoundException if the specified listener
+   *                                   is not registered with this bean.
+   * @see #addNotificationListener(NotificationListener, NotificationFilter,
+   *                               java.lang.Object)
+   */
+  void removeListener(NotificationListener listener)
+    throws ListenerNotFoundException;
+
+}
+
Index: javax/management/NotificationEmitter.java
===================================================================
RCS file: javax/management/NotificationEmitter.java
diff -N javax/management/NotificationEmitter.java
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ javax/management/NotificationEmitter.java   16 Jul 2006 14:31:22 -0000
@@ -0,0 +1,76 @@
+/* NotificationEmitter.java -- Refined interface for broadcasters.
+   Copyright (C) 2006 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+package javax.management;
+
+/**
+ * Represents a bean that can emit notifications when
+ * events occur.  Other beans can use this interface
+ * to add themselves to the list of recipients of such
+ * notifications.
+ *
+ * @author Andrew John Hughes ([EMAIL PROTECTED])
+ * @since 1.5
+ */
+public interface NotificationEmitter
+  extends NotificationBroadcaster
+{
+  
+  /**
+   * Removes the specified listener from the list of recipients
+   * of notifications from this bean.  Only the first instance with
+   * the supplied filter and passback object is removed.
+   * <code>null</code> is used as a valid value for these parameters,
+   * rather than as a way to remove all registration instances for
+   * the specified listener; for this behaviour instead, see the details
+   * of the same method in [EMAIL PROTECTED] NotificationBroadcaster}.
+   *
+   * @param listener the listener to remove.
+   * @param filter the filter of the listener to remove.
+   * @param passback the passback object of the listener to remove.
+   * @throws ListenerNotFoundException if the specified listener
+   *                                   is not registered with this bean.
+   * @see #addNotificationListener(NotificationListener, NotificationFilter,
+   *                               java.lang.Object)
+   */
+  void removeListener(NotificationListener listener,
+                     NotificationFilter filter,
+                     Object passback)
+    throws ListenerNotFoundException;
+
+}
+
Index: javax/management/NotificationFilter.java
===================================================================
RCS file: javax/management/NotificationFilter.java
diff -N javax/management/NotificationFilter.java
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ javax/management/NotificationFilter.java    16 Jul 2006 14:31:22 -0000
@@ -0,0 +1,63 @@
+/* NotificationFilter.java -- Interface for notification filters.
+   Copyright (C) 2006 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+package javax.management;
+
+/**
+ * Represents a object that acts as a filter for notifications.
+ * Implementations of this class are used to determine which
+ * notifications should be passed to a receiving bean, and which
+ * should not.
+ *
+ * @author Andrew John Hughes ([EMAIL PROTECTED])
+ * @since 1.5
+ */
+public interface NotificationFilter
+{
+  
+  /**
+   * Returns true if the specified notification should be passed
+   * on to the listener.
+   *
+   * @param notification the notification being delivered.
+   * @return true if the notification should be passed to the
+   *         listener, false otherwise.
+   */
+  boolean isNotificationEnabled(Notification notification);
+
+}
+
Index: javax/management/NotificationListener.java
===================================================================
RCS file: javax/management/NotificationListener.java
diff -N javax/management/NotificationListener.java
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ javax/management/NotificationListener.java  16 Jul 2006 14:31:22 -0000
@@ -0,0 +1,67 @@
+/* NotificationListener.java -- Interface for receivers of notifications.
+   Copyright (C) 2006 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+package javax.management;
+
+/**
+ * Represents a object that can receive notifications from
+ * a bean.
+ *
+ * @author Andrew John Hughes ([EMAIL PROTECTED])
+ * @since 1.5
+ */
+public interface NotificationListener
+{
+  
+  /**
+   * Invoked by the notifying bean when a notification is to
+   * be delivered to the recipient.  As the transmission of
+   * notifications takes place sequentially, implementors of
+   * this method should avoid performing lengthy operations,
+   * as the notifying bean will stall until the method is
+   * complete.
+   *
+   * @param notification the notification from the bean.
+   * @param passback the object that was passed to the notifying
+   *                 bean as part of the registration process.
+   * @see NotificationBroadcaster#addListener(NotificationListener,
+   *      NotificationFilter, Object)
+   */
+  void handleNotification(Notification notification, Object passback);
+
+}
+
Index: javax/management/OperationsException.java
===================================================================
RCS file: 
/cvsroot/classpath/classpath/javax/management/OperationsException.java,v
retrieving revision 1.1
diff -u -3 -p -u -r1.1 OperationsException.java
--- javax/management/OperationsException.java   13 Jun 2006 20:54:01 -0000      
1.1
+++ javax/management/OperationsException.java   16 Jul 2006 14:31:22 -0000
@@ -49,6 +49,11 @@ public class OperationsException
 {
 
   /**
+   * Compatible with JDK 1.5
+   */
+  private static final long serialVersionUID = -4967597595580536216L;
+
+  /**
    * Constructs a new <code>OperationsException</code>.
    */
   public OperationsException()

Attachment: signature.asc
Description: Digital signature

Reply via email to