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]

Reply via email to