| /* |
| * 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"); |
| } |
| } |
| } |