summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer_0_10.java24
1 files changed, 19 insertions, 5 deletions
diff --git a/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer_0_10.java b/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer_0_10.java
index c01439792a..6b7525b796 100644
--- a/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer_0_10.java
+++ b/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer_0_10.java
@@ -168,17 +168,31 @@ public class BasicMessageProducer_0_10 extends BasicMessageProducer
deliveryProp.setRoutingKey(routingKey);
}
- if (destination.getSubject() != null && !destination.getSubject().equals(""))
+ if (destination.getDestSyntax() == AMQDestination.DestSyntax.ADDR &&
+ (destination.getSubject() != null ||
+ (messageProps.getApplicationHeaders() != null && messageProps.getApplicationHeaders().get("qpid.subject") != null))
+ )
{
Map<String,Object> appProps = messageProps.getApplicationHeaders();
if (appProps == null)
{
appProps = new HashMap<String,Object>();
+ messageProps.setApplicationHeaders(appProps);
}
- appProps.put("qpid.subject",destination.getSubject());
- messageProps.setApplicationHeaders(appProps);
- }
-
+
+ if (appProps.get("qpid.subject") == null)
+ {
+ // use default subject in address string
+ appProps.put("qpid.subject",destination.getSubject());
+ }
+
+ if (destination.getTargetNode().getType() == AMQDestination.TOPIC_TYPE)
+ {
+ deliveryProp.setRoutingKey((String)
+ messageProps.getApplicationHeaders().get("qpid.subject"));
+ }
+ }
+
messageProps.setContentLength(message.getContentLength());
// send the message