diff options
Diffstat (limited to 'java/client/src/main/java/org/apache/qpid/client/AMQDestination.java')
-rw-r--r-- | java/client/src/main/java/org/apache/qpid/client/AMQDestination.java | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/java/client/src/main/java/org/apache/qpid/client/AMQDestination.java b/java/client/src/main/java/org/apache/qpid/client/AMQDestination.java index 6c78b754bb..3f2c1af5c2 100644 --- a/java/client/src/main/java/org/apache/qpid/client/AMQDestination.java +++ b/java/client/src/main/java/org/apache/qpid/client/AMQDestination.java @@ -82,8 +82,8 @@ public abstract class AMQDestination implements Destination, Referenceable _isExclusive = Boolean.parseBoolean(binding.getOption(BindingURL.OPTION_EXCLUSIVE)); _isAutoDelete = Boolean.parseBoolean(binding.getOption(BindingURL.OPTION_AUTODELETE)); _isDurable = Boolean.parseBoolean(binding.getOption(BindingURL.OPTION_DURABLE)); - _queueName = binding.getQueueName() == null ? null : new AMQShortString(binding.getQueueName()); - _routingKey = binding.getRoutingKey() == null ? null : new AMQShortString(binding.getRoutingKey()); + _queueName = binding.getQueueName() == null ? null : binding.getQueueName(); + _routingKey = binding.getRoutingKey() == null ? null : binding.getRoutingKey(); _bindingKeys = binding.getBindingKeys() == null || binding.getBindingKeys().length == 0 ? new AMQShortString[0] : binding.getBindingKeys(); } @@ -122,10 +122,11 @@ public abstract class AMQDestination implements Destination, Referenceable protected AMQDestination(AMQShortString exchangeName, AMQShortString exchangeClass, AMQShortString routingKey, boolean isExclusive, boolean isAutoDelete, AMQShortString queueName, boolean isDurable,AMQShortString[] bindingKeys) { - // If used with a fannout exchange, the routing key can be null - if ( !ExchangeDefaults.FANOUT_EXCHANGE_CLASS.equals(exchangeClass) && routingKey == null) + if ( (ExchangeDefaults.DIRECT_EXCHANGE_CLASS.equals(exchangeClass) || + ExchangeDefaults.TOPIC_EXCHANGE_CLASS.equals(exchangeClass)) + && routingKey == null) { - throw new IllegalArgumentException("routingKey exchange must not be null"); + throw new IllegalArgumentException("routing/binding key must not be null"); } if (exchangeName == null) { @@ -270,7 +271,7 @@ public abstract class AMQDestination implements Destination, Referenceable sb.append("://"); sb.append(_exchangeName); - sb.append("//"); + sb.append("/"+_routingKey+"/"); if (_queueName != null) { @@ -472,11 +473,12 @@ public abstract class AMQDestination implements Destination, Referenceable } else { - throw new IllegalArgumentException("Unknown Exchange Class:" + exchangeClass); + return new AMQAnyDestination(exchangeName,exchangeClass, + routingKey,isExclusive, + isAutoDelete,queueName, + isDurable, new AMQShortString[0]); } - - } public static Destination createDestination(BindingURL binding) @@ -495,13 +497,9 @@ public abstract class AMQDestination implements Destination, Referenceable { return new AMQHeadersExchange(binding); } - else if (type.equals(ExchangeDefaults.FANOUT_EXCHANGE_CLASS)) - { - return new AMQQueue(binding); - } else { - throw new IllegalArgumentException("Unknown Exchange Class:" + type + " in binding:" + binding); + return new AMQAnyDestination(binding); } } } |