[ 
https://issues.apache.org/activemq/browse/AMQ-2840?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=61292#action_61292
 ] 

Eugene Rodos commented on AMQ-2840:
-----------------------------------

Guys, let's read the JMS spec carefully:

The spec says that the following are standard header fields (starting with 
"JMS" prefix):
JMSDestination
JMSDeliveryMode
JMSExpiration
JMSPriority
JMSMessageID
JMSTimestamp
JMSCorrelationID
JMSReplyTo
JMSType
JMSRedelivered

However, the following are NOT header fields but are JMS Defined *_Properties_* 
(starting with "JMSX" prefix):
JMSXUserID
JMSXAppID
JMSXDeliveryCount
JMSXGroupID
JMSXGroupSeq
JMSXProducerTXID
JMSXConsumerTXID
JMSXRcvTimestamp
JMSXState

Of these, it looks like AMQ supports 3: JMSXDeliveryCount, JMSXGroupID and 
JMSXGroupSeq.  Now, the ActiveMQMessage class puts both the JMS header fields 
and the JMSX message properties into the same JMS_PROPERTY_SETERS map, so i 
agree, returning the whole map is wrong, but the JMSX properties MUST still be 
returned.

So I think the proper solution is to replace the (reverted) line:
{code}
result.addAll(new Vector<String>(JMS_PROPERTY_SETERS.keySet()));
{code}
with something like:
{code}
for (String propName : JMS_PROPERTY_SETERS.keySet()) {
    if (propName.startsWith("JMSX")) {
        propsVector.add(propName);
    }
}
{code}


> JMSX Properties not returned from message.propertyExists() and 
> message.getPropertyNames()
> -----------------------------------------------------------------------------------------
>
>                 Key: AMQ-2840
>                 URL: https://issues.apache.org/activemq/browse/AMQ-2840
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.4.0
>            Reporter: Andriy Hnativ
>            Assignee: Gary Tully
>             Fix For: 5.4.1
>
>         Attachments: patch.txt
>
>
> Methods propertyExists() and getPropertyNames() defined in the class 
> org.apache.activemq.command.ActiveMQMessage (activemq-core) return only 
> custom properties. The JMSX properties (like JMSXDeliveryCount) are not being 
> returned. This problem exists not only for a new version of ActiveMQ (5.4), 
> but also for 5.3 (and probably for others as well).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to