Class COM.odi.osji.Notification

java.lang.Object
   |
   +----COM.odi.osji.Notification

public class Notification
extends Object
The Notification class allows different sessions, which can be in different Java virtual machines and on different network hosts, to communicate. One session sends out a notification, and any other session that has established a matching subscription receives the notification. An Object of class Notification identifies a persistent object, an integer called the kind, and a sequence of bytes called the data which can optionally be used to hold a String.


Variable Index

 o MAXIMUM_DATA_LENGTH
The maximum length of the "data" byte array in a notification.
 o MAXIMUM_NOTIFICATION_QUEUE_LENGTH
The maximum length to which the notification queue can be set.

Constructor Index

 o Notification(Object, int)
Make a Notification for the specified location (Java object).
 o Notification(Object, int, byte[])
Make a Notification for the specified location (Java object).
 o Notification(Object, int, String)
Make a Notification for the specified location (Java object).

Method Index

 o getData()
Get the byte array for this notification.
 o getKind()
Get the kind of the notification.
 o getLocation()
Get the location (Java object) from which this notification was made.
 o getMessage()
Get the string for this notification.
 o getPendingNotifications()
Determine the number of pending notifications in the notification queue for this session.
 o getQueueOverflows()
Determine the number of times that the notification queue for this session has overflowed.
 o getQueueSize()
Determine the size of the queue for the current session.
 o notifyImmediate()
Send this notification, immediately.
 o notifyImmediate(Notification[])
Notify all of the notifications in the array, immediately.
 o notifyOnCommit()
Send this notification when the current transaction commits.
 o notifyOnCommit(Notification[])
Notify all of the notifications in the array when the current transaction commits.
 o receive(int)
Receive a notification from this session's queue of incoming messages.
 o setQueueSize(int)
Set the size of the notification queue for the current session.
 o subscribe(Object)
If the specified object is Placement, then subscribe to all objects therein.
 o subscribe(Placement)
Subscribe to all objects in Placement.
 o unsubscribe(Object)
If the specified object is Placement, then unsubscribe to all objects therein.
 o unsubscribe(Placement)
Unsubscribe to all objects in Placement.

Variables

 o MAXIMUM_DATA_LENGTH
  public final static int MAXIMUM_DATA_LENGTH
The maximum length of the "data" byte array in a notification. Also the maximum length of the UTF-8 encoded representation of a String in a notification.

 o MAXIMUM_NOTIFICATION_QUEUE_LENGTH
  public final static int MAXIMUM_NOTIFICATION_QUEUE_LENGTH
The maximum length to which the notification queue can be set.

See Also:
setQueueSize

Constructors

 o Notification
  public Notification(Object location,
                      int kind,
                      byte data[])
Make a Notification for the specified location (Java object). The byte array is expressed as a Java byte array.

Parameters:
location - The object.
kind - The kind of this notification.
data - The byte array data of this notification.
Throws: ObjectNotPersistentException
If the location is not already a persistent object. Possibly the application should call ObjectStore.migrate.
Throws: ObjectNotPersistenceCapableException
If the location is an object of a class that's not persistence-capable.
Throws: IllegalArgumentException
If the length of the byte array exceeds MAXIMUM_DATA_LENGTH bytes or one of the elements of the array is zero.
Throws: DatabaseException
If the location is in the transient segment.
Throws: NotificationException
The value of kind was reserved (negative).
Throws: ObjectStoreException
If the current thread is not associated with a session and there is no global session.
Throws: ObjectNotFoundException
If the object in the notification has been destroyed.
Throws: ObjectException
If the object in the notification has become stale.
Throws: DatabaseNotOpenException
If the database containing the location is not open.
 o Notification
  public Notification(Object location,
                      int kind,
                      String message)
Make a Notification for the specified location (Java object). The byte array is expressed as a Java string.

Parameters:
location - The object.
kind - The kind of this notification.
message - The string of this notification.
Throws: ObjectNotPersistentException
If the location is not already a persistent object. Possibly the application should call ObjectStore.migrate.
Throws: ObjectNotPersistenceCapableException
If the location is an object of a class that's not persistence-capable.
Throws: IllegalArgumentException
If the length of the UTF-8 encoding of the string exceeds MAXIMUM_DATA_LENGTH bytes.
Throws: DatabaseException
If the location is in the transient segment.
Throws: NotificationException
If the value of kind was reserved (negative).
Throws: ObjectStoreException
If the current thread is not associated with a session and there is no global session.
Throws: ObjectNotFoundException
If the object in the notification has been destroyed.
Throws: ObjectException
If the object in the notification has become stale.
Throws: DatabaseNotOpenException
If the database containing the location is not open.
 o Notification
  public Notification(Object location,
                      int kind)
Make a Notification for the specified location (Java object). The byte array is empty.

Parameters:
location - The object.
kind - The kind of this notification.
Throws: ObjectNotPersistentException
If the location is not already a persistent object. Possibly the application should call ObjectStore.migrate.
Throws: ObjectNotPersistenceCapableException
If the location is an object of a class that's not persistence-capable.
Throws: DatabaseException
If the location is in the transient segment.
Throws: NotificationException
If the value of kind was reserved (negative).
Throws: ObjectStoreException
If the current thread is not associated with a session and there is no global session.
Throws: ObjectNotFoundException
If the object in the notification has been destroyed.
Throws: ObjectException
If the object in the notification has become stale.
Throws: DatabaseNotOpenException
If the database containing the location is not open.

Methods

 o getLocation
  public Object getLocation()
Get the location (Java object) from which this notification was made.

Returns:
The object.
Throws: ObjectNotFoundException
If the object has been destroyed.
Throws: NoTransactionInProgressException
If there is no transaction in progress.
Throws: ObjectStoreException
If the current thread is not associated with a session and there is no global session.
 o getKind
  public int getKind()
Get the kind of the notification.

Returns:
The kind.
 o getData
  public byte[] getData()
Get the byte array for this notification. If the notification was originally made from a string, return a byte array containing the UTF-8 encoding of the string.

Returns:
The byte array.
 o getMessage
  public String getMessage()
Get the string for this notification. The contents of the byte array are interpreted as the UTF-8 encoding of a string, and that string is returned.

Returns:
The string.
Throws: ObjectStoreException
If the current thread is not associated with a session and there is no global session.
 o notifyImmediate
  public void notifyImmediate()
Send this notification, immediately.

Throws: ObjectStoreException
If the current thread is not associated with a session and there is no global session.
 o notifyOnCommit
  public void notifyOnCommit()
Send this notification when the current transaction commits.

Throws: NoTransactionInProgressException
If there is no transaction in progress.
 o notifyImmediate
  public static void notifyImmediate(Notification notifications[])
Notify all of the notifications in the array, immediately.

Parameters:
notifications - An array of notifications to be notified.
Throws: ObjectStoreException
If the current thread is not associated with a session and there is no global session.
 o notifyOnCommit
  public static void notifyOnCommit(Notification notifications[])
Notify all of the notifications in the array when the current transaction commits.

Parameters:
notifications - An array of notifications to be notified.
Throws: NoTransactionInProgressException
If there is no transaction in progress.
Throws: ObjectStoreException
If the current thread is not associated with a session and there is no global session.
 o subscribe
  public static void subscribe(Placement placement)
Subscribe to all objects in Placement.

Parameters:
placement - The segment or database to subscribe to.
Throws: DatabaseNotOpenException
If the database containing the Placement is not open.
Throws: DatabaseException
If the Placement is the transient segment or database.
Throws: SegmentNotFoundException
If Placement is a segment that has been destroyed.
Throws: ObjectStoreException
If the current thread is not associated with a session and there is no global session.
Throws: NoTransactionInProgressException
If there is no transaction in progress.
 o subscribe
  public static void subscribe(Object location)
If the specified object is Placement, then subscribe to all objects therein. Otherwise, subscribe to that object.

Parameters:
location - The object, or a Placement, to subscribe to.
Throws: DatabaseNotOpenException
If the database containing the location or the Placement is not open.
Throws: SegmentException
If object is in the transient segment.
Throws: DatabaseException
If the Placement is the transient segment or database.
Throws: SegmentNotFoundException
If the segment has been destroyed.
Throws: ObjectNotFoundException
If the object has been destroyed.
Throws: ObjectException
If the object has become stale.
Throws: ObjectStoreException
If the current thread is not associated with a session and there is no global session.
Throws: ObjectNotPersistentException
If the location is not already a persistent object. Possibly the application should call ObjectStore.migrate.
Throws: ObjectNotPersistenceCapableException
If the location is an object of a class that's not persistence-capable.
Throws: NoTransactionInProgressException
If there is no transaction in progress.
 o unsubscribe
  public static void unsubscribe(Placement placement)
Unsubscribe to all objects in Placement.

Parameters:
placement - The segment or database to unsubscribe to.
Throws: DatabaseNotOpenException
If the database containing the Placement is not open.
Throws: DatabaseException
If the Placement is the transient segment or database.
Throws: SegmentNotFoundException
If Placement is a segment that has been destroyed.
Throws: ObjectStoreException
If the current thread is not associated with a session and there is no global session.
Throws: NoTransactionInProgressException
If there is no transaction in progress.
 o unsubscribe
  public static void unsubscribe(Object location)
If the specified object is Placement, then unsubscribe to all objects therein. Otherwise, unsubscribe to that object.

Parameters:
location - The object, or a Placement, to unsubscribe to.
Throws: DatabaseNotOpenException
If the database containing the location or the Placement is not open.
Throws: SegmentException
If object is in the transient segment.
Throws: DatabaseException
If the Placement is the transient segment or database.
Throws: SegmentNotFoundException
If the segment has been destroyed.
Throws: ObjectNotFoundException
If the object has been destroyed.
Throws: ObjectException
If the object has become stale.
Throws: ObjectStoreException
If the current thread is not associated with a session and there is no global session.
Throws: ObjectNotPersistentException
If the location is not already a persistent object. Possibly the application should call ObjectStore.migrate.
Throws: ObjectNotPersistenceCapableException
If the location is an object of a class that's not persistence-capable.
Throws: NoTransactionInProgressException
If there is no transaction in progress.
 o getQueueSize
  public static int getQueueSize()
Determine the size of the queue for the current session.

Returns:
The size of the queue.
Throws: ObjectStoreException
If the current thread is not associated with a session and there is no global session.
 o setQueueSize
  public static void setQueueSize(int queueSize)
Set the size of the notification queue for the current session. This must not be called after the first subscription is done.

Parameters:
queueSize - The new queue size.
Throws: NotificationException
If setQueueSize was called after at least one subscription was done.
Throws: NotificationException
If the proposed new queue size exceeds MAXIMUM_NOTIFICATION_QUEUE_LENGTH.
Throws: ObjectStoreException
If the current thread is not associated with a session and there is no global session.
 o getPendingNotifications
  public static int getPendingNotifications()
Determine the number of pending notifications in the notification queue for this session.

Returns:
The number of pending notifications.
Throws: ObjectStoreException
If the current thread is not associated with a session and there is no global session.
 o getQueueOverflows
  public static int getQueueOverflows()
Determine the number of times that the notification queue for this session has overflowed.

Returns:
The number of notification queue overflows.
Throws: ObjectStoreException
If the current thread is not associated with a session and there is no global session.
 o receive
  public static Notification receive(int timeout)
Receive a notification from this session's queue of incoming messages. This method is normally called in a separate cooperating thread, i.e. in a distinct thread that is associated with the same session as the thread that called the subscribe method. There need not be a transaction in progress; recieve operates independently of transactions.

Parameters:
timeout - A timeout value in milliseconds, or ObjectStore.WAIT_FOREVER to mean keep waiting without ever timing out. If timeout is zero, don't wait at all; return any notification already pending in the queue, otherwise return null.
Returns:
A notification object, or null if the timeout period has passed and no notification has arrived. Also, return null immediate if there are no subscriptions at all.
Throws: ObjectStoreException
If the current thread is not associated with a session and there is no global session.

Copyright © 1996, 1997, 1998 Object Design, Inc. All rights reserved.