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