add a default URI for use with the default connection factories
Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/683802d3 Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/683802d3 Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/683802d3 Branch: refs/heads/master Commit: 683802d3b449d71d806d0026be0a973e104a3220 Parents: 72a5221 Author: Robert Gemmell <[email protected]> Authored: Fri Jan 30 10:51:41 2015 +0000 Committer: Robert Gemmell <[email protected]> Committed: Fri Jan 30 10:51:41 2015 +0000 ---------------------------------------------------------------------- .../qpid/jms/jndi/JmsInitialContextFactory.java | 20 ++++++++++++++------ .../jms/jndi/JmsInitialContextFactoryTest.java | 14 ++++++++++++++ 2 files changed, 28 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/683802d3/qpid-jms-client/src/main/java/org/apache/qpid/jms/jndi/JmsInitialContextFactory.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/jndi/JmsInitialContextFactory.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/jndi/JmsInitialContextFactory.java index 4cc450e..479da71 100644 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/jndi/JmsInitialContextFactory.java +++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/jndi/JmsInitialContextFactory.java @@ -48,9 +48,11 @@ import org.apache.qpid.jms.JmsTopic; */ public class JmsInitialContextFactory implements InitialContextFactory { - private static final String[] DEFAULT_CONNECTION_FACTORY_NAMES = { + static final String[] DEFAULT_CONNECTION_FACTORY_NAMES = { "ConnectionFactory", "QueueConnectionFactory", "TopicConnectionFactory" }; + static final String DEFAULT_REMOTE_URI = "amqp://localhost:5672"; + private String connectionFactoryPrefix = "connectionfactory."; private String queuePrefix = "queue."; private String topicPrefix = "topic."; @@ -63,7 +65,7 @@ public class JmsInitialContextFactory implements InitialContextFactory { environmentCopy.putAll(environment); Map<String, Object> bindings = new ConcurrentHashMap<String, Object>(); - createConnectionFactories(environmentCopy, bindings); + createConnectionFactories(environmentCopy, DEFAULT_REMOTE_URI, bindings); createQueues(environmentCopy, bindings); createTopics(environmentCopy, bindings); @@ -91,13 +93,13 @@ public class JmsInitialContextFactory implements InitialContextFactory { return createContext(environmentCopy, bindings); } - private void createConnectionFactories(Hashtable<Object, Object> environment, Map<String, Object> bindings) throws NamingException { + private void createConnectionFactories(Hashtable<Object, Object> environment, String defaultRemoteURI, Map<String, Object> bindings) throws NamingException { List<String> names = getConnectionFactoryNames(environment); for (String name : names) { JmsConnectionFactory factory = null; try { - factory = createConnectionFactory(name, environment); + factory = createConnectionFactory(name, defaultRemoteURI, environment); } catch (Exception e) { throw new NamingException("Invalid ConnectionFactory definition"); } @@ -113,11 +115,17 @@ public class JmsInitialContextFactory implements InitialContextFactory { return new ReadOnlyContext(environment, bindings); } - protected JmsConnectionFactory createConnectionFactory(String name, Hashtable<Object, Object> environment) throws URISyntaxException { + protected JmsConnectionFactory createConnectionFactory(String name, String defaultRemoteURI, Hashtable<Object, Object> environment) throws URISyntaxException { String cfNameKey = connectionFactoryPrefix + name; Map<String, String> props = new LinkedHashMap<String, String>(); - props.put(JmsConnectionFactory.REMOTE_URI_PROP, String.valueOf(environment.get(cfNameKey))); + // Use the default URI if none is defined for this factory in the environment + String uri = defaultRemoteURI; + if (environment.containsKey(cfNameKey)) { + uri = String.valueOf(environment.get(cfNameKey)); + } + + props.put(JmsConnectionFactory.REMOTE_URI_PROP, uri); //TODO: support gathering up any other per-factory properties from the environment http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/683802d3/qpid-jms-client/src/test/java/org/apache/qpid/jms/jndi/JmsInitialContextFactoryTest.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/jndi/JmsInitialContextFactoryTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/jndi/JmsInitialContextFactoryTest.java index 9042d74..a4e9618 100644 --- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/jndi/JmsInitialContextFactoryTest.java +++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/jndi/JmsInitialContextFactoryTest.java @@ -44,6 +44,20 @@ public class JmsInitialContextFactoryTest extends QpidJmsTestCase { } @Test + public void testDefaultConnectionFactoriesPresentWithEmptyEnvironment() throws Exception { + Hashtable<Object, Object> env = new Hashtable<Object, Object>(); + Context ctx = createInitialContext(env); + + for (String factoryName : JmsInitialContextFactory.DEFAULT_CONNECTION_FACTORY_NAMES) { + Object o = ctx.lookup(factoryName); + + assertNotNull("No object returned", o); + assertEquals("Unexpected class type for returned object", JmsConnectionFactory.class, o.getClass()); + assertEquals("Unexpected URI for returned factory", ((JmsConnectionFactory) o).getRemoteURI(), JmsInitialContextFactory.DEFAULT_REMOTE_URI); + } + } + + @Test public void testConnectionFactoryBinding() throws Exception { String factoryName = "myNewFactory"; String uri = "amqp://example.com:1234"; --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
