diff options
Diffstat (limited to 'java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageImpl.java')
-rw-r--r-- | java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageImpl.java | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageImpl.java b/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageImpl.java index fed9b5904f..f2d0cb5b18 100644 --- a/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageImpl.java +++ b/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageImpl.java @@ -75,6 +75,7 @@ public abstract class MessageImpl implements Message private boolean _isFromQueue; private boolean _isFromTopic; private long _expiration; + private DestinationImpl _replyTo; protected MessageImpl(Header header, MessageAnnotations messageAnnotations, @@ -182,11 +183,12 @@ public abstract class MessageImpl implements Message public DestinationImpl getJMSReplyTo() throws JMSException { - return toDestination(getReplyTo(), splitCommaSeparateSet((String) getMessageAnnotation(REPLY_TO_TYPE))); + return _replyTo != null ? _replyTo : toDestination(getReplyTo(), splitCommaSeparateSet((String) getMessageAnnotation(REPLY_TO_TYPE))); } public void setJMSReplyTo(Destination destination) throws NonAMQPDestinationException { + _replyTo = (DestinationImpl) destination; if( destination==null ) { setReplyTo(null); @@ -194,9 +196,16 @@ public abstract class MessageImpl implements Message } else { - DecodedDestination dd = toDecodedDestination(destination); - setReplyTo(dd.getAddress()); - messageAnnotationMap().put(REPLY_TO_TYPE, join(",", dd.getAttributes())); + if(_replyTo.getLocalTerminus() != null) + { + setReplyTo(_replyTo.getLocalTerminus()); + } + else + { + DecodedDestination dd = toDecodedDestination(destination); + setReplyTo(dd.getAddress()); + messageAnnotationMap().put(REPLY_TO_TYPE, join(",", dd.getAttributes())); + } } } |