diff options
5 files changed, 47 insertions, 5 deletions
diff --git a/java/client/src/main/java/org/apache/qpid/client/AMQConnectionFactory.java b/java/client/src/main/java/org/apache/qpid/client/AMQConnectionFactory.java index c7cc0ad394..9b0183967d 100644 --- a/java/client/src/main/java/org/apache/qpid/client/AMQConnectionFactory.java +++ b/java/client/src/main/java/org/apache/qpid/client/AMQConnectionFactory.java @@ -60,16 +60,26 @@ public class AMQConnectionFactory implements ConnectionFactory, QueueConnectionF { } + /** + * This is the Only constructor used! + * It is used form the context and from the JNDI objects. + */ public AMQConnectionFactory(String url) throws URLSyntaxException { _connectionDetails = new AMQConnectionURL(url); } + /** + * This constructor is never used! + */ public AMQConnectionFactory(ConnectionURL url) { _connectionDetails = url; } + /** + * This constructor is never used! + */ public AMQConnectionFactory(String broker, String username, String password, String clientName, String virtualHost) throws URLSyntaxException { @@ -78,11 +88,17 @@ public class AMQConnectionFactory implements ConnectionFactory, QueueConnectionF virtualHost + "?brokerlist='" + broker + "'")); } + /** + * This constructor is never used! + */ public AMQConnectionFactory(String host, int port, String virtualPath) { this(host, port, "guest", "guest", virtualPath); } + /** + * This constructor is never used! + */ public AMQConnectionFactory(String host, int port, String defaultUsername, String defaultPassword, String virtualPath) { @@ -382,7 +398,7 @@ public class AMQConnectionFactory implements ConnectionFactory, QueueConnectionF if (addr != null) { - return new AMQConnectionFactory(new AMQConnectionURL((String) addr.getContent())); + return new AMQConnectionFactory((String) addr.getContent()); } } diff --git a/java/client/src/main/java/org/apache/qpid/client/AMQConnectionURL.java b/java/client/src/main/java/org/apache/qpid/client/AMQConnectionURL.java index 8c42ec6629..42e8284b10 100644 --- a/java/client/src/main/java/org/apache/qpid/client/AMQConnectionURL.java +++ b/java/client/src/main/java/org/apache/qpid/client/AMQConnectionURL.java @@ -24,8 +24,10 @@ import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.net.MalformedURLException; import org.apache.qpid.client.url.URLParser_0_8; +import org.apache.qpid.client.url.URLParser_0_10; import org.apache.qpid.framing.AMQShortString; import org.apache.qpid.jms.BrokerDetails; import org.apache.qpid.jms.ConnectionURL; @@ -67,11 +69,28 @@ public class AMQConnectionURL implements ConnectionURL if (fullURL.startsWith("qpid")) { //URLParser + URLParser_0_10 parser = null; + try + { + parser = new URLParser_0_10(fullURL); + } + catch (MalformedURLException e) + { + throw new URLSyntaxException(fullURL,e.getMessage(),0,0); + } + setBrokerDetails(parser.getAllBrokerDetails()); + // use the first instance username and password + // This is temporary as the URL must be changed for olding this information as part of the full URL + BrokerDetails firstBroker = getBrokerDetails(0); + setUsername(firstBroker.getProperty(BrokerDetails.USERNAME)); + setPassword(firstBroker.getProperty(BrokerDetails.PASSWORD)); + setClientName(firstBroker.getProperty(BrokerDetails.CLIENT_ID)); + setVirtualHost(firstBroker.getProperty(BrokerDetails.VIRTUAL_HOST)); _urlVersion = URL_0_10; } else { - URLParser_0_8 urlParser = new URLParser_0_8(this); + new URLParser_0_8(this); _urlVersion = URL_0_8; } } @@ -147,6 +166,11 @@ public class AMQConnectionURL implements ConnectionURL } } + public void setBrokerDetails(List<BrokerDetails> brokers) + { + _brokers = brokers; + } + public List<BrokerDetails> getAllBrokerDetails() { return _brokers; diff --git a/java/client/src/main/java/org/apache/qpid/client/url/URLParser_0_10.java b/java/client/src/main/java/org/apache/qpid/client/url/URLParser_0_10.java index ee47ad2a94..758088dd68 100644 --- a/java/client/src/main/java/org/apache/qpid/client/url/URLParser_0_10.java +++ b/java/client/src/main/java/org/apache/qpid/client/url/URLParser_0_10.java @@ -96,7 +96,7 @@ public class URLParser_0_10 public URLParser_0_10(String url) throws MalformedURLException { - _url = (url + "END_OF_URL_MARKER").toCharArray(); + _url = (url + END_OF_URL_MARKER).toCharArray(); _endOfURL = false; _currentParserState = URLParserState.QPID_URL_START; URLParserState prevState = _currentParserState; // for error handling @@ -402,7 +402,7 @@ public class URLParser_0_10 public static void main(String[] args) { - String testurl = "qpid:password=pass;username=name@tcp:test1,tcp:fooBroker,keystore=/usr/foo@tls:tlsBroker"; + String testurl = "qpid:password=pass;username=name@tcp:test1"; try { URLParser_0_10 impl = new URLParser_0_10(testurl); diff --git a/java/client/src/main/java/org/apache/qpid/jms/ConnectionURL.java b/java/client/src/main/java/org/apache/qpid/jms/ConnectionURL.java index 0aafaa2ccf..7cae7f8a9f 100644 --- a/java/client/src/main/java/org/apache/qpid/jms/ConnectionURL.java +++ b/java/client/src/main/java/org/apache/qpid/jms/ConnectionURL.java @@ -60,6 +60,8 @@ public interface ConnectionURL void addBrokerDetails(BrokerDetails broker); + void setBrokerDetails(List<BrokerDetails> brokers); + List<BrokerDetails> getAllBrokerDetails(); String getClientName(); diff --git a/java/client/src/test/java/org/apache/qpid/testutil/QpidClientConnection.java b/java/client/src/test/java/org/apache/qpid/testutil/QpidClientConnection.java index 7eb2abe7eb..acfb00c9ba 100644 --- a/java/client/src/test/java/org/apache/qpid/testutil/QpidClientConnection.java +++ b/java/client/src/test/java/org/apache/qpid/testutil/QpidClientConnection.java @@ -75,7 +75,7 @@ public class QpidClientConnection implements ExceptionListener String brokerUrl = "amqp://guest:guest@" + virtualHost + "?brokerlist='" + brokerlist + "'"; try { - AMQConnectionFactory factory = new AMQConnectionFactory(new AMQConnectionURL(brokerUrl)); + AMQConnectionFactory factory = new AMQConnectionFactory(brokerUrl); _logger.info("connecting to Qpid :" + brokerUrl); connection = factory.createConnection(); |
