| /* | |
| * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. | |
| * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
| * | |
| * This code is free software; you can redistribute it and/or modify it | |
| * under the terms of the GNU General Public License version 2 only, as | |
| * published by the Free Software Foundation. Oracle designates this | |
| * particular file as subject to the "Classpath" exception as provided | |
| * by Oracle in the LICENSE file that accompanied this code. | |
| * | |
| * This code 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 | |
| * version 2 for more details (a copy is included in the LICENSE file that | |
| * accompanied this code). | |
| * | |
| * You should have received a copy of the GNU General Public License version | |
| * 2 along with this work; if not, write to the Free Software Foundation, | |
| * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
| * | |
| * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | |
| * or visit www.oracle.com if you need additional information or have any | |
| * questions. | |
| */ | |
| package javax.management.remote; | |
| import java.io.IOException; | |
| import java.io.InvalidObjectException; | |
| import java.io.ObjectInputStream; | |
| import java.io.Serializable; | |
| import javax.management.Notification; | |
| /** | |
| * <p>A (Notification, Listener ID) pair.</p> | |
| * <p>This class is used to associate an emitted notification | |
| * with the listener ID to which it is targeted.</p> | |
| * | |
| * @since 1.5 | |
| */ | |
| public class TargetedNotification implements Serializable { | |
| private static final long serialVersionUID = 7676132089779300926L; | |
| // If we replace Integer with int... | |
| // /** | |
| // * <p>Constructs a <code>TargetedNotification</code> object. The | |
| // * object contains a pair (Notification, Listener ID). | |
| // * The Listener ID identifies the client listener to which that | |
| // * notification is targeted. The client listener ID is one | |
| // * previously returned by the connector server in response to an | |
| // * <code>addNotificationListener</code> request.</p> | |
| // * @param notification Notification emitted from the MBean server. | |
| // * @param listenerID The ID of the listener to which this | |
| // * notification is targeted. | |
| // */ | |
| // public TargetedNotification(Notification notification, | |
| // int listenerID) { | |
| // this.notif = notification; | |
| // this.id = listenerID; | |
| // } | |
| /** | |
| * <p>Constructs a <code>TargetedNotification</code> object. The | |
| * object contains a pair (Notification, Listener ID). | |
| * The Listener ID identifies the client listener to which that | |
| * notification is targeted. The client listener ID is one | |
| * previously returned by the connector server in response to an | |
| * <code>addNotificationListener</code> request.</p> | |
| * @param notification Notification emitted from the MBean server. | |
| * @param listenerID The ID of the listener to which this | |
| * notification is targeted. | |
| * @exception IllegalArgumentException if the <var>listenerID</var> | |
| * or <var>notification</var> is null. | |
| */ | |
| public TargetedNotification(Notification notification, | |
| Integer listenerID) { | |
| validate(notification, listenerID); | |
| // If we replace integer with int... | |
| // this(notification,intValue(listenerID)); | |
| this.notif = notification; | |
| this.id = listenerID; | |
| } | |
| /** | |
| * <p>The emitted notification.</p> | |
| * | |
| * @return The notification. | |
| */ | |
| public Notification getNotification() { | |
| return notif; | |
| } | |
| /** | |
| * <p>The ID of the listener to which the notification is | |
| * targeted.</p> | |
| * | |
| * @return The listener ID. | |
| */ | |
| public Integer getListenerID() { | |
| return id; | |
| } | |
| /** | |
| * Returns a textual representation of this Targeted Notification. | |
| * | |
| * @return a String representation of this Targeted Notification. | |
| **/ | |
| public String toString() { | |
| return "{" + notif + ", " + id + "}"; | |
| } | |
| /** | |
| * @serial A notification to transmit to the other side. | |
| * @see #getNotification() | |
| **/ | |
| private Notification notif; | |
| /** | |
| * @serial The ID of the listener to which the notification is | |
| * targeted. | |
| * @see #getListenerID() | |
| **/ | |
| private Integer id; | |
| //private final int id; | |
| // Needed if we use int instead of Integer... | |
| // private static int intValue(Integer id) { | |
| // if (id == null) throw new | |
| // IllegalArgumentException("Invalid listener ID: null"); | |
| // return id.intValue(); | |
| // } | |
| private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException { | |
| ois.defaultReadObject(); | |
| try { | |
| validate(this.notif, this.id); | |
| } catch (IllegalArgumentException e) { | |
| throw new InvalidObjectException(e.getMessage()); | |
| } | |
| } | |
| private static void validate(Notification notif, Integer id) throws IllegalArgumentException { | |
| if (notif == null) { | |
| throw new IllegalArgumentException("Invalid notification: null"); | |
| } | |
| if (id == null) { | |
| throw new IllegalArgumentException("Invalid listener ID: null"); | |
| } | |
| } | |
| } |