jrun.jms.core.message
Class BytesMessageImpl

jrun.jms.core.message.BytesMessageImpl

public final class BytesMessageImpl

This class implements the BytesMessage interface

Version:
$Revision: 1.8 $ $Date: 2001/08/06 02:53:21 $
Author:
Jim Mourikis, Tim Anderson
See Also:
BytesMessage

Constructor Summary
BytesMessageImpl()
          Construct a new BytesMessage.
 
Method Summary
 void clearBody()
          Overide the super class method to reset the streams, and put the message body in write only mode.
 java.lang.Object clone()
          Clone an instance of this object
 boolean readBoolean()
          Read a boolean from the bytes message stream
 byte readByte()
          Read a signed 8-bit value from the bytes message stream
 int readBytes(byte[] value)
          Read a byte array from the bytes message stream
 int readBytes(byte[] value, int length)
          Read a portion of the bytes message stream.
 char readChar()
          Read a Unicode character value from the bytes message stream
 double readDouble()
          Read a double from the bytes message stream
 void readExternal(java.io.ObjectInput in)
          Serialize in this message's data
 float readFloat()
          Read a float from the bytes message stream
 int readInt()
          Read a signed 32-bit integer from the bytes message stream
 long readLong()
          Read a signed 64-bit integer from the bytes message stream
 short readShort()
          Read a signed 16-bit number from the bytes message stream
 int readUnsignedByte()
          Read an unsigned 8-bit number from the bytes message stream
 int readUnsignedShort()
          Read an unsigned 16-bit number from the bytes message stream
 java.lang.String readUTF()
          Read in a string that has been encoded using a modified UTF-8 format from the bytes message stream
 void reset()
          Put the message body in read-only mode, and reposition the stream of bytes to the beginning
 void setReadOnly(boolean readOnly)
          Set the read-only mode of the message.
 void writeBoolean(boolean value)
          Write a boolean to the bytes message stream as a 1-byte value.
 void writeByte(byte value)
          Write out a byte to the bytes message stream as a 1-byte value
 void writeBytes(byte[] value)
          Write a byte array to the bytes message stream
 void writeBytes(byte[] value, int offset, int length)
          Write a portion of a byte array to the bytes message stream
 void writeChar(char value)
          Write a char to the bytes message stream as a 2-byte value, high byte first.
 void writeDouble(double value)
          Convert the double argument to a long using the doubleToLongBits method in class Double, and then writes that long value to the bytes message stream as an 8-byte quantity, high byte first.
 void writeExternal(java.io.ObjectOutput out)
          Serialize out this message's data
 void writeFloat(float value)
          Convert the float argument to an int using the floatToIntBits method in class Float, and then writes that int value to the bytes message stream as a 4-byte quantity, high byte first.
 void writeInt(int value)
          Write an int to the bytes message stream as four bytes, high byte first.
 void writeLong(long value)
          Write a long to the bytes message stream as eight bytes, high byte first
 void writeObject(java.lang.Object value)
          Write a Java object to the bytes message stream.
 void writeShort(short value)
          Write a short to the bytes message stream as two bytes, high byte first
 void writeUTF(java.lang.String value)
          Write a string to the bytes message stream using UTF-8 encoding in a machine-independent manner.
 

Constructor Detail

BytesMessageImpl

public BytesMessageImpl()
                 throws javax.jms.JMSException
Construct a new BytesMessage. When first created, the message is in write-only mode.
Throws:
JMSException - if the message type can't be set
Method Detail

clone

public final java.lang.Object clone()
                             throws java.lang.CloneNotSupportedException
Clone an instance of this object
Returns:
a copy of this object
Throws:
java.lang.CloneNotSupportedException - if object or attributes aren't cloneable

writeExternal

public final void writeExternal(java.io.ObjectOutput out)
                         throws java.io.IOException
Serialize out this message's data
Parameters:
out - the stream to serialize out to
Throws:
java.io.IOException - if any I/O exceptions occurr

readExternal

public final void readExternal(java.io.ObjectInput in)
                        throws java.lang.ClassNotFoundException,
                               java.io.IOException
Serialize in this message's data
Parameters:
in - the stream to serialize in from
Throws:
java.lang.ClassNotFoundException - if the class for an object being restored cannot be found.
java.io.IOException - if any I/O exceptions occur

readBoolean

public final boolean readBoolean()
                          throws javax.jms.JMSException,
                                 javax.jms.MessageEOFException,
                                 javax.jms.MessageNotReadableException
Read a boolean from the bytes message stream
Returns:
the boolean value read
Throws:
JMSException - if JMS fails to read message due to some internal JMS error
MessageEOFException - if end of bytes stream
MessageNotReadableException - if message is in write-only mode

readByte

public final byte readByte()
                    throws javax.jms.JMSException,
                           javax.jms.MessageEOFException,
                           javax.jms.MessageNotReadableException
Read a signed 8-bit value from the bytes message stream
Returns:
the next byte from the bytes message stream as a signed 8-bit byte
Throws:
JMSException - if JMS fails to read message due to some internal JMS error
MessageEOFException - if end of message stream
MessageNotReadableException - if message is in write-only mode

readUnsignedByte

public final int readUnsignedByte()
                           throws javax.jms.JMSException,
                                  javax.jms.MessageEOFException,
                                  javax.jms.MessageNotReadableException
Read an unsigned 8-bit number from the bytes message stream
Returns:
the next byte from the bytes message stream, interpreted as an unsigned 8-bit number
Throws:
JMSException - if JMS fails to read message due to some internal JMS error
MessageNotReadableException - if message is in write-only mode
MessageEOFException - if end of message stream

readShort

public final short readShort()
                      throws javax.jms.JMSException,
                             javax.jms.MessageEOFException,
                             javax.jms.MessageNotReadableException
Read a signed 16-bit number from the bytes message stream
Returns:
the next two bytes from the bytes message stream, interpreted as a signed 16-bit number
Throws:
JMSException - if JMS fails to read message due to some internal JMS error
MessageEOFException - if end of message stream
MessageNotReadableException - if message is in write-only mode

readUnsignedShort

public final int readUnsignedShort()
                            throws javax.jms.JMSException,
                                   javax.jms.MessageEOFException,
                                   javax.jms.MessageNotReadableException
Read an unsigned 16-bit number from the bytes message stream
Returns:
the next two bytes from the bytes message stream, interpreted as an unsigned 16-bit integer
Throws:
JMSException - if JMS fails to read message due to some internal JMS error
MessageEOFException - if end of message stream
MessageNotReadableException - if message is in write-only mode

readChar

public final char readChar()
                    throws javax.jms.JMSException,
                           javax.jms.MessageEOFException,
                           javax.jms.MessageNotReadableException
Read a Unicode character value from the bytes message stream
Returns:
the next two bytes from the bytes message stream as a Unicode character
Throws:
JMSException - if JMS fails to read message due to some internal JMS error
MessageEOFException - if end of message stream
MessageNotReadableException - if message is in write-only mode

readInt

public final int readInt()
                  throws javax.jms.JMSException,
                         javax.jms.MessageEOFException,
                         javax.jms.MessageNotReadableException
Read a signed 32-bit integer from the bytes message stream
Returns:
the next four bytes from the bytes message stream, interpreted as an int
Throws:
JMSException - if JMS fails to read message due to some internal JMS error
MessageEOFException - if end of message stream
MessageNotReadableException - if message is in write-only mode

readLong

public final long readLong()
                    throws javax.jms.JMSException,
                           javax.jms.MessageEOFException,
                           javax.jms.MessageNotReadableException
Read a signed 64-bit integer from the bytes message stream
Returns:
the next eight bytes from the bytes message stream, interpreted as a long.
Throws:
JMSException - if JMS fails to read message due to some internal JMS error
MessageEOFException - if end of message stream
MessageNotReadableException - if message is in write-only mode

readFloat

public final float readFloat()
                      throws javax.jms.JMSException,
                             javax.jms.MessageEOFException,
                             javax.jms.MessageNotReadableException
Read a float from the bytes message stream
Returns:
the next four bytes from the bytes message stream, interpreted as a float
Throws:
JMSException - if JMS fails to read message due to some internal JMS error
MessageEOFException - if end of message stream
MessageNotReadableException - if message is in write-only mode

readDouble

public final double readDouble()
                        throws javax.jms.JMSException,
                               javax.jms.MessageEOFException,
                               javax.jms.MessageNotReadableException
Read a double from the bytes message stream
Returns:
the next eight bytes from the bytes message stream, interpreted as a double
Throws:
JMSException - if JMS fails to read message due to some internal JMS error
MessageEOFException - if end of message stream
MessageNotReadableException - if message is in write-only mode

readUTF

public final java.lang.String readUTF()
                               throws javax.jms.JMSException,
                                      javax.jms.MessageEOFException,
                                      javax.jms.MessageNotReadableException
Read in a string that has been encoded using a modified UTF-8 format from the bytes message stream

For more information on the UTF-8 format, see "File System Safe UCS Transformation Format (FSS_UFT)", X/Open Preliminary Specification, X/Open Company Ltd., Document Number: P316. This information also appears in ISO/IEC 10646, Annex P.

Returns:
a Unicode string from the bytes message stream
Throws:
JMSException - if JMS fails to read message due to some internal JMS error
MessageEOFException - if end of message stream
MessageNotReadableException - if message is in write-only mode

readBytes

public final int readBytes(byte[] value)
                    throws javax.jms.JMSException,
                           javax.jms.MessageNotReadableException
Read a byte array from the bytes message stream

If the length of array value is less than the bytes remaining to be read from the stream, the array should be filled. A subsequent call reads the next increment, etc.

If the bytes remaining in the stream is less than the length of array value, the bytes should be read into the array. The return value of the total number of bytes read will be less than the length of the array, indicating that there are no more bytes left to be read from the stream. The next read of the stream returns -1.

Parameters:
value - the buffer into which the data is read
Returns:
the total number of bytes read into the buffer, or -1 if there is no more data because the end of the stream has been reached
Throws:
JMSException - if JMS fails to read message due to some internal JMS error
MessageNotReadableException - if message is in write-only mode

readBytes

public final int readBytes(byte[] value,
                           int length)
                    throws javax.jms.JMSException,
                           javax.jms.MessageNotReadableException
Read a portion of the bytes message stream.

If the length of array value is less than the bytes remaining to be read from the stream, the array should be filled. A subsequent call reads the next increment, etc.

If the bytes remaining in the stream is less than the length of array value, the bytes should be read into the array. The return value of the total number of bytes read will be less than the length of the array, indicating that there are no more bytes left to be read from the stream. The next read of the stream returns -1.

If length is negative, or length is greater than the length of the array value, then an IndexOutOfBoundsException is thrown. No bytes will be read from the stream for this exception case.

Parameters:
value - the buffer into which the data is read.
length - the number of bytes to read. Must be less than or equal to value.length.
Returns:
the total number of bytes read into the buffer, or -1 if there is no more data because the end of the stream has been reached.
Throws:
java.lang.IndexOutOfBoundsException - if length is invalid
JMSException - if JMS fails to read message due to some internal JMS error
MessageNotReadableException - if message is in write-only mode

writeBoolean

public final void writeBoolean(boolean value)
                        throws javax.jms.JMSException,
                               javax.jms.MessageNotWriteableException
Write a boolean to the bytes message stream as a 1-byte value. The value true is written out as the value (byte)1; the value false is written out as the value (byte)0.
Parameters:
value - the boolean value to be written
Throws:
JMSException - if JMS fails to write message due to some internal JMS error
MessageNotWriteableException - if message is in read-only mode

writeByte

public final void writeByte(byte value)
                     throws javax.jms.JMSException,
                            javax.jms.MessageNotWriteableException
Write out a byte to the bytes message stream as a 1-byte value
Parameters:
value - the byte value to be written
Throws:
JMSException - if JMS fails to write message due to some internal JMS error
MessageNotWriteableException - if message is in read-only mode

writeShort

public final void writeShort(short value)
                      throws javax.jms.JMSException,
                             javax.jms.MessageNotWriteableException
Write a short to the bytes message stream as two bytes, high byte first
Parameters:
value - the short to be written
Throws:
JMSException - if JMS fails to write message due to some internal JMS error
MessageNotWriteableException - if message is in read-only mode

writeChar

public final void writeChar(char value)
                     throws javax.jms.JMSException,
                            javax.jms.MessageNotWriteableException
Write a char to the bytes message stream as a 2-byte value, high byte first.
Parameters:
value - the char value to be written
Throws:
MessageNotWriteableException - if message is in read-only mode
JMSException - if JMS fails to write message due to some internal JMS error

writeInt

public final void writeInt(int value)
                    throws javax.jms.JMSException,
                           javax.jms.MessageNotWriteableException
Write an int to the bytes message stream as four bytes, high byte first.
Parameters:
value - the int to be written
Throws:
JMSException - if JMS fails to write message due to some internal JMS error
MessageNotWriteableException - if message is in read-only mode

writeLong

public final void writeLong(long value)
                     throws javax.jms.JMSException,
                            javax.jms.MessageNotWriteableException
Write a long to the bytes message stream as eight bytes, high byte first
Parameters:
value - the long to be written
Throws:
JMSException - if JMS fails to write message due to some internal JMS error
MessageNotWriteableException - if message is in read-only mode

writeFloat

public final void writeFloat(float value)
                      throws javax.jms.JMSException,
                             javax.jms.MessageNotWriteableException
Convert the float argument to an int using the floatToIntBits method in class Float, and then writes that int value to the bytes message stream as a 4-byte quantity, high byte first.
Parameters:
value - the float value to be written.
Throws:
JMSException - if JMS fails to write message due to some internal JMS error
MessageNotWriteableException - if message is in read-only mode

writeDouble

public final void writeDouble(double value)
                       throws javax.jms.JMSException,
                              javax.jms.MessageNotWriteableException
Convert the double argument to a long using the doubleToLongBits method in class Double, and then writes that long value to the bytes message stream as an 8-byte quantity, high byte first.
Parameters:
value - the double value to be written.
Throws:
JMSException - if JMS fails to write message due to some internal JMS error
MessageNotWriteableException - if message is in read-only mode

writeUTF

public final void writeUTF(java.lang.String value)
                    throws javax.jms.JMSException,
                           javax.jms.MessageNotWriteableException
Write a string to the bytes message stream using UTF-8 encoding in a machine-independent manner.

For more information on the UTF-8 format, see "File System Safe UCS Transformation Format (FSS_UFT)", X/Open Preliminary Specification, X/Open Company Ltd., Document Number: P316. This information also appears in ISO/IEC 10646, Annex P.

Parameters:
value - the String value to be written
Throws:
MessageNotWriteableException - if message is in read-only mode
JMSException - if JMS fails to write message due to some internal JMS error

writeBytes

public final void writeBytes(byte[] value)
                      throws javax.jms.JMSException,
                             javax.jms.MessageNotWriteableException
Write a byte array to the bytes message stream
Parameters:
value - the byte array to be written.
Throws:
JMSException - if JMS fails to write message due to some internal JMS error
MessageNotWriteableException - if message is in read-only mode

writeBytes

public final void writeBytes(byte[] value,
                             int offset,
                             int length)
                      throws javax.jms.JMSException,
                             javax.jms.MessageNotWriteableException
Write a portion of a byte array to the bytes message stream
Parameters:
value - the byte array value to be written.
offset - the initial offset within the byte array.
length - the number of bytes to use.
Throws:
JMSException - if JMS fails to write message due to some internal JMS error
MessageNotWriteableException - if message is in read-only mode

writeObject

public final void writeObject(java.lang.Object value)
                       throws javax.jms.JMSException,
                              javax.jms.MessageFormatException,
                              javax.jms.MessageNotWriteableException
Write a Java object to the bytes message stream.

Note that this method only works for the objectified primitive object types (Integer, Double, Long ...), String's and byte arrays.

Parameters:
value - the Java object to be written. Must not be null.
Throws:
JMSException - if JMS fails to write message due to some internal JMS error
MessageFormatException - if object is invalid type
MessageNotWriteableException - if message in read-only mode
NullPointerException - if parameter value is null

reset

public final void reset()
                 throws javax.jms.JMSException
Put the message body in read-only mode, and reposition the stream of bytes to the beginning
Throws:
JMSException - if JMS fails to reset the message due to some internal JMS error

clearBody

public final void clearBody()
                     throws javax.jms.JMSException
Overide the super class method to reset the streams, and put the message body in write only mode.

If clearBody is called on a message in read-only mode, the message body is cleared and the message is in write-only mode. bytes to the beginning.

If clearBody is called on a message already in write-only mode, the spec does not define the outcome, so do nothing. Client must then call reset, followed by clearBody to reset the stream at the beginning for a new write.

Throws:
JMSException - if JMS fails to reset the message due to some internal JMS error
MessageFormatException - if message has an invalid format

setReadOnly

public final void setReadOnly(boolean readOnly)
                       throws javax.jms.JMSException
Set the read-only mode of the message.
Parameters:
readOnly - if true, make the message body and properties read-only, and invoke reset()
Throws:
JMSException - if the read-only mode cannot be changed


Copyright � 2002 Macromedia Corporation. All Rights Reserved.