/* * 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; /** *
A (Notification, Listener ID) pair.
*This class is used to associate an emitted notification * with the listener ID to which it is targeted.
* * @since 1.5 */ public class TargetedNotification implements Serializable { private static final long serialVersionUID = 7676132089779300926L; // If we replace Integer with int... // /** // *Constructs a TargetedNotification
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
// * addNotificationListener
request.
Constructs a TargetedNotification
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
* addNotificationListener
request.
The emitted notification.
* * @return The notification. */ public Notification getNotification() { return notif; } /** *The ID of the listener to which the notification is * targeted.
* * @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"); } } }