summaryrefslogtreecommitdiff
path: root/java/client/src/main/java/org/apache/qpid/client/AMQDestination.java
diff options
context:
space:
mode:
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.java26
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);
}
}
}