com.ibm.as400.resource
Class RMessageQueue

java.lang.Object
  |
  +--com.ibm.as400.resource.ResourceList
        |
        +--com.ibm.as400.resource.BufferedResourceList
              |
              +--com.ibm.as400.resource.SystemResourceList
                    |
                    +--com.ibm.as400.resource.RMessageQueue
All Implemented Interfaces:
java.io.Serializable

public class RMessageQueue
extends SystemResourceList

The RMessageQueue class represents an AS/400 message queue. If no message queue path is set, then the default is CURRENT, which represents the current user's message queue,

/QSYS.LIB/QUSRSYS.LIB/userID.MSGQ
.

The following selection IDs are supported:

Use one or more of these selection IDs with getSelectionValue() and setSelectionValue() to access the selection values for an RMessageQueue.

RMessageQueue objects generate RQueuedMessage objects. RQueuedMessage objects have many attributes. Only some of these attribute values are set, depending on how an RQueuedMessage object is created. The following is a list of attribute IDs whose values are set on RQueuedMessage objects returned in a list of messages:

The following is a list of attribute IDs whose values are set on objects returned by receive():

// Create an RMessageQueue object to represent a specific message queue.
AS400 system = new AS400("MYSYSTEM", "MYUSERID", "MYPASSWORD");
RMessageQueue messageQueue = new RMessageQueue(system, "/QSYS.LIB/MYLIB.LIB/MYMSGQ.MSG");

// Set the selection so that the list of messages includes // only messages that need a reply. messageQueue.setSelectionValue(RMessageQueue.SELECTION_CRITERIA, RMessageQueue.MESSAGES_NEED_REPLY);
// Open the list and wait for it to complete. messageQueue.open(); messageQueue.waitForComplete();
// Read and print the messages in the list. long numberOfMessages = messageQueue.getListLength(); for(long i = 0; i < numberOfMessages; ++i) { RQueuedMessage queuedMessage = (RQueuedMessage)messageQueue.resourceAt(i); System.out.println(queuedMessage.getAttributeValue(RQueuedMessage.MESSAGE_TEXT)); }
// Close the list. messageQueue.close();

See Also:
RQueuedMessage, Serialized Form

Field Summary
static java.lang.String ALL
          Constant referring to all messages in the message queue.
static java.lang.String ANY
          Constant referring to any message in the message queue.
static java.lang.String BYKEY
          Constant referring to a message identified by a key.
static java.lang.String COMPLETION
          Constant referring to completion messages.
static java.lang.String COPY
          Constant referring to the sender's copy of a previously sent inquiry message.
static java.lang.String CURRENT
          Constant referring to the current user's message queue.
static java.lang.String DIAGNOSTIC
          Constant referring to diagnostic messages.
static java.lang.String FIRST
          Constant referring to the first message in the message queue.
static java.lang.String FORMATTING_CHARACTERS
          Selection ID for formatting characters.
static java.lang.String INFORMATIONAL
          Constant referring to informational messages.
static java.lang.String INQUIRY
          Constant referring to inquiry messages.
static java.lang.String KEEP_UNANSWERED
          Constant referring to all messages in the message queue except unanswered inquiry and unanswered senders' copy messages.
static java.lang.String LAST
          Constant referring to the last message in the message queue.
static java.lang.String LIST_DIRECTION
          Selection ID for list direction.
static java.lang.String MESSAGES_NEED_REPLY
          Constant referring to messages that need a reply.
static java.lang.String MESSAGES_NO_NEED_REPLY
          Constant referring to messages that do not need a reply.
static java.lang.String NEW
          Constant referring to all new messages in the message queue.
static byte[] NEWEST
          Constant referring to the message key for the newest message in the queue.
static java.lang.String NEXT
          Constant referring to the next message in the message queue.
static java.lang.Integer NO_FORMATTING
          Constant indicating that message help text is not formatted.
static java.lang.String OLD
          Constant referring to all old messages in the message queue.
static byte[] OLDEST
          Constant referring to the message key for the oldest message in the queue.
static java.lang.String PREVIOUS
          Constant referring to the previous message in the message queue.
static java.lang.String REMOVE
          Constant indicating that the message should be removed from the message queue.
static java.lang.String REPLACEMENT_DATA
          Selection ID for replacement data.
static java.lang.String REPLY
          Constant referring to the reply to an inquiry message.
static java.lang.Integer RETURN_FORMATTING_CHARACTERS
          Constant indicating that message help text includes formatting characters.
static java.lang.String SAME
          Constant indicating that the message should remain in the message queue without changing its new or old designation.
static java.lang.String SELECTION_CRITERIA
          Selection ID for selection criteria.
static java.lang.String SENDERS_COPY_NEED_REPLY
          Constant referring to the sender's copies of messages that need replies.
static java.lang.String SEVERITY_CRITERIA
          Selection ID for severity criteria.
static java.lang.String SORT_CRITERIA
          Selection ID for sort criteria.
static java.lang.String STARTING_USER_MESSAGE_KEY
          Selection ID for starting user message key.
static java.lang.String STARTING_WORKSTATION_MESSAGE_KEY
          Selection ID for starting workstation message key.
static java.lang.Integer SUBSTITUTE_FORMATTING_CHARACTERS
          Constant indicating that message help text is formatted.
 
Constructor Summary
RMessageQueue()
          Constructs an RMessageQueue object.
RMessageQueue(AS400 system)
          Constructs an RMessageQueue object.
RMessageQueue(AS400 system, java.lang.String path)
          Constructs an RMessageQueue object.
 
Method Summary
protected  void establishConnection()
          Establishes the connection to the AS/400.
 java.lang.String getPath()
          Returns the fully qualified integrated file system path name of the message queue, or CURRENT to refer to the user's default message queue.
 RQueuedMessage receive(byte[] messageKey)
          Receives a message from the message queue by key.
 RQueuedMessage receive(byte[] messageKey, int waitTime, java.lang.String messageAction, java.lang.String messageType)
          Receives a message from the message queue.
 void remove()
          Remove all messages from the message queue.
 void remove(byte[] messageKey)
          Removes a message from the message queue.
 void remove(java.lang.String messageType)
          Remove messages from the message queue.
 void reply(byte[] messageKey, java.lang.String replyText)
          Replies to and removes a message.
 void reply(byte[] messageKey, java.lang.String replyText, boolean remove)
          Replies to a message.
 void sendInformational(java.lang.String messageText)
          Sends an informational message to the message queue.
 void sendInformational(java.lang.String messageID, java.lang.String messageFile)
          Sends an informational message to the message queue.
 void sendInformational(java.lang.String messageID, java.lang.String messageFile, byte[] substitutionData)
          Sends an informational message to the message queue.
 byte[] sendInquiry(java.lang.String messageText, java.lang.String replyMessageQueue)
          Sends an inquiry message to the message queue.
 byte[] sendInquiry(java.lang.String messageID, java.lang.String messageFile, byte[] substitutionData, java.lang.String replyMessageQueue)
          Sends an inquiry message to the message queue.
 byte[] sendInquiry(java.lang.String messageID, java.lang.String messageFile, java.lang.String replyMessageQueue)
          Sends an inquiry message to the message queue.
 void setPath(java.lang.String path)
          Sets the fully qualified integrated file system path name of the message queue.
 
Methods inherited from class com.ibm.as400.resource.SystemResourceList
close, isBidiEnabled, isResourceAvailable, open, refreshContents, refreshStatus, resourceAt, setSelectionValue, waitForComplete, waitForResource
 
Methods inherited from class com.ibm.as400.resource.BufferedResourceList
fireResourceAdded, getNumberOfPages, getPageSize, setNumberOfPages, setPageSize
 
Methods inherited from class com.ibm.as400.resource.ResourceList
addActiveStatusListener, addPropertyChangeListener, addResourceListListener, addVetoableChangeListener, arePropertiesFrozen, fireBusy, fireIdle, fireLengthChanged, fireListClosed, fireListCompleted, fireListInError, fireListOpened, firePropertyChange, fireVetoableChange, freezeProperties, getAttributeMetaData, getAttributeMetaData, getListLength, getPresentation, getSelectionMetaData, getSelectionMetaData, getSelectionValue, getSelectionValue, getSortMetaData, getSortMetaData, getSortOrder, getSortValue, getSystem, isComplete, isConnectionEstablished, isInError, isOpen, removeActiveStatusListener, removePropertyChangeListener, removeResourceListListener, removeVetoableChangeListener, resources, setAttributeMetaData, setPresentation, setSelectionValue, setSortOrder, setSortValue, setSystem, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

ALL

public static final java.lang.String ALL
Constant referring to all messages in the message queue.

ANY

public static final java.lang.String ANY
Constant referring to any message in the message queue.

BYKEY

public static final java.lang.String BYKEY
Constant referring to a message identified by a key.

COMPLETION

public static final java.lang.String COMPLETION
Constant referring to completion messages.

COPY

public static final java.lang.String COPY
Constant referring to the sender's copy of a previously sent inquiry message.

CURRENT

public static final java.lang.String CURRENT
Constant referring to the current user's message queue.

DIAGNOSTIC

public static final java.lang.String DIAGNOSTIC
Constant referring to diagnostic messages.

FIRST

public static final java.lang.String FIRST
Constant referring to the first message in the message queue.

INFORMATIONAL

public static final java.lang.String INFORMATIONAL
Constant referring to informational messages.

INQUIRY

public static final java.lang.String INQUIRY
Constant referring to inquiry messages.

KEEP_UNANSWERED

public static final java.lang.String KEEP_UNANSWERED
Constant referring to all messages in the message queue except unanswered inquiry and unanswered senders' copy messages.

LAST

public static final java.lang.String LAST
Constant referring to the last message in the message queue.

MESSAGES_NEED_REPLY

public static final java.lang.String MESSAGES_NEED_REPLY
Constant referring to messages that need a reply.

MESSAGES_NO_NEED_REPLY

public static final java.lang.String MESSAGES_NO_NEED_REPLY
Constant referring to messages that do not need a reply.

NEW

public static final java.lang.String NEW
Constant referring to all new messages in the message queue. New messages are those that have not been received.

NEWEST

public static final byte[] NEWEST
Constant referring to the message key for the newest message in the queue.

NEXT

public static final java.lang.String NEXT
Constant referring to the next message in the message queue.

OLD

public static final java.lang.String OLD
Constant referring to all old messages in the message queue. Old messages are those that have already been received.

OLDEST

public static final byte[] OLDEST
Constant referring to the message key for the oldest message in the queue.

PREVIOUS

public static final java.lang.String PREVIOUS
Constant referring to the previous message in the message queue.

REMOVE

public static final java.lang.String REMOVE
Constant indicating that the message should be removed from the message queue.

REPLY

public static final java.lang.String REPLY
Constant referring to the reply to an inquiry message.

SAME

public static final java.lang.String SAME
Constant indicating that the message should remain in the message queue without changing its new or old designation.

SENDERS_COPY_NEED_REPLY

public static final java.lang.String SENDERS_COPY_NEED_REPLY
Constant referring to the sender's copies of messages that need replies.

NO_FORMATTING

public static final java.lang.Integer NO_FORMATTING
Constant indicating that message help text is not formatted.

RETURN_FORMATTING_CHARACTERS

public static final java.lang.Integer RETURN_FORMATTING_CHARACTERS
Constant indicating that message help text includes formatting characters.

SUBSTITUTE_FORMATTING_CHARACTERS

public static final java.lang.Integer SUBSTITUTE_FORMATTING_CHARACTERS
Constant indicating that message help text is formatted.

FORMATTING_CHARACTERS

public static final java.lang.String FORMATTING_CHARACTERS
Selection ID for formatting characters. This identifies a Integer selection, which represents the type of message help text formatting. Possible values are: The default is NO_FORMATTING.

LIST_DIRECTION

public static final java.lang.String LIST_DIRECTION
Selection ID for list direction. This identifies a String selection, which represents the direction to list messages relative to the values specified for the STARTING_USER_MESSAGE_KEY and STARTING_WORKSTATION_MESSAGE_KEY selections. Possible values are: The default is NEXT.

REPLACEMENT_DATA

public static final java.lang.String REPLACEMENT_DATA
Selection ID for replacement data. This identifies a Boolean selection, which indicates whether to replace substitution data in message text. The default is true.

SELECTION_CRITERIA

public static final java.lang.String SELECTION_CRITERIA
Selection ID for selection criteria. This identifies a String selection, which represents the type of messages to be listed. Possible values are: The default is ALL.

SEVERITY_CRITERIA

public static final java.lang.String SEVERITY_CRITERIA
Selection ID for severity criteria. This identifies an Integer selection, which represents the minimum severity of a message to be included in the list. The value must be in the range 0 to 99. The default is 0.

SORT_CRITERIA

public static final java.lang.String SORT_CRITERIA
Selection ID for sort criteria. This identifies a Boolean selection, which indicates whether the list should be sorted by type if the SELECTION_CRITERIA selection is set to ALL. The default is false.

STARTING_USER_MESSAGE_KEY

public static final java.lang.String STARTING_USER_MESSAGE_KEY
Selection ID for starting user message key. This identifies a byte[] selection, which represents the message key used to begin searching for messages to list from the corresponding entry in the message queue. If the message queue path name is set to CURRENT, then this selection represents the starting message key for the current user's user message queue. Possible values are: The default is OLDEST.

If a value other than OLDEST or NEWEST is specified and a message with that key does not exist, an exception is thrown. If the key of a reply message is specified, the message search begins with the inquiry or sender's copy message that the reply with associated with, not the reply message itself.


STARTING_WORKSTATION_MESSAGE_KEY

public static final java.lang.String STARTING_WORKSTATION_MESSAGE_KEY
Selection ID for starting workstation message key. This identifies a byte[] selection, which represents the message key used to begin searching for messages to list from the corresponding entry in the message queue. If the message queue path name is set to CURRENT, then this selection represents the starting message key for the current user's workstation message queue. Otherwise, this selection has no effect. Possible values are: The default is OLDEST.

If a value other than OLDEST or NEWEST is specified and a message with that key does not exist, an exception is thrown. If the key of a reply message is specified, the message search begins with the inquiry or sender's copy message that the reply with associated with, not the reply message itself.

Constructor Detail

RMessageQueue

public RMessageQueue()
Constructs an RMessageQueue object.

RMessageQueue

public RMessageQueue(AS400 system)
Constructs an RMessageQueue object.
Parameters:
system - The system.

RMessageQueue

public RMessageQueue(AS400 system,
                     java.lang.String path)
Constructs an RMessageQueue object.
Parameters:
system - The system.
path - The fully qualified integrated file system path name of the message queue, or CURRENT to refer to the user's default message queue.
Method Detail

establishConnection

protected void establishConnection()
                            throws ResourceException
Establishes the connection to the AS/400.

The method is called by the resource framework automatically when the connection needs to be established.

Overrides:
establishConnection in class ResourceList
Throws:
ResourceException - If an error occurs.

getPath

public java.lang.String getPath()
Returns the fully qualified integrated file system path name of the message queue, or CURRENT to refer to the user's default message queue.
Returns:
The fully qualified integrated file system path name of the message queue, or CURRENT to refer to the user's default message queue.

receive

public RQueuedMessage receive(byte[] messageKey)
                       throws ResourceException
Receives a message from the message queue by key. This method receives a message of any type except sender's copy. The message is removed from the message queue. See the list of RQueuedMessage attribute values which are set on a received message.
Parameters:
messageKey - The message key.
Returns:
The queued message, or null if the message can not be received.
Throws:
ResourceException - If an error occurs.
See Also:
RQueuedMessage.MESSAGE_KEY

receive

public RQueuedMessage receive(byte[] messageKey,
                              int waitTime,
                              java.lang.String messageAction,
                              java.lang.String messageType)
                       throws ResourceException
Receives a message from the message queue. See the list of RQueuedMessage attribute values which are set on a received message.
Parameters:
messageKey - The message key, or null if no message key is needed.
waitTime - The number of seconds to wait for the message to arrive in the queue so it can be received. If the message is not received within the specified wait time, null is returned. Special values are:
  • 0 - Do not wait for the message. If the message is not in the queue and you specified a message key, null is returned.
  • -1 - Wait until the message arrives in the queue and is received, no matter how long it takes. The system has no limit for the wait time.
messageAction - The action to take after the message is received. Valid values are:
  • OLD - Keep the message in the message queue and mark it as an old message. You can receive the message again only by using the message key or by specifying the message type NEXT, PREVIOUS, FIRST, or LAST.
  • REMOVE - Remove the message from the message queue. The message key is no longer valid, so you cannot receive the message again.
  • SAME - Keep the message in the message queue without changing its new or old designation. SAME lets you receive the message again later without using the message key.
messageType - The type of message to return. Valid values are:
  • ANY - Receives a message of any type except sender's copy. The message key is optional.
  • COMPLETION - Receives a completion message. The message key is optional.
  • COPY - Receives the sender's copy of a previously sent inquiry message. The message key is required.
  • DIAGNOSTIC - Receives a diagnostic message. The message key is optional.
  • FIRST - Receives the first new or old message in the queue. The message key is disallowed.
  • INFORMATIONAL - Receives an informational message. The message key is optional.
  • INQUIRY - Receives an inquiry message. If the action is REMOVE and a reply to the inquiry message has not been sent yet, the default reply is automatically sent when the inquiry message is received. The message key is optional.
  • LAST - Receives the last new or old message in the queue. The message key is disallowed.
  • NEXT - Receives the next new or old message after the message with the specified key. You can use the special value TOP for the message key. TOP designates the message at the top of the message queue. The message key is required.
  • PREVIOUS - Receives the new or old message before the message with the specified key. The message key is required.
  • REPLY - Receives the reply to an inquiry message. For the message key, you can use the key to the sender's copy of the inquiry or notify message. The message key is optional.
Returns:
The queued message, or null if the message can not be received.
Throws:
ResourceException - If an error occurs.
See Also:
RQueuedMessage.MESSAGE_KEY

remove

public void remove()
            throws ResourceException
Remove all messages from the message queue.
Throws:
ResourceException - If an error occurs.

remove

public void remove(byte[] messageKey)
            throws ResourceException
Removes a message from the message queue.
Parameters:
messageKey - The message key.
Throws:
ResourceException - If an error occurs.

remove

public void remove(java.lang.String messageType)
            throws ResourceException
Remove messages from the message queue.
Parameters:
messageType - The type of message to remove. Valid values are:
  • ALL - All messages in the message queue.
  • KEEP_UNANSWERED - All messages in the message queue except unanswered inquiry and unanswered senders' copy messages.
  • NEW - All new messages in the message queue. New messages are those that have not been received.
  • OLD - All old messages in the message queue. Old messages are those that have already been received.
Throws:
ResourceException - If an error occurs.

reply

public void reply(byte[] messageKey,
                  java.lang.String replyText)
           throws ResourceException
Replies to and removes a message.
Parameters:
messageKey - The message key.
replyText - The reply.
Throws:
ResourceException - If an error occurs.

reply

public void reply(byte[] messageKey,
                  java.lang.String replyText,
                  boolean remove)
           throws ResourceException
Replies to a message.
Parameters:
messageKey - The message key.
replyText - The reply.
remove - true to remove the inquiry message and the reply from the message queue after the reply is sent, false to keep the inquiry message and the reply after the reply is sent.
Throws:
ResourceException - If an error occurs.

sendInformational

public void sendInformational(java.lang.String messageID,
                              java.lang.String messageFile)
                       throws ResourceException
Sends an informational message to the message queue.
Parameters:
messageID - The message ID.
messageFile - The integrated file system path name of the message file.
Throws:
ResourceException - If an error occurs.

sendInformational

public void sendInformational(java.lang.String messageID,
                              java.lang.String messageFile,
                              byte[] substitutionData)
                       throws ResourceException
Sends an informational message to the message queue.
Parameters:
messageID - The message ID.
messageFile - The integrated file system path name of the message file.
substitutionData - The substitution data for the message, or null if none.
Throws:
ResourceException - If an error occurs.

sendInformational

public void sendInformational(java.lang.String messageText)
                       throws ResourceException
Sends an informational message to the message queue.
Parameters:
messageText - The message text.
Throws:
ResourceException - If an error occurs.

sendInquiry

public byte[] sendInquiry(java.lang.String messageID,
                          java.lang.String messageFile,
                          java.lang.String replyMessageQueue)
                   throws ResourceException
Sends an inquiry message to the message queue.
Parameters:
messageID - The message ID.
messageFile - The integrated file system path name of the message file.
replyMessageQueue - The integrated file system path name of the reply message queue.
Returns:
The message key.
Throws:
ResourceException - If an error occurs.

sendInquiry

public byte[] sendInquiry(java.lang.String messageID,
                          java.lang.String messageFile,
                          byte[] substitutionData,
                          java.lang.String replyMessageQueue)
                   throws ResourceException
Sends an inquiry message to the message queue.
Parameters:
messageID - The message ID.
messageFile - The integrated file system path name of the message file.
substitutionData - The substitution data for the message, or null if none.
replyMessageQueue - The integrated file system path name of the reply message queue.
Returns:
The message key.
Throws:
ResourceException - If an error occurs.

sendInquiry

public byte[] sendInquiry(java.lang.String messageText,
                          java.lang.String replyMessageQueue)
                   throws ResourceException
Sends an inquiry message to the message queue.
Parameters:
messageText - The message text.
replyMessageQueue - The integrated file system path name of the reply message queue.
Returns:
The message key.
Throws:
ResourceException - If an error occurs.

setPath

public void setPath(java.lang.String path)
             throws java.beans.PropertyVetoException
Sets the fully qualified integrated file system path name of the message queue. The default is CURRENT. The path cannot be changed if this object has already established a connection to the AS/400.
Parameters:
path - The fully qualified integrated file system path name of the message queue, or CURRENT to refer to the user's default message queue.
Throws:
java.beans.PropertyVetoException - If the change is vetoed.