diff options
| author | Rajith Muditha Attapattu <rajith@apache.org> | 2012-04-04 11:45:45 +0000 |
|---|---|---|
| committer | Rajith Muditha Attapattu <rajith@apache.org> | 2012-04-04 11:45:45 +0000 |
| commit | 3bd6508fed99480106ef01ee348006954092bd6f (patch) | |
| tree | 285f29849b65b848ee972ae695f3713570be22b6 /qpid/java/client/src | |
| parent | 0ad68d54aaf249b1f0fb8e712461bb8af6841321 (diff) | |
| download | qpid-python-3bd6508fed99480106ef01ee348006954092bd6f.tar.gz | |
QPID-3401 Added code to extract information from an address string and
populate Node and Link data structures.
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/address-refactor2@1309341 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/client/src')
4 files changed, 50 insertions, 12 deletions
diff --git a/qpid/java/client/src/main/java/org/apache/qpid/jms/DestinationStringParser.java b/qpid/java/client/src/main/java/org/apache/qpid/jms/DestinationStringParser.java index c4c6f1f7e3..3b5bd74f76 100644 --- a/qpid/java/client/src/main/java/org/apache/qpid/jms/DestinationStringParser.java +++ b/qpid/java/client/src/main/java/org/apache/qpid/jms/DestinationStringParser.java @@ -23,29 +23,67 @@ package org.apache.qpid.jms; import java.net.URISyntaxException; import java.util.Collections; -import org.apache.qpid.jms.QpidDestination.Type; +import org.apache.qpid.jms.QpidDestination.DestinationType; import org.apache.qpid.messaging.Address; import org.apache.qpid.messaging.address.AddressException; +import org.apache.qpid.messaging.address.Link; +import org.apache.qpid.messaging.address.Link.Reliability; import org.apache.qpid.messaging.address.Node; import org.apache.qpid.messaging.address.Node.AddressPolicy; +import org.apache.qpid.messaging.address.Node.NodeType; import org.apache.qpid.messaging.util.AddressHelper; import org.apache.qpid.url.AMQBindingURL; public class DestinationStringParser { - public static Address parseAddressString(String str, Type type) throws AddressException + public static Address parseAddressString(String str, DestinationType type) throws AddressException { Address addr = Address.parse(str); AddressHelper helper = new AddressHelper(addr); + Node node = new Node(); + node.setName(addr.getName()); node.setAssertPolicy(AddressPolicy.getAddressPolicy(helper.getAssert())); node.setCreatePolicy(AddressPolicy.getAddressPolicy(helper.getCreate())); node.setDeletePolicy(AddressPolicy.getAddressPolicy(helper.getDelete())); + node.setDurable(helper.isNodeDurable()); + + if (DestinationType.TOPIC == type) + { + if (helper.getNodeType() == NodeType.QUEUE) + { + throw new AddressException("Destination is marked as a Topic, but address is defined as a Queue"); + } + node.setType(NodeType.TOPIC); + } + else + { + if (helper.getNodeType() == NodeType.TOPIC) + { + throw new AddressException("Destination is marked as a Queue, but address is defined as a Topic"); + } + node.setType(NodeType.QUEUE); + } + + node.setDeclareProps(helper.getNodeDeclareArgs()); + node.setBindingProps(helper.getNodeBindings()); + addr.setNode(node); + + Link link = new Link(); + link.setName(helper.getLinkName()); + link.setDurable(helper.isLinkDurable()); + link.setReliability(Reliability.getReliability(helper.getLinkReliability())); + link.setProducerCapacity(helper.getProducerCapacity()); + link.setConsumerCapacity(helper.getConsumeCapacity()); + link.setDeclareProps(helper.getLinkDeclareArgs()); + link.setBindingProps(helper.getLinkBindings()); + link.setSubscribeProps(helper.getLinkSubscribeArgs()); + addr.setLink(link); return addr; } - public static Address parseBURLString(String str, Type type) throws AddressException + public static Address parseBURLString(String str, DestinationType type) throws AddressException { AMQBindingURL burl; try @@ -60,7 +98,7 @@ public class DestinationStringParser } Address addr; - if (type == Type.TOPIC) + if (type == DestinationType.TOPIC) { addr = new Address(burl.getExchangeName().asString(), burl.getRoutingKey().asString(), diff --git a/qpid/java/client/src/main/java/org/apache/qpid/jms/QpidDestination.java b/qpid/java/client/src/main/java/org/apache/qpid/jms/QpidDestination.java index 5166cce59a..a488679379 100644 --- a/qpid/java/client/src/main/java/org/apache/qpid/jms/QpidDestination.java +++ b/qpid/java/client/src/main/java/org/apache/qpid/jms/QpidDestination.java @@ -36,17 +36,17 @@ import org.slf4j.LoggerFactory; public abstract class QpidDestination implements Destination, Referenceable { - public enum Type {QUEUE, TOPIC}; + public enum DestinationType {QUEUE, TOPIC}; private static final Logger _logger = LoggerFactory.getLogger(QpidDestination.class); private static final DestSyntax defaultDestSyntax; private DestSyntax _destSyntax = DestSyntax.ADDR; - protected final Type type; + protected final DestinationType type; protected String destinationString; protected Address address; - protected QpidDestination(Type type) + protected QpidDestination(DestinationType type) { this.type = type; } diff --git a/qpid/java/client/src/main/java/org/apache/qpid/jms/QpidQueue.java b/qpid/java/client/src/main/java/org/apache/qpid/jms/QpidQueue.java index 18dafffd37..a1183240d6 100644 --- a/qpid/java/client/src/main/java/org/apache/qpid/jms/QpidQueue.java +++ b/qpid/java/client/src/main/java/org/apache/qpid/jms/QpidQueue.java @@ -27,12 +27,12 @@ public class QpidQueue extends QpidDestination implements Queue { public QpidQueue() { - super(Type.QUEUE); + super(DestinationType.QUEUE); } public QpidQueue(String str) throws JMSException { - super(Type.QUEUE); + super(DestinationType.QUEUE); setDestinationString(str); } diff --git a/qpid/java/client/src/main/java/org/apache/qpid/jms/QpidTopic.java b/qpid/java/client/src/main/java/org/apache/qpid/jms/QpidTopic.java index 6d34303fa2..f41897aa00 100644 --- a/qpid/java/client/src/main/java/org/apache/qpid/jms/QpidTopic.java +++ b/qpid/java/client/src/main/java/org/apache/qpid/jms/QpidTopic.java @@ -23,18 +23,18 @@ package org.apache.qpid.jms; import javax.jms.JMSException; import javax.jms.Topic; -import org.apache.qpid.jms.QpidDestination.Type; +import org.apache.qpid.jms.QpidDestination.DestinationType; public class QpidTopic extends QpidDestination implements Topic { public QpidTopic() { - super(Type.TOPIC); + super(DestinationType.TOPIC); } public QpidTopic(String str) throws JMSException { - super(Type.TOPIC); + super(DestinationType.TOPIC); setDestinationString(str); } |
