Class WmMessageImpl
- java.lang.Object
-
- com.webmethods.jms.impl.WmMessageImpl
-
- All Implemented Interfaces:
WmMessage
,java.io.Externalizable
,java.io.Serializable
,java.lang.Cloneable
,javax.jms.Message
- Direct Known Subclasses:
WmBytesMessageImpl
,WmClusterMessageImpl
,WmFileMessageImpl
,WmMapMessageImpl
,WmObjectMessageImpl
,WmStreamMessageImpl
,WmTextMessageImpl
public class WmMessageImpl extends java.lang.Object implements WmMessage, java.lang.Cloneable, java.io.Externalizable
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected short[]
_accessLabel
protected boolean
_acknowledged
protected boolean
_compression
protected int
_compressionLevel
protected CompressionManager
_compressionManager
protected TransportMessage
_container
protected java.lang.Integer
_deliveryMode
protected javax.jms.Destination
_destination
protected java.lang.Long
_expiration
protected java.lang.String
_messageId
protected boolean
_msgReadOnly
protected java.lang.Integer
_priority
protected boolean
_readOnlyBody
protected boolean
_readOnlyProperties
protected int
_receiveCount
protected boolean
_redelivered
protected javax.jms.Destination
_replyTo
protected long
_sequenceNumber
protected int[]
_subscriptionIDs
protected java.lang.Long
_timestamp
-
Fields inherited from interface javax.jms.Message
DEFAULT_DELIVERY_MODE, DEFAULT_PRIORITY, DEFAULT_TIME_TO_LIVE
-
Fields inherited from interface com.webmethods.jms.WmMessage
WM_JMS_CLUSTER_NODES, WM_JMS_CLUSTER_NODES_DELIMITER
-
-
Constructor Summary
Constructors Modifier Constructor Description WmMessageImpl()
protected
WmMessageImpl(int transportMsgType)
protected
WmMessageImpl(WmMessageImpl sourceMsg)
protected
WmMessageImpl(TransportMessage container)
protected
WmMessageImpl(javax.jms.Message sourceMsg)
protected
WmMessageImpl(javax.jms.Message sourceMsg, int transportMsgType)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
acknowledge()
Acknowledges all consumed messages of the session of this consumed message.void
checkMessageBodyReadStatus()
void
checkMessageBodyWriteStatus()
void
checkMessagePropertiesReadStatus()
void
checkMessagePropertiesWriteStatus()
void
checkMessageReadStatus()
void
checkMessageWriteStatus()
protected static boolean
checkObject(java.lang.Object value1, java.lang.Object value2)
protected static boolean
checkString(java.lang.String str1, java.lang.String str2)
void
clearBody()
Clears out the message body.void
clearProperties()
Clears a message's properties.static WmMessageImpl
createMessage(byte[] transportData, int offset, int length, int deliveryCount, long sequenceNumber, int[] subscriptionIDs)
boolean
equals(java.lang.Object obj)
Checks if two Messages are equalvoid
explicitAcknowledge()
Explicitly acknowledges this and only this consumed message.short[]
getAccessLabel()
boolean
getBooleanProperty(java.lang.String name)
Returns the value of theboolean
property with the specified name.byte
getByteProperty(java.lang.String name)
Returns the value of thebyte
property with the specified name.boolean
getCompression()
Get whether compression is enabled or disabled for this message.int
getCompressionLevel()
Get the compression level for this message.int
getCompressionRatio()
Get the compression ratio of a delivered message that has been compressed.WmMessageConsumerImpl
getConsumer()
Internal method to get the consumer of this message.java.lang.String
getDestinationId()
double
getDoubleProperty(java.lang.String name)
Returns the value of thedouble
property with the specified name.float
getFloatProperty(java.lang.String name)
Returns the value of thefloat
property with the specified name.int
getIntProperty(java.lang.String name)
Returns the value of theint
property with the specified name.java.lang.String
getJMSCorrelationID()
Gets the correlation ID for the message.byte[]
getJMSCorrelationIDAsBytes()
Gets the correlation ID as an array of bytes for the message.int
getJMSDeliveryMode()
Gets theDeliveryMode
value specified for this message.javax.jms.Destination
getJMSDestination()
Gets theDestination
object for this message.long
getJMSExpiration()
Gets the message's expiration value.java.lang.String
getJMSMessageID()
Gets the message ID.java.lang.String
getJMSMessageIDHint()
int
getJMSPriority()
Gets the message priority level.boolean
getJMSRedelivered()
Gets an indication of whether this message is being redelivered.javax.jms.Destination
getJMSReplyTo()
Gets theDestination
object to which a reply to this message should be sent.long
getJMSTimestamp()
Gets the message timestamp.java.lang.String
getJMSType()
Gets the message type identifier supplied by the client when the message was sent.long
getLongProperty(java.lang.String name)
Returns the value of thelong
property with the specified name.java.lang.Object
getObjectProperty(java.lang.String name)
Returns the value of the Java object property with the specified name.java.lang.String
getPreAcknowledgement()
java.util.Enumeration<java.lang.String>
getPropertyNames()
Returns anEnumeration
of all the property names.protected int
getReceiveCount()
Internal method to get the message receive count.long
getSequenceNumber()
Internal method to get the sequence number of this message.short
getShortProperty(java.lang.String name)
Returns the value of theshort
property with the specified name.int
getSize()
Get the message size in bytes.java.lang.String
getStringProperty(java.lang.String name)
Returns the value of theString
property with the specified name.int[]
getSubscriptionIDs()
java.lang.String
getTopicName(java.lang.String topicName)
long
getTransactionID()
Internal method to get the message's transaction ID.byte[]
getTransportData()
int
getTransportDataLength()
java.lang.String
getTransportTypeName()
java.lang.String
getUUID()
int
hashCode()
Calculates hash code for this object.protected static int
hashObject(java.lang.Object obj)
protected void
internalToString(java.lang.StringBuffer buf)
boolean
isAcknowledged()
Internal method to get the message acknowledge status.boolean
isPreAcked()
void
negativeAcknowledge()
Negatively acknowledges this consumed message causing it to be redelivered.protected void
prepareMsgForTransport()
boolean
propertyExists(java.lang.String name)
Indicates whether a property value exists.void
readExternal(java.io.ObjectInput in)
void
setAccessLabel(short[] label)
Set access label to message envelopevoid
setAcknowledged(boolean acknowledged)
Internal method to set the message acknowledge status.void
setBooleanProperty(java.lang.String name, boolean value)
Sets aboolean
property value with the specified name into the message.void
setByteProperty(java.lang.String name, byte value)
Sets abyte
property value with the specified name into the message.void
setCompression(boolean compress)
Enable or disable compression for this message.void
setCompressionLevel(int level)
Set the compression level for this message.protected void
setConsumer(WmMessageConsumerImpl consumer)
Internal method to set the consumer of this message.void
setDeliveryCount(int deliveryCount)
protected void
setDeliveryMode(int deliveryMode)
Internal method to set the real delivery mode for the message.protected void
setDestination(WmDestinationImpl destination)
Method setDestination Internal method to set the real destination for the message.void
setDestinationId(java.lang.String destId)
void
setDoubleProperty(java.lang.String name, double value)
Sets adouble
property value with the specified name into the message.protected void
setExpiration(long expiration)
Internal method to set the real expiration for the message.void
setFloatProperty(java.lang.String name, float value)
Sets afloat
property value with the specified name into the message.void
setIntProperty(java.lang.String name, int value)
Sets anint
property value with the specified name into the message.void
setJMSCorrelationID(java.lang.String correlationID)
Sets the correlation ID for the message.void
setJMSCorrelationIDAsBytes(byte[] correlationID)
Sets the correlation ID as an array of bytes for the message.void
setJMSDeliveryMode(int deliveryMode)
Sets theDeliveryMode
value for this message.void
setJMSDestination(javax.jms.Destination destination)
Sets theDestination
object for this message.void
setJMSExpiration(long expiration)
Sets the message's expiration value.void
setJMSMessageID(java.lang.String id)
Sets the message ID.void
setJMSMessageIDHint(java.lang.String msg)
void
setJMSPriority(int priority)
Sets the priority level for this message.void
setJMSRedelivered(boolean redelivered)
Specifies whether this message is being redelivered.void
setJMSReplyTo(javax.jms.Destination replyTo)
Sets theDestination
object to which a reply to this message should be sent.void
setJMSTimestamp(long timestamp)
Sets the message timestamp.void
setJMSType(java.lang.String type)
Sets the message type.void
setLongProperty(java.lang.String name, long value)
Sets along
property value with the specified name into the message.protected void
setMessageID(java.lang.String id)
Internal method to set the real id for the message.void
setObjectProperty(java.lang.String name, java.lang.Object value)
Sets a Java object property value with the specified name into the message.void
setPreAcknowledgement(java.lang.String preack)
protected void
setPriority(int priority)
Internal method to set the real priority for the message.void
setReadOnly(boolean readOnly)
Set the Message Body and Propertiesvoid
setReadOnlyBody(boolean readOnlyBody)
Set the Message Body as readonlyvoid
setReadOnlyProperties(boolean readOnly)
protected void
setReceiveCount(int receiveCount)
Internal method to set the message receive count.void
setSequenceNumber(long sequenceNumber)
void
setShortProperty(java.lang.String name, short value)
Sets ashort
property value with the specified name into the message.void
setStringProperty(java.lang.String name, java.lang.String value)
Sets aString
property value with the specified name into the message.void
setSubscriptionIDs(int[] subscriptionIDs)
protected void
setTimestamp(long timestamp)
Internal method to set the real timestamp for the message.void
setTopicName(java.lang.String topicName)
protected void
setTransactionID(long transactionID)
Internal method to set the message's transaction ID.void
setTransportTypeName(java.lang.String name)
void
setUUID(java.lang.String uuid)
java.lang.String
toString()
void
writeExternal(java.io.ObjectOutput out)
static void
xdump(byte[] buf)
-
-
-
Field Detail
-
_container
protected TransportMessage _container
-
_msgReadOnly
protected boolean _msgReadOnly
-
_readOnlyBody
protected boolean _readOnlyBody
-
_readOnlyProperties
protected boolean _readOnlyProperties
-
_redelivered
protected boolean _redelivered
-
_sequenceNumber
protected long _sequenceNumber
-
_subscriptionIDs
protected int[] _subscriptionIDs
-
_acknowledged
protected boolean _acknowledged
-
_receiveCount
protected int _receiveCount
-
_compression
protected boolean _compression
-
_compressionLevel
protected int _compressionLevel
-
_compressionManager
protected CompressionManager _compressionManager
-
_destination
protected javax.jms.Destination _destination
-
_replyTo
protected javax.jms.Destination _replyTo
-
_messageId
protected java.lang.String _messageId
-
_timestamp
protected java.lang.Long _timestamp
-
_deliveryMode
protected java.lang.Integer _deliveryMode
-
_expiration
protected java.lang.Long _expiration
-
_priority
protected java.lang.Integer _priority
-
_accessLabel
protected short[] _accessLabel
-
-
Constructor Detail
-
WmMessageImpl
public WmMessageImpl()
-
WmMessageImpl
protected WmMessageImpl(TransportMessage container)
-
WmMessageImpl
protected WmMessageImpl(int transportMsgType)
-
WmMessageImpl
protected WmMessageImpl(javax.jms.Message sourceMsg) throws javax.jms.JMSException
- Throws:
javax.jms.JMSException
-
WmMessageImpl
protected WmMessageImpl(javax.jms.Message sourceMsg, int transportMsgType) throws javax.jms.JMSException
- Throws:
javax.jms.JMSException
-
WmMessageImpl
protected WmMessageImpl(WmMessageImpl sourceMsg)
-
-
Method Detail
-
createMessage
public static WmMessageImpl createMessage(byte[] transportData, int offset, int length, int deliveryCount, long sequenceNumber, int[] subscriptionIDs) throws javax.jms.JMSException
- Throws:
javax.jms.JMSException
-
getJMSMessageID
public java.lang.String getJMSMessageID() throws javax.jms.JMSException
Gets the message ID.The
JMSMessageID
header field contains a value that uniquely identifies each message sent by a provider.When a message is sent,
JMSMessageID
can be ignored. When thesend
orpublish
method returns, it contains a provider-assigned value.A
JMSMessageID
is aString
value that should function as a unique key for identifying messages in a historical repository. The exact scope of uniqueness is provider-defined. It should at least cover all messages for a specific installation of a provider, where an installation is some connected set of message routers.All
JMSMessageID
values must start with the prefix'ID:'
. Uniqueness of message ID values across different providers is not required.Since message IDs take some effort to create and increase a message's size, some JMS providers may be able to optimize message overhead if they are given a hint that the message ID is not used by an application. By calling the
MessageProducer.setDisableMessageID
method, a JMS client enables this potential optimization for all messages sent by that message producer. If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value.- Specified by:
getJMSMessageID
in interfacejavax.jms.Message
- Returns:
- the message ID
- Throws:
javax.jms.JMSException
- if the JMS provider fails to get the message ID due to some internal error.
-
setJMSMessageID
public void setJMSMessageID(java.lang.String id) throws javax.jms.JMSException
Sets the message ID.JMS providers set this field when a message is sent. This method can be used to change the value for a message that has been received.
- Specified by:
setJMSMessageID
in interfacejavax.jms.Message
- Parameters:
id
- the ID of the message- Throws:
javax.jms.JMSException
- if the JMS provider fails to set the message ID due to some internal error.
-
getJMSTimestamp
public long getJMSTimestamp() throws javax.jms.JMSException
Gets the message timestamp.The
JMSTimestamp
header field contains the time a message was handed off to a provider to be sent. It is not the time the message was actually transmitted, because the actual send may occur later due to transactions or other client-side queueing of messages.When a message is sent,
JMSTimestamp
is ignored. When thesend
orpublish
method returns, it contains a time value somewhere in the interval between the call and the return. The value is in the format of a normal millis time value in the Java programming language.Since timestamps take some effort to create and increase a message's size, some JMS providers may be able to optimize message overhead if they are given a hint that the timestamp is not used by an application. By calling the
MessageProducer.setDisableMessageTimestamp
method, a JMS client enables this potential optimization for all messages sent by that message producer. If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint, the timestamp must be set to its normal value.- Specified by:
getJMSTimestamp
in interfacejavax.jms.Message
- Returns:
- the message timestamp
- Throws:
javax.jms.JMSException
- if the JMS provider fails to get the timestamp due to some internal error.
-
setJMSTimestamp
public void setJMSTimestamp(long timestamp) throws javax.jms.JMSException
Sets the message timestamp.JMS providers set this field when a message is sent. This method can be used to change the value for a message that has been received.
- Specified by:
setJMSTimestamp
in interfacejavax.jms.Message
- Parameters:
timestamp
- the timestamp for this message- Throws:
javax.jms.JMSException
- if the JMS provider fails to set the timestamp due to some internal error.
-
getJMSCorrelationIDAsBytes
public byte[] getJMSCorrelationIDAsBytes() throws javax.jms.JMSException
Gets the correlation ID as an array of bytes for the message.The use of a
byte[]
value forJMSCorrelationID
is non-portable.- Specified by:
getJMSCorrelationIDAsBytes
in interfacejavax.jms.Message
- Returns:
- the correlation ID of a message as an array of bytes
- Throws:
javax.jms.JMSException
- if the JMS provider fails to get the correlation ID due to some internal error.
-
setJMSCorrelationIDAsBytes
public void setJMSCorrelationIDAsBytes(byte[] correlationID) throws javax.jms.JMSException
Sets the correlation ID as an array of bytes for the message.The array is copied before the method returns, so future modifications to the array will not alter this message header.
If a provider supports the native concept of correlation ID, a JMS client may need to assign specific
JMSCorrelationID
values to match those expected by native messaging clients. JMS providers without native correlation ID values are not required to support this method and its corresponding get method; their implementation may throw ajava.lang.UnsupportedOperationException
.The use of a
byte[]
value forJMSCorrelationID
is non-portable.- Specified by:
setJMSCorrelationIDAsBytes
in interfacejavax.jms.Message
- Parameters:
correlationID
- the correlation ID value as an array of bytes- Throws:
javax.jms.JMSException
- if the JMS provider fails to set the correlation ID due to some internal error.
-
setJMSCorrelationID
public void setJMSCorrelationID(java.lang.String correlationID) throws javax.jms.JMSException
Sets the correlation ID for the message.A client can use the
JMSCorrelationID
header field to link one message with another. A typical use is to link a response message with its request message.JMSCorrelationID
can hold one of the following:- A provider-specific message ID
- An application-specific
String
- A provider-native
byte[]
value
Since each message sent by a JMS provider is assigned a message ID value, it is convenient to link messages via message ID. All message ID values must start with the
'ID:'
prefix.In some cases, an application (made up of several clients) needs to use an application-specific value for linking messages. For instance, an application may use
JMSCorrelationID
to hold a value referencing some external information. Application-specified values must not start with the'ID:'
prefix; this is reserved for provider-generated message ID values.If a provider supports the native concept of correlation ID, a JMS client may need to assign specific
JMSCorrelationID
values to match those expected by clients that do not use the JMS API. Abyte[]
value is used for this purpose. JMS providers without native correlation ID values are not required to supportbyte[]
values. The use of abyte[]
value forJMSCorrelationID
is non-portable.- Specified by:
setJMSCorrelationID
in interfacejavax.jms.Message
- Parameters:
correlationID
- the message ID of a message being referred to- Throws:
javax.jms.JMSException
- if the JMS provider fails to set the correlation ID due to some internal error.
-
getJMSCorrelationID
public java.lang.String getJMSCorrelationID() throws javax.jms.JMSException
Gets the correlation ID for the message.This method is used to return correlation ID values that are either provider-specific message IDs or application-specific
String
values.- Specified by:
getJMSCorrelationID
in interfacejavax.jms.Message
- Returns:
- the correlation ID of a message as a
String
- Throws:
javax.jms.JMSException
- if the JMS provider fails to get the correlation ID due to some internal error.
-
getJMSReplyTo
public javax.jms.Destination getJMSReplyTo() throws javax.jms.JMSException
Gets theDestination
object to which a reply to this message should be sent.- Specified by:
getJMSReplyTo
in interfacejavax.jms.Message
- Returns:
Destination
to which to send a response to this message- Throws:
javax.jms.JMSException
- if the JMS provider fails to get theJMSReplyTo
destination due to some internal error.
-
setJMSReplyTo
public void setJMSReplyTo(javax.jms.Destination replyTo) throws javax.jms.JMSException
Sets theDestination
object to which a reply to this message should be sent.The
JMSReplyTo
header field contains the destination where a reply to the current message should be sent. If it is null, no reply is expected. The destination may be either aQueue
object or aTopic
object.Messages sent with a null
JMSReplyTo
value may be a notification of some event, or they may just be some data the sender thinks is of interest.Messages with a
JMSReplyTo
value typically expect a response. A response is optional; it is up to the client to decide. These messages are called requests. A message sent in response to a request is called a reply.In some cases a client may wish to match a request it sent earlier with a reply it has just received. The client can use the
JMSCorrelationID
header field for this purpose.- Specified by:
setJMSReplyTo
in interfacejavax.jms.Message
- Parameters:
replyTo
-Destination
to which to send a response to this message- Throws:
javax.jms.JMSException
- if the JMS provider fails to set theJMSReplyTo
destination due to some internal error.
-
getJMSDestination
public javax.jms.Destination getJMSDestination() throws javax.jms.JMSException
Gets theDestination
object for this message.The
JMSDestination
header field contains the destination to which the message is being sent.When a message is sent, this field is ignored. After completion of the
send
orpublish
method, the field holds the destination specified by the method.When a message is received, its
JMSDestination
value must be equivalent to the value assigned when it was sent.- Specified by:
getJMSDestination
in interfacejavax.jms.Message
- Returns:
- the destination of this message
- Throws:
javax.jms.JMSException
- if the JMS provider fails to get the destination due to some internal error.
-
setJMSDestination
public void setJMSDestination(javax.jms.Destination destination) throws javax.jms.JMSException
Sets theDestination
object for this message.JMS providers set this field when a message is sent. This method can be used to change the value for a message that has been received.
- Specified by:
setJMSDestination
in interfacejavax.jms.Message
- Parameters:
destination
- the destination for this message- Throws:
javax.jms.JMSException
- if the JMS provider fails to set the destination due to some internal error.
-
getJMSDeliveryMode
public int getJMSDeliveryMode() throws javax.jms.JMSException
Gets theDeliveryMode
value specified for this message.- Specified by:
getJMSDeliveryMode
in interfacejavax.jms.Message
- Returns:
- the delivery mode for this message
- Throws:
javax.jms.JMSException
- if the JMS provider fails to get the delivery mode due to some internal error.
-
setJMSDeliveryMode
public void setJMSDeliveryMode(int deliveryMode) throws javax.jms.JMSException
Sets theDeliveryMode
value for this message.JMS providers set this field when a message is sent. This method can be used to change the value for a message that has been received.
- Specified by:
setJMSDeliveryMode
in interfacejavax.jms.Message
- Parameters:
deliveryMode
- the delivery mode for this message- Throws:
javax.jms.JMSException
- if the JMS provider fails to set the delivery mode due to some internal error.
-
getJMSRedelivered
public boolean getJMSRedelivered() throws javax.jms.JMSException
Gets an indication of whether this message is being redelivered.If a client receives a message with the
JMSRedelivered
field set, it is likely, but not guaranteed, that this message was delivered earlier but that its receipt was not acknowledged at that time.- Specified by:
getJMSRedelivered
in interfacejavax.jms.Message
- Returns:
- true if this message is being redelivered
- Throws:
javax.jms.JMSException
- if the JMS provider fails to get the redelivered state due to some internal error.
-
setJMSRedelivered
public void setJMSRedelivered(boolean redelivered) throws javax.jms.JMSException
Specifies whether this message is being redelivered.This field is set at the time the message is delivered. This method can be used to change the value for a message that has been received.
- Specified by:
setJMSRedelivered
in interfacejavax.jms.Message
- Parameters:
redelivered
- an indication of whether this message is being redelivered- Throws:
javax.jms.JMSException
- if the JMS provider fails to set the redelivered state due to some internal error.
-
getJMSType
public java.lang.String getJMSType() throws javax.jms.JMSException
Gets the message type identifier supplied by the client when the message was sent.- Specified by:
getJMSType
in interfacejavax.jms.Message
- Returns:
- the message type
- Throws:
javax.jms.JMSException
- if the JMS provider fails to get the message type due to some internal error.
-
setJMSType
public void setJMSType(java.lang.String type) throws javax.jms.JMSException
Sets the message type.Some JMS providers use a message repository that contains the definitions of messages sent by applications. The
JMSType
header field may reference a message's definition in the provider's repository.The JMS API does not define a standard message definition repository, nor does it define a naming policy for the definitions it contains.
Some messaging systems require that a message type definition for each application message be created and that each message specify its type. In order to work with such JMS providers, JMS clients should assign a value to
JMSType
, whether the application makes use of it or not. This ensures that the field is properly set for those providers that require it.To ensure portability, JMS clients should use symbolic values for
JMSType
that can be configured at installation time to the values defined in the current provider's message repository. If string literals are used, they may not be valid type names for some JMS providers.- Specified by:
setJMSType
in interfacejavax.jms.Message
- Parameters:
type
- the message type- Throws:
javax.jms.JMSException
- if the JMS provider fails to set the message type due to some internal error.
-
getJMSExpiration
public long getJMSExpiration() throws javax.jms.JMSException
Gets the message's expiration value.When a message is sent, the
JMSExpiration
header field is left unassigned. After completion of thesend
orpublish
method, it holds the expiration time of the message. This is the sum of the time-to-live value specified by the client and the GMT at the time of thesend
orpublish
.If the time-to-live is specified as zero,
JMSExpiration
is set to zero to indicate that the message does not expire.When a message's expiration time is reached, a provider should discard it. The JMS API does not define any form of notification of message expiration.
Clients should not receive messages that have expired; however, the JMS API does not guarantee that this will not happen.
- Specified by:
getJMSExpiration
in interfacejavax.jms.Message
- Returns:
- the time the message expires, which is the sum of the time-to-live value specified by the client and the GMT at the time of the send
- Throws:
javax.jms.JMSException
- if the JMS provider fails to get the message expiration due to some internal error.
-
setJMSExpiration
public void setJMSExpiration(long expiration) throws javax.jms.JMSException
Sets the message's expiration value.JMS providers set this field when a message is sent. This method can be used to change the value for a message that has been received.
- Specified by:
setJMSExpiration
in interfacejavax.jms.Message
- Parameters:
expiration
- the message's expiration time- Throws:
javax.jms.JMSException
- if the JMS provider fails to set the message expiration due to some internal error.
-
getJMSPriority
public int getJMSPriority() throws javax.jms.JMSException
Gets the message priority level.The JMS API defines ten levels of priority value, with 0 as the lowest priority and 9 as the highest. In addition, clients should consider priorities 0-4 as gradations of normal priority and priorities 5-9 as gradations of expedited priority.
The JMS API does not require that a provider strictly implement priority ordering of messages; however, it should do its best to deliver expedited messages ahead of normal messages.
- Specified by:
getJMSPriority
in interfacejavax.jms.Message
- Returns:
- the default message priority
- Throws:
javax.jms.JMSException
- if the JMS provider fails to get the message priority due to some internal error.
-
setJMSPriority
public void setJMSPriority(int priority) throws javax.jms.JMSException
Sets the priority level for this message.JMS providers set this field when a message is sent. This method can be used to change the value for a message that has been received.
- Specified by:
setJMSPriority
in interfacejavax.jms.Message
- Parameters:
priority
- the priority of this message- Throws:
javax.jms.JMSException
- if the JMS provider fails to set the message priority due to some internal error.
-
clearProperties
public void clearProperties() throws javax.jms.JMSException
Clears a message's properties.The message's header fields and body are not cleared.
- Specified by:
clearProperties
in interfacejavax.jms.Message
- Throws:
javax.jms.JMSException
- if the JMS provider fails to clear the message properties due to some internal error.
-
propertyExists
public boolean propertyExists(java.lang.String name) throws javax.jms.JMSException
Indicates whether a property value exists.- Specified by:
propertyExists
in interfacejavax.jms.Message
- Parameters:
name
- the name of the property to test- Returns:
- true if the property exists
- Throws:
javax.jms.JMSException
- if the JMS provider fails to determine if the property exists due to some internal error.
-
getBooleanProperty
public boolean getBooleanProperty(java.lang.String name) throws javax.jms.JMSException
Returns the value of theboolean
property with the specified name.- Specified by:
getBooleanProperty
in interfacejavax.jms.Message
- Parameters:
name
- the name of theboolean
property- Returns:
- the
boolean
property value for the specified name - Throws:
javax.jms.JMSException
- if the JMS provider fails to get the property value due to some internal error.javax.jms.MessageFormatException
- if this type conversion is invalid.
-
getByteProperty
public byte getByteProperty(java.lang.String name) throws javax.jms.JMSException
Returns the value of thebyte
property with the specified name.- Specified by:
getByteProperty
in interfacejavax.jms.Message
- Parameters:
name
- the name of thebyte
property- Returns:
- the
byte
property value for the specified name - Throws:
javax.jms.JMSException
- if the JMS provider fails to get the property value due to some internal error.javax.jms.MessageFormatException
- if this type conversion is invalid.
-
getShortProperty
public short getShortProperty(java.lang.String name) throws javax.jms.JMSException
Returns the value of theshort
property with the specified name.- Specified by:
getShortProperty
in interfacejavax.jms.Message
- Parameters:
name
- the name of theshort
property- Returns:
- the
short
property value for the specified name - Throws:
javax.jms.JMSException
- if the JMS provider fails to get the property value due to some internal error.javax.jms.MessageFormatException
- if this type conversion is invalid.
-
getIntProperty
public int getIntProperty(java.lang.String name) throws javax.jms.JMSException
Returns the value of theint
property with the specified name.- Specified by:
getIntProperty
in interfacejavax.jms.Message
- Parameters:
name
- the name of theint
property- Returns:
- the
int
property value for the specified name - Throws:
javax.jms.JMSException
- if the JMS provider fails to get the property value due to some internal error.javax.jms.MessageFormatException
- if this type conversion is invalid.
-
getLongProperty
public long getLongProperty(java.lang.String name) throws javax.jms.JMSException
Returns the value of thelong
property with the specified name.- Specified by:
getLongProperty
in interfacejavax.jms.Message
- Parameters:
name
- the name of thelong
property- Returns:
- the
long
property value for the specified name - Throws:
javax.jms.JMSException
- if the JMS provider fails to get the property value due to some internal error.javax.jms.MessageFormatException
- if this type conversion is invalid.
-
getFloatProperty
public float getFloatProperty(java.lang.String name) throws javax.jms.JMSException
Returns the value of thefloat
property with the specified name.- Specified by:
getFloatProperty
in interfacejavax.jms.Message
- Parameters:
name
- the name of thefloat
property- Returns:
- the
float
property value for the specified name - Throws:
javax.jms.JMSException
- if the JMS provider fails to get the property value due to some internal error.javax.jms.MessageFormatException
- if this type conversion is invalid.
-
getDoubleProperty
public double getDoubleProperty(java.lang.String name) throws javax.jms.JMSException
Returns the value of thedouble
property with the specified name.- Specified by:
getDoubleProperty
in interfacejavax.jms.Message
- Parameters:
name
- the name of thedouble
property- Returns:
- the
double
property value for the specified name - Throws:
javax.jms.JMSException
- if the JMS provider fails to get the property value due to some internal error.javax.jms.MessageFormatException
- if this type conversion is invalid.
-
getStringProperty
public java.lang.String getStringProperty(java.lang.String name) throws javax.jms.JMSException
Returns the value of theString
property with the specified name.- Specified by:
getStringProperty
in interfacejavax.jms.Message
- Parameters:
name
- the name of theString
property- Returns:
- the
String
property value for the specified name; if there is no property by this name, a null value is returned - Throws:
javax.jms.JMSException
- if the JMS provider fails to get the property value due to some internal error.javax.jms.MessageFormatException
- if this type conversion is invalid.
-
getObjectProperty
public java.lang.Object getObjectProperty(java.lang.String name) throws javax.jms.JMSException
Returns the value of the Java object property with the specified name.This method can be used to return, in objectified format, an object that has been stored as a property in the message with the equivalent
setObjectProperty
method call, or its equivalent primitivesettypeProperty
method.- Specified by:
getObjectProperty
in interfacejavax.jms.Message
- Parameters:
name
- the name of the Java object property- Returns:
- the Java object property value with the specified name, in objectified format (for example, if the property was set as an
int
, anInteger
is returned); if there is no property by this name, a null value is returned - Throws:
javax.jms.JMSException
- if the JMS provider fails to get the property value due to some internal error.
-
getPropertyNames
public java.util.Enumeration<java.lang.String> getPropertyNames() throws javax.jms.JMSException
Returns anEnumeration
of all the property names.Note that JMS standard header fields are not considered properties and are not returned in this enumeration.
- Specified by:
getPropertyNames
in interfacejavax.jms.Message
- Returns:
- an enumeration of all the names of property values
- Throws:
javax.jms.JMSException
- if the JMS provider fails to get the property names due to some internal error.
-
setBooleanProperty
public void setBooleanProperty(java.lang.String name, boolean value) throws javax.jms.JMSException
Sets aboolean
property value with the specified name into the message.- Specified by:
setBooleanProperty
in interfacejavax.jms.Message
- Parameters:
name
- the name of theboolean
propertyvalue
- theboolean
property value to set- Throws:
javax.jms.JMSException
- if the JMS provider fails to set the property due to some internal error.java.lang.IllegalArgumentException
- if the name is null or if the name is an empty string.javax.jms.MessageNotWriteableException
- if properties are read-only
-
setByteProperty
public void setByteProperty(java.lang.String name, byte value) throws javax.jms.JMSException
Sets abyte
property value with the specified name into the message.- Specified by:
setByteProperty
in interfacejavax.jms.Message
- Parameters:
name
- the name of thebyte
propertyvalue
- thebyte
property value to set- Throws:
javax.jms.JMSException
- if the JMS provider fails to set the property due to some internal error.java.lang.IllegalArgumentException
- if the name is null or if the name is an empty string.javax.jms.MessageNotWriteableException
- if properties are read-only
-
setShortProperty
public void setShortProperty(java.lang.String name, short value) throws javax.jms.JMSException
Sets ashort
property value with the specified name into the message.- Specified by:
setShortProperty
in interfacejavax.jms.Message
- Parameters:
name
- the name of theshort
propertyvalue
- theshort
property value to set- Throws:
javax.jms.JMSException
- if the JMS provider fails to set the property due to some internal error.java.lang.IllegalArgumentException
- if the name is null or if the name is an empty string.javax.jms.MessageNotWriteableException
- if properties are read-only
-
setIntProperty
public void setIntProperty(java.lang.String name, int value) throws javax.jms.JMSException
Sets anint
property value with the specified name into the message.- Specified by:
setIntProperty
in interfacejavax.jms.Message
- Parameters:
name
- the name of theint
propertyvalue
- theint
property value to set- Throws:
javax.jms.JMSException
- if the JMS provider fails to set the property due to some internal error.java.lang.IllegalArgumentException
- if the name is null or if the name is an empty string.javax.jms.MessageNotWriteableException
- if properties are read-only
-
setLongProperty
public void setLongProperty(java.lang.String name, long value) throws javax.jms.JMSException
Sets along
property value with the specified name into the message.- Specified by:
setLongProperty
in interfacejavax.jms.Message
- Parameters:
name
- the name of thelong
propertyvalue
- thelong
property value to set- Throws:
javax.jms.JMSException
- if the JMS provider fails to set the property due to some internal error.java.lang.IllegalArgumentException
- if the name is null or if the name is an empty string.javax.jms.MessageNotWriteableException
- if properties are read-only
-
setFloatProperty
public void setFloatProperty(java.lang.String name, float value) throws javax.jms.JMSException
Sets afloat
property value with the specified name into the message.- Specified by:
setFloatProperty
in interfacejavax.jms.Message
- Parameters:
name
- the name of thefloat
propertyvalue
- thefloat
property value to set- Throws:
javax.jms.JMSException
- if the JMS provider fails to set the property due to some internal error.java.lang.IllegalArgumentException
- if the name is null or if the name is an empty string.javax.jms.MessageNotWriteableException
- if properties are read-only
-
setDoubleProperty
public void setDoubleProperty(java.lang.String name, double value) throws javax.jms.JMSException
Sets adouble
property value with the specified name into the message.- Specified by:
setDoubleProperty
in interfacejavax.jms.Message
- Parameters:
name
- the name of thedouble
propertyvalue
- thedouble
property value to set- Throws:
javax.jms.JMSException
- if the JMS provider fails to set the property due to some internal error.java.lang.IllegalArgumentException
- if the name is null or if the name is an empty string.javax.jms.MessageNotWriteableException
- if properties are read-only
-
setStringProperty
public void setStringProperty(java.lang.String name, java.lang.String value) throws javax.jms.JMSException
Sets aString
property value with the specified name into the message.- Specified by:
setStringProperty
in interfacejavax.jms.Message
- Parameters:
name
- the name of theString
propertyvalue
- theString
property value to set- Throws:
javax.jms.JMSException
- if the JMS provider fails to set the property due to some internal error.java.lang.IllegalArgumentException
- if the name is null or if the name is an empty string.javax.jms.MessageNotWriteableException
- if properties are read-only
-
setObjectProperty
public void setObjectProperty(java.lang.String name, java.lang.Object value) throws javax.jms.JMSException
Sets a Java object property value with the specified name into the message.Note that this method works only for the objectified primitive object types (
Integer
,Double
,Long
...) andString
objects.- Specified by:
setObjectProperty
in interfacejavax.jms.Message
- Parameters:
name
- the name of the Java object propertyvalue
- the Java object property value to set- Throws:
javax.jms.JMSException
- if the JMS provider fails to set the property due to some internal error.java.lang.IllegalArgumentException
- if the name is null or if the name is an empty string.javax.jms.MessageFormatException
- if the object is invalidjavax.jms.MessageNotWriteableException
- if properties are read-only
-
acknowledge
public void acknowledge() throws javax.jms.JMSException
Acknowledges all consumed messages of the session of this consumed message.All consumed JMS messages support the
acknowledge
method for use when a client has specified that its JMS session's consumed messages are to be explicitly acknowledged. By invokingacknowledge
on a consumed message, a client acknowledges all messages consumed by the session that the message was delivered to.Calls to
acknowledge
are ignored for both transacted sessions and sessions specified to use implicit acknowledgement modes.A client may individually acknowledge each message as it is consumed, or it may choose to acknowledge messages as an application-defined group (which is done by calling acknowledge on the last received message of the group, thereby acknowledging all messages consumed by the session.)
Messages that have been received but not acknowledged may be redelivered.
- Specified by:
acknowledge
in interfacejavax.jms.Message
- Throws:
javax.jms.JMSException
- if the JMS provider fails to acknowledge the messages due to some internal error.javax.jms.IllegalStateException
- if this method is called on a closed session.
-
clearBody
public void clearBody() throws javax.jms.JMSException
Clears out the message body. Clearing a message's body does not clear its header values or property entries.If this message body was read-only, calling this method leaves the message body in the same state as an empty body in a newly created message.
- Specified by:
clearBody
in interfacejavax.jms.Message
- Throws:
javax.jms.JMSException
- if the JMS provider fails to clear the message body due to some internal error.
-
explicitAcknowledge
public void explicitAcknowledge() throws javax.jms.JMSException
Explicitly acknowledges this and only this consumed message.Calls to
explicitAcknowledge
are ignored for both transacted sessions and sessions specified to use implicit acknowledgement modes.Messages that have been received but not acknowledged may be redelivered.
- Specified by:
explicitAcknowledge
in interfaceWmMessage
- Throws:
javax.jms.JMSException
- if the JMS provider fails to acknowledge the message due to some internal error.java.lang.IllegalStateException
- if this method is called on a closed session.- See Also:
Session.CLIENT_ACKNOWLEDGE
-
negativeAcknowledge
public void negativeAcknowledge() throws javax.jms.JMSException
Negatively acknowledges this consumed message causing it to be redelivered.Calls to
negativeAcknowledge
are ignored for both transacted sessions and sessions specified to use implicit acknowledgement modes.- Specified by:
negativeAcknowledge
in interfaceWmMessage
- Throws:
javax.jms.JMSException
- if the JMS provider fails to negative acknowledge the message due to some internal error.java.lang.IllegalStateException
- if this method is called on a closed session.- See Also:
Session.CLIENT_ACKNOWLEDGE
-
getSize
public int getSize() throws javax.jms.JMSException
Get the message size in bytes.
-
setCompression
public void setCompression(boolean compress) throws javax.jms.JMSException
Enable or disable compression for this message. When enabled, the message body will be compressed just prior to being delivered.- Specified by:
setCompression
in interfaceWmMessage
- Parameters:
compress
-true
to enable compression for this message.- Throws:
javax.jms.JMSException
- for any internal errors.
-
getCompression
public boolean getCompression() throws javax.jms.JMSException
Get whether compression is enabled or disabled for this message.- Specified by:
getCompression
in interfaceWmMessage
- Returns:
- Whether compression is enabled or disabled for this message.
- Throws:
javax.jms.JMSException
- for any internal errors.
-
setCompressionLevel
public void setCompressionLevel(int level) throws javax.jms.JMSException
Set the compression level for this message.- Specified by:
setCompressionLevel
in interfaceWmMessage
- Parameters:
level
- The compression level (0-9) as defined byjava.util.zip.Deflater
.- Throws:
javax.jms.JMSException
- for any internal errors.
-
getCompressionLevel
public int getCompressionLevel() throws javax.jms.JMSException
Get the compression level for this message.- Specified by:
getCompressionLevel
in interfaceWmMessage
- Returns:
- The compression level (0-9) as defined by
java.util.zip.Deflater
. - Throws:
javax.jms.JMSException
- for any internal errors.
-
getCompressionRatio
public int getCompressionRatio() throws javax.jms.JMSException
Get the compression ratio of a delivered message that has been compressed. The ratio is calculated as:ratio = ((uncompressed_size - compressed_size) / uncompressed_size) * 100
- Specified by:
getCompressionRatio
in interfaceWmMessage
- Returns:
- The compression ratio of a delivered message.
- Throws:
javax.jms.JMSException
- for any internal errors.
-
getAccessLabel
public short[] getAccessLabel() throws javax.jms.JMSException
- Throws:
javax.jms.JMSException
-
setAccessLabel
public void setAccessLabel(short[] label) throws javax.jms.JMSException
Description copied from interface:WmMessage
Set access label to message envelope- Specified by:
setAccessLabel
in interfaceWmMessage
- Throws:
javax.jms.JMSException
-
getUUID
public java.lang.String getUUID() throws javax.jms.JMSException
- Throws:
javax.jms.JMSException
-
setUUID
public void setUUID(java.lang.String uuid) throws javax.jms.JMSException
- Throws:
javax.jms.JMSException
-
getPreAcknowledgement
public java.lang.String getPreAcknowledgement() throws javax.jms.JMSException
- Throws:
javax.jms.JMSException
-
setPreAcknowledgement
public void setPreAcknowledgement(java.lang.String preack) throws javax.jms.JMSException
- Throws:
javax.jms.JMSException
-
isPreAcked
public boolean isPreAcked()
-
setJMSMessageIDHint
public void setJMSMessageIDHint(java.lang.String msg) throws javax.jms.JMSException
- Throws:
javax.jms.JMSException
-
getJMSMessageIDHint
public java.lang.String getJMSMessageIDHint()
-
writeExternal
public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException
- Specified by:
writeExternal
in interfacejava.io.Externalizable
- Throws:
java.io.IOException
- See Also:
Externalizable.writeExternal(java.io.ObjectOutput)
-
readExternal
public void readExternal(java.io.ObjectInput in) throws java.io.IOException, java.lang.ClassNotFoundException
- Specified by:
readExternal
in interfacejava.io.Externalizable
- Throws:
java.io.IOException
java.lang.ClassNotFoundException
- See Also:
Externalizable.readExternal(java.io.ObjectInput)
-
setDestination
protected void setDestination(WmDestinationImpl destination) throws javax.jms.JMSException
Method setDestination Internal method to set the real destination for the message. The JMS specification allows the JMS client to call setJMSDestination but that is to be overridden by the JMS provider when the message is sent. However, until the message is sent, the value set by the JMS client must be returned.- Parameters:
destination
- the real destination- Throws:
javax.jms.JMSException
-
setMessageID
protected void setMessageID(java.lang.String id)
Internal method to set the real id for the message. The JMS specification allows the JMS client to call setJMSMessageID but that is to be overridden by the JMS provider when the message is sent. However, until the message is sent, the value set by the JMS client must be returned.- Parameters:
id
- the real message id
-
setTimestamp
protected void setTimestamp(long timestamp)
Internal method to set the real timestamp for the message. The JMS specification allows the JMS client to call setJMSTimestamp but that is to be overridden by the JMS provider when the message is sent. However, until the message is sent, the value set by the JMS client must be returned.- Parameters:
timestamp
-
-
setDeliveryMode
protected void setDeliveryMode(int deliveryMode)
Internal method to set the real delivery mode for the message. The JMS specification allows the JMS client to call setJMSDeliveryMode but that is to be overridden by the JMS provider when the message is sent. However, until the message is sent, the value set by the JMS client must be returned.- Parameters:
deliveryMode
-
-
setExpiration
protected void setExpiration(long expiration)
Internal method to set the real expiration for the message. The JMS specification allows the JMS client to call setJMSExpiration but that is to be overridden by the JMS provider when the message is sent. However, until the message is sent, the value set by the JMS client must be returned.- Parameters:
expiration
-
-
setPriority
protected void setPriority(int priority)
Internal method to set the real priority for the message. The JMS specification allows the JMS client to call setJMSPriority but that is to be overridden by the JMS provider when the message is sent. However, until the message is sent, the value set by the JMS client must be returned.- Parameters:
priority
-
-
getConsumer
public WmMessageConsumerImpl getConsumer()
Internal method to get the consumer of this message.- Returns:
- the consumer of this message
-
setConsumer
protected void setConsumer(WmMessageConsumerImpl consumer)
Internal method to set the consumer of this message.- Parameters:
consumer
- the consumer of this message
-
getTransactionID
public long getTransactionID()
Internal method to get the message's transaction ID.- Returns:
- the transaction ID of this message
-
setTransactionID
protected void setTransactionID(long transactionID)
Internal method to set the message's transaction ID.- Parameters:
transactionID
- the transaction ID of this message
-
isAcknowledged
public boolean isAcknowledged()
Internal method to get the message acknowledge status.- Returns:
- the message acknowledge status
-
setAcknowledged
public void setAcknowledged(boolean acknowledged)
Internal method to set the message acknowledge status.- Parameters:
acknowledged
- the message acknowledge status
-
getReceiveCount
protected int getReceiveCount()
Internal method to get the message receive count.- Returns:
- the message receive count
-
setReceiveCount
protected void setReceiveCount(int receiveCount)
Internal method to set the message receive count.- Parameters:
receiveCount
- the message receive count
-
getSequenceNumber
public long getSequenceNumber()
Internal method to get the sequence number of this message.- Returns:
- the message sequence number
-
setSequenceNumber
public void setSequenceNumber(long sequenceNumber)
-
getSubscriptionIDs
public int[] getSubscriptionIDs()
-
setSubscriptionIDs
public void setSubscriptionIDs(int[] subscriptionIDs)
-
setDeliveryCount
public void setDeliveryCount(int deliveryCount)
-
getTransportData
public byte[] getTransportData() throws javax.jms.JMSException
- Throws:
javax.jms.JMSException
-
getTransportDataLength
public int getTransportDataLength()
-
getTransportTypeName
public java.lang.String getTransportTypeName()
-
setTransportTypeName
public void setTransportTypeName(java.lang.String name)
-
setDestinationId
public void setDestinationId(java.lang.String destId)
-
getDestinationId
public java.lang.String getDestinationId()
-
setTopicName
public void setTopicName(java.lang.String topicName)
-
getTopicName
public java.lang.String getTopicName(java.lang.String topicName)
-
prepareMsgForTransport
protected void prepareMsgForTransport()
-
equals
public boolean equals(java.lang.Object obj)
Checks if two Messages are equal- Overrides:
equals
in classjava.lang.Object
- See Also:
Object.equals(Object)
-
checkString
protected static boolean checkString(java.lang.String str1, java.lang.String str2)
-
checkObject
protected static boolean checkObject(java.lang.Object value1, java.lang.Object value2)
-
hashObject
protected static int hashObject(java.lang.Object obj)
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
internalToString
protected void internalToString(java.lang.StringBuffer buf)
-
hashCode
public int hashCode()
Calculates hash code for this object.- Overrides:
hashCode
in classjava.lang.Object
- See Also:
Object.hashCode()
-
xdump
public static void xdump(byte[] buf)
-
setReadOnly
public void setReadOnly(boolean readOnly)
Set the Message Body and Properties- Parameters:
readOnly
-
-
setReadOnlyBody
public void setReadOnlyBody(boolean readOnlyBody)
Set the Message Body as readonly- Parameters:
readOnlyBody
-
-
setReadOnlyProperties
public void setReadOnlyProperties(boolean readOnly)
-
checkMessageBodyReadStatus
public void checkMessageBodyReadStatus() throws javax.jms.MessageNotReadableException
- Throws:
javax.jms.MessageNotReadableException
-
checkMessagePropertiesReadStatus
public void checkMessagePropertiesReadStatus() throws javax.jms.MessageNotReadableException
- Throws:
javax.jms.MessageNotReadableException
-
checkMessageReadStatus
public void checkMessageReadStatus() throws javax.jms.MessageNotReadableException
- Throws:
javax.jms.MessageNotReadableException
-
checkMessageBodyWriteStatus
public void checkMessageBodyWriteStatus() throws javax.jms.MessageNotWriteableException
- Throws:
javax.jms.MessageNotWriteableException
-
checkMessageWriteStatus
public void checkMessageWriteStatus() throws javax.jms.MessageNotWriteableException
- Throws:
javax.jms.MessageNotWriteableException
-
checkMessagePropertiesWriteStatus
public void checkMessagePropertiesWriteStatus() throws javax.jms.MessageNotWriteableException
- Throws:
javax.jms.MessageNotWriteableException
-
-