diff options
| author | Robert Gemmell <robbie@apache.org> | 2012-05-28 12:20:35 +0000 |
|---|---|---|
| committer | Robert Gemmell <robbie@apache.org> | 2012-05-28 12:20:35 +0000 |
| commit | b3bcd521a46ca9e351e295fc8685712291bd86dd (patch) | |
| tree | a23875ade5aca1aae8c87e7ac10e42eb0bdf1fb3 /qpid/java | |
| parent | 175c11c7b8056c144b6a9dd8b132cccba7ca442d (diff) | |
| download | qpid-python-b3bcd521a46ca9e351e295fc8685712291bd86dd.tar.gz | |
QPID-4023: restore connection URL setter, add check that URL details have been set before calling connect(), add unit+sys test to verify operation
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1343220 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
| -rw-r--r-- | qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionFactory.java | 20 | ||||
| -rw-r--r-- | qpid/java/client/src/test/java/org/apache/qpid/client/AMQConnectionFactoryTest.java (renamed from qpid/java/client/src/test/java/org/apache/qpid/test/unit/jndi/ConnectionFactoryTest.java) | 20 | ||||
| -rw-r--r-- | qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/ConnectionFactoryTest.java | 19 |
3 files changed, 52 insertions, 7 deletions
diff --git a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionFactory.java b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionFactory.java index cc91746d98..8bc815d98e 100644 --- a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionFactory.java +++ b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionFactory.java @@ -55,12 +55,13 @@ public class AMQConnectionFactory implements ConnectionFactory, QueueConnectionF ObjectFactory, Referenceable, XATopicConnectionFactory, XAQueueConnectionFactory, XAConnectionFactory { - private final ConnectionURL _connectionDetails; + protected static final String NO_URL_CONFIGURED = "The connection factory wasn't created with a proper URL, the connection details are empty"; + + private ConnectionURL _connectionDetails; // The default constructor is necessary to allow AMQConnectionFactory to be deserialised from JNDI public AMQConnectionFactory() { - _connectionDetails = null; } public AMQConnectionFactory(final String url) throws URLSyntaxException @@ -106,6 +107,11 @@ public class AMQConnectionFactory implements ConnectionFactory, QueueConnectionF public Connection createConnection() throws JMSException { + if(_connectionDetails == null) + { + throw new JMSException(NO_URL_CONFIGURED); + } + try { if (_connectionDetails.getClientName() == null || _connectionDetails.getClientName().equals("")) @@ -158,7 +164,7 @@ public class AMQConnectionFactory implements ConnectionFactory, QueueConnectionF } else { - throw new JMSException("The connection factory wasn't created with a proper URL, the connection details are empty"); + throw new JMSException(NO_URL_CONFIGURED); } } @@ -193,6 +199,12 @@ public class AMQConnectionFactory implements ConnectionFactory, QueueConnectionF return _connectionDetails.toString(); } + //setter necessary to use instances created with the default constructor (which we can't remove) + public final void setConnectionURLString(String url) throws URLSyntaxException + { + _connectionDetails = new AMQConnectionURL(url); + } + /** * JNDI interface to create objects from References. * @@ -332,7 +344,7 @@ public class AMQConnectionFactory implements ConnectionFactory, QueueConnectionF } else { - throw new JMSException("The connection factory wasn't created with a proper URL, the connection details are empty"); + throw new JMSException(NO_URL_CONFIGURED); } } diff --git a/qpid/java/client/src/test/java/org/apache/qpid/test/unit/jndi/ConnectionFactoryTest.java b/qpid/java/client/src/test/java/org/apache/qpid/client/AMQConnectionFactoryTest.java index 20496026ce..bb92fa4ecd 100644 --- a/qpid/java/client/src/test/java/org/apache/qpid/test/unit/jndi/ConnectionFactoryTest.java +++ b/qpid/java/client/src/test/java/org/apache/qpid/client/AMQConnectionFactoryTest.java @@ -18,7 +18,9 @@ * under the License. * */ -package org.apache.qpid.test.unit.jndi; +package org.apache.qpid.client; + +import javax.jms.JMSException; import junit.framework.TestCase; @@ -26,7 +28,7 @@ import org.apache.qpid.client.AMQConnectionFactory; import org.apache.qpid.jms.BrokerDetails; import org.apache.qpid.jms.ConnectionURL; -public class ConnectionFactoryTest extends TestCase +public class AMQConnectionFactoryTest extends TestCase { //URL will be returned with the password field swapped for '********' @@ -58,6 +60,20 @@ public class ConnectionFactoryTest extends TestCase assertEquals("tcp", service.getTransport()); assertEquals("localhost", service.getHost()); assertEquals(5672, service.getPort()); + } + + public void testInstanceCreatedWithDefaultConstructorThrowsExceptionOnCallingConnectWithoutSettingURL() throws Exception + { + AMQConnectionFactory factory = new AMQConnectionFactory(); + try + { + factory.createConnection(); + fail("Expected exception not thrown"); + } + catch(JMSException e) + { + assertEquals("Unexpected exception", AMQConnectionFactory.NO_URL_CONFIGURED, e.getMessage()); + } } } diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/ConnectionFactoryTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/ConnectionFactoryTest.java index a313475b11..bf1fbbf1a3 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/ConnectionFactoryTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/ConnectionFactoryTest.java @@ -20,6 +20,8 @@ */ package org.apache.qpid.test.unit.client.connection; +import javax.jms.Connection; + import org.apache.qpid.client.AMQConnection; import org.apache.qpid.client.AMQConnectionFactory; import org.apache.qpid.test.utils.QpidBrokerTestCase; @@ -57,5 +59,20 @@ public class ConnectionFactoryTest extends QpidBrokerTestCase assertEquals("Usernames used is different from the one in URL","guest",con3.getConnectionURL().getUsername()); assertEquals("Password used is different from the one in URL","guest",con3.getConnectionURL().getPassword()); } - + + /** + * Verifies that a connection can be made using an instance of AMQConnectionFactory created with the + * default constructor and provided with the connection url via setter. + */ + public void testCreatingConnectionWithInstanceMadeUsingDefaultConstructor() throws Exception + { + String broker = getBroker().toString(); + String url = "amqp://guest:guest@clientID/test?brokerlist='" + broker + "'"; + + AMQConnectionFactory factory = new AMQConnectionFactory(); + factory.setConnectionURLString(url); + + Connection con = factory.createConnection(); + con.close(); + } } |
