org.exolab.jms.message
Class BytesMessageImpl

java.lang.Object
  |
  +--org.exolab.jms.message.MessageImpl
        |
        +--org.exolab.jms.message.BytesMessageImpl
All Implemented Interfaces:
javax.jms.BytesMessage, java.lang.Cloneable, java.io.Externalizable, Identifiable, javax.jms.Message, java.io.Serializable

public final class BytesMessageImpl
extends MessageImpl
implements javax.jms.BytesMessage

This class implements the BytesMessage interface

Version:
$Revision: 1.12 $ $Date: 2004/01/29 12:00:37 $
Author:
Jim Mourikis, Tim Anderson
See Also:
BytesMessage, Serialized Form

Fields inherited from class org.exolab.jms.message.MessageImpl
_acceptedTime, _bodyReadOnly, _connectionId, _processed, _propertiesReadOnly, _sequenceNumber, EMPTY
 
Fields inherited from interface javax.jms.Message
DEFAULT_DELIVERY_MODE, DEFAULT_PRIORITY, DEFAULT_TIME_TO_LIVE
 
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.
 
Methods inherited from class org.exolab.jms.message.MessageImpl
acknowledge, checkPropertyWrite, checkRead, checkWrite, clearProperties, getAcceptedTime, getAckMessageID, getBooleanProperty, getByteProperty, getClientId, getConnectionId, getConsumerId, getDoubleProperty, getFloatProperty, getId, getIntProperty, getJMSCorrelationID, getJMSCorrelationIDAsBytes, getJMSDeliveryMode, getJMSDestination, getJMSExpiration, getJMSMessageID, getJMSPriority, getJMSRedelivered, getJMSReplyTo, getJMSTimestamp, getJMSType, getLongProperty, getMessageId, getObjectProperty, getProcessed, getPropertyNames, getReadOnly, getSequenceNumber, getShortProperty, getStringProperty, getWildcard, isPersistent, isPriorityExpedited, propertyExists, setAcceptedTime, setBooleanProperty, setByteProperty, setClientId, setConnectionId, setConsumerId, setDoubleProperty, setFloatProperty, setIntProperty, setJMSCorrelationID, setJMSCorrelationIDAsBytes, setJMSDeliveryMode, setJMSDestination, setJMSExpiration, setJMSMessageID, setJMSPriority, setJMSRedelivered, setJMSReplyTo, setJMSTimestamp, setJMSType, setJMSXRcvTimestamp, setLongProperty, setObjectProperty, setProcessed, setSequenceNumber, setSession, setShortProperty, setStringProperty, setWildcard
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface javax.jms.Message
acknowledge, clearProperties, getBooleanProperty, getByteProperty, getDoubleProperty, getFloatProperty, getIntProperty, getJMSCorrelationID, getJMSCorrelationIDAsBytes, getJMSDeliveryMode, getJMSDestination, getJMSExpiration, getJMSMessageID, getJMSPriority, getJMSRedelivered, getJMSReplyTo, getJMSTimestamp, getJMSType, getLongProperty, getObjectProperty, getPropertyNames, getShortProperty, getStringProperty, propertyExists, setBooleanProperty, setByteProperty, setDoubleProperty, setFloatProperty, setIntProperty, setJMSCorrelationID, setJMSCorrelationIDAsBytes, setJMSDeliveryMode, setJMSDestination, setJMSExpiration, setJMSMessageID, setJMSPriority, setJMSRedelivered, setJMSReplyTo, setJMSTimestamp, setJMSType, setLongProperty, setObjectProperty, setShortProperty, setStringProperty
 

Constructor Detail

BytesMessageImpl

public BytesMessageImpl()
                 throws javax.jms.JMSException
Construct a new BytesMessage. When first created, the message is in write-only mode.
Throws:
javax.jms.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
Overrides:
clone in class MessageImpl
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
Overrides:
writeExternal in class MessageImpl
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
Overrides:
readExternal in class MessageImpl
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
Read a boolean from the bytes message stream
Specified by:
readBoolean in interface javax.jms.BytesMessage
Returns:
the boolean value read
Throws:
javax.jms.JMSException - if JMS fails to read message due to some internal JMS error
javax.jms.MessageEOFException - if end of bytes stream
javax.jms.MessageNotReadableException - if message is in write-only mode

readByte

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

readUnsignedByte

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

readShort

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

readUnsignedShort

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

readChar

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

readInt

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

readLong

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

readFloat

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

readDouble

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

readUTF

public final java.lang.String readUTF()
                               throws javax.jms.JMSException
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.

Specified by:
readUTF in interface javax.jms.BytesMessage
Returns:
a Unicode string from the bytes message stream
Throws:
javax.jms.JMSException - if JMS fails to read message due to some internal JMS error
javax.jms.MessageEOFException - if end of message stream
javax.jms.MessageFormatException - if string has an invalid format
javax.jms.MessageNotReadableException - if message is in write-only mode

readBytes

public final int readBytes(byte[] value)
                    throws javax.jms.JMSException
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.

Specified by:
readBytes in interface javax.jms.BytesMessage
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:
javax.jms.JMSException - if JMS fails to read message due to some internal JMS error
javax.jms.MessageNotReadableException - if message is in write-only mode

readBytes

public final int readBytes(byte[] value,
                           int length)
                    throws javax.jms.JMSException
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.

Specified by:
readBytes in interface javax.jms.BytesMessage
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
javax.jms.JMSException - if JMS fails to read message due to some internal JMS error
javax.jms.MessageNotReadableException - if message is in write-only mode

writeBoolean

public final void writeBoolean(boolean value)
                        throws javax.jms.JMSException
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.
Specified by:
writeBoolean in interface javax.jms.BytesMessage
Parameters:
value - the boolean value to be written
Throws:
javax.jms.JMSException - if JMS fails to write message due to some internal JMS error
javax.jms.MessageNotWriteableException - if message is in read-only mode

writeByte

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

writeShort

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

writeChar

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

writeInt

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

writeLong

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

writeFloat

public final void writeFloat(float value)
                      throws javax.jms.JMSException
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.
Specified by:
writeFloat in interface javax.jms.BytesMessage
Parameters:
value - the float value to be written.
Throws:
javax.jms.JMSException - if JMS fails to write message due to some internal JMS error
javax.jms.MessageNotWriteableException - if message is in read-only mode

writeDouble

public final void writeDouble(double value)
                       throws javax.jms.JMSException
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.
Specified by:
writeDouble in interface javax.jms.BytesMessage
Parameters:
value - the double value to be written.
Throws:
javax.jms.JMSException - if JMS fails to write message due to some internal JMS error
javax.jms.MessageNotWriteableException - if message is in read-only mode

writeUTF

public final void writeUTF(java.lang.String value)
                    throws javax.jms.JMSException
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.

Specified by:
writeUTF in interface javax.jms.BytesMessage
Parameters:
value - the String value to be written
Throws:
javax.jms.MessageNotWriteableException - if message is in read-only mode
javax.jms.JMSException - if JMS fails to write message due to some internal JMS error

writeBytes

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

writeBytes

public final void writeBytes(byte[] value,
                             int offset,
                             int length)
                      throws javax.jms.JMSException
Write a portion of a byte array to the bytes message stream
Specified by:
writeBytes in interface javax.jms.BytesMessage
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:
javax.jms.JMSException - if JMS fails to write message due to some internal JMS error
javax.jms.MessageNotWriteableException - if message is in read-only mode

writeObject

public final void writeObject(java.lang.Object value)
                       throws javax.jms.JMSException
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.

Specified by:
writeObject in interface javax.jms.BytesMessage
Parameters:
value - the Java object to be written. Must not be null.
Throws:
javax.jms.JMSException - if JMS fails to write message due to some internal JMS error
javax.jms.MessageFormatException - if object is invalid type
javax.jms.MessageNotWriteableException - if message in read-only mode
java.lang.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
Specified by:
reset in interface javax.jms.BytesMessage
Throws:
javax.jms.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.

Specified by:
clearBody in interface javax.jms.Message
Overrides:
clearBody in class MessageImpl
Throws:
javax.jms.JMSException - if JMS fails to reset the message due to some internal JMS error

setReadOnly

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


Copyright © 1999-2004 The OpenJMS Group. All Rights Reserved.