diff options
-rw-r--r-- | ChangeLog | 17 | ||||
-rw-r--r-- | javax/management/ListenerNotFoundException.java | 75 | ||||
-rw-r--r-- | javax/management/MBeanFeatureInfo.java | 6 | ||||
-rw-r--r-- | javax/management/MBeanNotificationInfo.java | 201 | ||||
-rw-r--r-- | javax/management/Notification.java | 314 | ||||
-rw-r--r-- | javax/management/NotificationBroadcaster.java | 112 | ||||
-rw-r--r-- | javax/management/NotificationEmitter.java | 76 | ||||
-rw-r--r-- | javax/management/NotificationFilter.java | 63 | ||||
-rw-r--r-- | javax/management/NotificationListener.java | 67 | ||||
-rw-r--r-- | javax/management/OperationsException.java | 5 |
10 files changed, 933 insertions, 3 deletions
@@ -1,3 +1,20 @@ +2006-07-16 Andrew John Hughes <gnu_andrew@member.fsf.org> + + * 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. + 2006-07-16 Thomas Minor <1nocentrabidlamb@sexMagnet.com> Mark Wielaard <mark@klomp.org> diff --git a/javax/management/ListenerNotFoundException.java b/javax/management/ListenerNotFoundException.java new file mode 100644 index 000000000..ea3cb7416 --- /dev/null +++ b/javax/management/ListenerNotFoundException.java @@ -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 (gnu_andrew@member.fsf.org) + * @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); + } + +} + diff --git a/javax/management/MBeanFeatureInfo.java b/javax/management/MBeanFeatureInfo.java index 72dc85996..df49ec50f 100644 --- a/javax/management/MBeanFeatureInfo.java +++ b/javax/management/MBeanFeatureInfo.java @@ -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(); } } diff --git a/javax/management/MBeanNotificationInfo.java b/javax/management/MBeanNotificationInfo.java new file mode 100644 index 000000000..b1950cdd9 --- /dev/null +++ b/javax/management/MBeanNotificationInfo.java @@ -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 {@link java.lang.String} objects. Both would be described + * using one instance of this class, with a member of the array + * returned by {@link #getNotifTypes()} for each one. If another + * notification containing a {@link 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 (gnu_andrew@member.fsf.org) + * @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 {@link 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 {@link 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 {@link 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 + * {@link MBeanNotificationInfo}, {@link 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 {@link 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); + } + +} diff --git a/javax/management/Notification.java b/javax/management/Notification.java new file mode 100644 index 000000000..52c11de06 --- /dev/null +++ b/javax/management/Notification.java @@ -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 {@link ObjectName} or by a direct reference to the + * bean. The former is preferable, and notifications emitted + * via a {@link MBeanServer} will automatically have the source + * transformed into an {@link ObjectName}. + * </p> + * + * @author Andrew John Hughes (gnu_andrew@member.fsf.org) + * @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 {@link 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 {@link java.lang.String} format + * of the <code>message</code>. + * + * @serial the notification user data. + */ + private Object userData; + + /** + * Creates a new {@link 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 {@link 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 {@link 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 {@link 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 {@link 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 {@link java.lang.String} form. + */ + public String toString() + { + return getClass().getName() + + "[message=" + message + + ", sequenceNumber=" + sequenceNumber + + ", source=" + source + + ", timeStamp=" + timeStamp + + ", type=" + type + + ", userData=" + userData + + "]"; + } + +} + diff --git a/javax/management/NotificationBroadcaster.java b/javax/management/NotificationBroadcaster.java new file mode 100644 index 000000000..91b5f636a --- /dev/null +++ b/javax/management/NotificationBroadcaster.java @@ -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 + * {@link NotificationEmitter}, a subinterface of this, + * in preference to using this interface directly. + * </p> + * + * @author Andrew John Hughes (gnu_andrew@member.fsf.org) + * @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 + * {@link 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; + +} + diff --git a/javax/management/NotificationEmitter.java b/javax/management/NotificationEmitter.java new file mode 100644 index 000000000..bcc3ab90b --- /dev/null +++ b/javax/management/NotificationEmitter.java @@ -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 (gnu_andrew@member.fsf.org) + * @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 {@link 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; + +} + diff --git a/javax/management/NotificationFilter.java b/javax/management/NotificationFilter.java new file mode 100644 index 000000000..49d695923 --- /dev/null +++ b/javax/management/NotificationFilter.java @@ -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 (gnu_andrew@member.fsf.org) + * @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); + +} + diff --git a/javax/management/NotificationListener.java b/javax/management/NotificationListener.java new file mode 100644 index 000000000..801f2ac55 --- /dev/null +++ b/javax/management/NotificationListener.java @@ -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 (gnu_andrew@member.fsf.org) + * @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); + +} + diff --git a/javax/management/OperationsException.java b/javax/management/OperationsException.java index 33be4bb01..cbd90d637 100644 --- a/javax/management/OperationsException.java +++ b/javax/management/OperationsException.java @@ -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() |