mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			335 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			Java
		
	
	
	
			
		
		
	
	
			335 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			Java
		
	
	
	
/* 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.io.IOException;
 | 
						|
import java.io.ObjectOutputStream;
 | 
						|
 | 
						|
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
 | 
						|
{
 | 
						|
 | 
						|
  /**
 | 
						|
   * Compatible with JDK 1.6
 | 
						|
   */
 | 
						|
  private static final long serialVersionUID = -7516092053498031989L;
 | 
						|
 | 
						|
  /**
 | 
						|
   * 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, "");
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * 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.source = source;
 | 
						|
    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
 | 
						|
      + "]";
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Serialize the {@link Notification}.
 | 
						|
   *
 | 
						|
   * @param out the output stream to write to.
 | 
						|
   * @throws IOException if an I/O error occurs.
 | 
						|
   */
 | 
						|
  private void writeObject(ObjectOutputStream out)
 | 
						|
    throws IOException
 | 
						|
  {
 | 
						|
    out.defaultWriteObject();
 | 
						|
  }
 | 
						|
 | 
						|
}
 |