You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2015/01/30 18:15:22 UTC

[01/13] qpid-jms git commit: rework factory definition to 'connectionfactory.lookup = uri', only pass through properties specific to that factory

Repository: qpid-jms
Updated Branches:
  refs/heads/master 5e219b819 -> dba3f1a38


rework factory definition to 'connectionfactory.lookup = uri', only pass through properties specific to that factory


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/47a83bc7
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/47a83bc7
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/47a83bc7

Branch: refs/heads/master
Commit: 47a83bc7d4908a8e702595a4c1329af7184bbeff
Parents: 5e219b8
Author: Robert Gemmell <ro...@apache.org>
Authored: Fri Jan 30 10:38:02 2015 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Fri Jan 30 10:38:02 2015 +0000

----------------------------------------------------------------------
 .../apache/qpid/jms/JmsConnectionFactory.java   |  3 +-
 .../qpid/jms/jndi/JmsInitialContextFactory.java | 76 ++++++++------------
 .../jms/jndi/JmsInitialContextFactoryTest.java  | 17 +++++
 3 files changed, 47 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/47a83bc7/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnectionFactory.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnectionFactory.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnectionFactory.java
index b44474c..789f2ae 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnectionFactory.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnectionFactory.java
@@ -49,7 +49,8 @@ public class JmsConnectionFactory extends JNDIStorable implements ConnectionFact
 
     private static final Logger LOG = LoggerFactory.getLogger(JmsConnectionFactory.class);
     private static final String CLIENT_ID_PROP = "clientID";
-    private static final String REMOTE_URI_PROP = "remoteURI";
+
+    public static final String REMOTE_URI_PROP = "remoteURI";
 
     private URI remoteURI;
     private String username;

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/47a83bc7/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 3d2a771..4cc450e 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
@@ -18,13 +18,13 @@ package org.apache.qpid.jms.jndi;
 
 import java.net.URISyntaxException;
 import java.util.ArrayList;
-import java.util.HashMap;
+import java.util.Arrays;
 import java.util.Hashtable;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
-import java.util.StringTokenizer;
 import java.util.concurrent.ConcurrentHashMap;
 
 import javax.jms.Queue;
@@ -92,15 +92,14 @@ public class JmsInitialContextFactory implements InitialContextFactory {
     }
 
     private void createConnectionFactories(Hashtable<Object, Object> environment, Map<String, Object> bindings) throws NamingException {
-        String[] names = getConnectionFactoryNames(environment);
-        for (int i = 0; i < names.length; i++) {
+        List<String> names = getConnectionFactoryNames(environment);
+        for (String name : names) {
             JmsConnectionFactory factory = null;
-            String name = names[i];
 
             try {
                 factory = createConnectionFactory(name, environment);
             } catch (Exception e) {
-                throw new NamingException("Invalid broker URL");
+                throw new NamingException("Invalid ConnectionFactory definition");
             }
 
             bindings.put(name, factory);
@@ -115,36 +114,33 @@ public class JmsInitialContextFactory implements InitialContextFactory {
     }
 
     protected JmsConnectionFactory createConnectionFactory(String name, Hashtable<Object, Object> environment) throws URISyntaxException {
-        Hashtable<Object, Object> temp = new Hashtable<Object, Object>(environment);
-        String prefix = connectionFactoryPrefix + name + ".";
+        String cfNameKey = connectionFactoryPrefix + name;
+        Map<String, String> props = new LinkedHashMap<String, String>();
+
+        props.put(JmsConnectionFactory.REMOTE_URI_PROP, String.valueOf(environment.get(cfNameKey)));
+
+        //TODO: support gathering up any other per-factory properties from the environment
+
+        return createConnectionFactory(props);
+    }
+
+    protected List<String> getConnectionFactoryNames(Map<Object, Object> environment) {
+        List<String> list = new ArrayList<String>();
         for (Iterator<Entry<Object, Object>> iter = environment.entrySet().iterator(); iter.hasNext();) {
             Map.Entry<Object, Object> entry = iter.next();
-            String key = (String) entry.getKey();
-            if (key.startsWith(prefix)) {
-                // Rename the key...
-                temp.remove(key);
-                key = key.substring(prefix.length());
-                temp.put(key, entry.getValue());
+            String key = String.valueOf(entry.getKey());
+            if (key.startsWith(connectionFactoryPrefix)) {
+                String jndiName = key.substring(connectionFactoryPrefix.length());
+                list.add(jndiName);
             }
         }
-        return createConnectionFactory(temp);
-    }
 
-    protected String[] getConnectionFactoryNames(Map<Object, Object> environment) {
-        String factoryNames = (String) environment.get("factories");
-        if (factoryNames != null) {
-            List<String> list = new ArrayList<String>();
-            for (StringTokenizer enumeration = new StringTokenizer(factoryNames, ","); enumeration.hasMoreTokens();) {
-                list.add(enumeration.nextToken().trim());
-            }
-            int size = list.size();
-            if (size > 0) {
-                String[] answer = new String[size];
-                list.toArray(answer);
-                return answer;
-            }
+        if(list.isEmpty())
+        {
+            list.addAll(Arrays.asList(DEFAULT_CONNECTION_FACTORY_NAMES));
         }
-        return DEFAULT_CONNECTION_FACTORY_NAMES;
+
+        return list;
     }
 
     protected void createQueues(Hashtable<Object, Object> environment, Map<String, Object> bindings) {
@@ -184,27 +180,11 @@ public class JmsInitialContextFactory implements InitialContextFactory {
     }
 
     /**
-     * Factory method to create a new connection factory from the given
-     * environment
+     * Factory method to create a new connection factory using the given properties
      */
-    protected JmsConnectionFactory createConnectionFactory(Hashtable<Object,Object> environment) throws URISyntaxException {
-        Map<String, String> properties = toMap(environment);
-
-        // Remove naming-related properties which relate to the
-        // InitialContextFactory implementation itself
-        properties.remove(Context.INITIAL_CONTEXT_FACTORY);
-        properties.remove(Context.PROVIDER_URL);
-
+    protected JmsConnectionFactory createConnectionFactory(Map<String, String> properties) throws URISyntaxException {
         JmsConnectionFactory factory = new JmsConnectionFactory();
         factory.setProperties(properties);
         return factory;
     }
-
-    public Map<String, String> toMap(Hashtable<Object, Object> props) {
-        Map<String, String> map = new HashMap<String, String>();
-        for (Map.Entry<Object, Object> entry : props.entrySet()) {
-            map.put(entry.getKey().toString(), entry.getValue().toString());
-        }
-        return map;
-    }
 }

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/47a83bc7/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 64a0925..9042d74 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
@@ -24,6 +24,7 @@ import javax.naming.Context;
 import javax.naming.NamingException;
 import javax.naming.OperationNotSupportedException;
 
+import org.apache.qpid.jms.JmsConnectionFactory;
 import org.apache.qpid.jms.JmsQueue;
 import org.apache.qpid.jms.JmsTopic;
 import org.apache.qpid.jms.test.QpidJmsTestCase;
@@ -43,6 +44,22 @@ public class JmsInitialContextFactoryTest extends QpidJmsTestCase {
     }
 
     @Test
+    public void testConnectionFactoryBinding() throws Exception {
+        String factoryName = "myNewFactory";
+        String uri = "amqp://example.com:1234";
+
+        Hashtable<Object, Object> env = new Hashtable<Object, Object>();
+        env.put("connectionfactory." + factoryName, uri);
+        Context ctx = createInitialContext(env);
+
+        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(), uri);
+    }
+
+    @Test
     public void testQueueBinding() throws Exception {
         String lookupName = "myLookupName";
         String actualName = "myQueueName";


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


[09/13] qpid-jms git commit: make the defaulting mechanism more general, applicable to any property

Posted by ro...@apache.org.
make the defaulting mechanism more general, applicable to any property


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/2459143f
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/2459143f
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/2459143f

Branch: refs/heads/master
Commit: 2459143f4c60da2389ae33437f155c410b0c5e84
Parents: 883f979
Author: Robert Gemmell <ro...@apache.org>
Authored: Fri Jan 30 13:00:23 2015 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Fri Jan 30 13:00:23 2015 +0000

----------------------------------------------------------------------
 .../qpid/jms/jndi/JmsInitialContextFactory.java | 43 +++++++++++++-------
 .../jms/jndi/JmsInitialContextFactoryTest.java  |  2 +-
 2 files changed, 29 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/2459143f/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 3620406..dbb222b 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
@@ -19,6 +19,7 @@ package org.apache.qpid.jms.jndi;
 import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
@@ -51,12 +52,12 @@ public class JmsInitialContextFactory implements InitialContextFactory {
     static final String[] DEFAULT_CONNECTION_FACTORY_NAMES = {
         "ConnectionFactory", "QueueConnectionFactory", "TopicConnectionFactory" };
 
-    static final String DEFAULT_REMOTE_URI_PROP = "defaultRemoteURI";
     static final String DEFAULT_REMOTE_URI = "amqp://localhost:5672";
 
     static final String CONNECTION_FACTORY_KEY_PREFIX = "connectionfactory.";
     static final String QUEUE_KEY_PREFIX = "queue.";
     static final String TOPIC_KEY_PREFIX = "topic.";
+    static final String CONNECTION_FACTORY_DEFAULT_KEY_PREFIX = "default." + CONNECTION_FACTORY_KEY_PREFIX;
 
     @SuppressWarnings("unchecked")
     @Override
@@ -65,13 +66,8 @@ public class JmsInitialContextFactory implements InitialContextFactory {
         Hashtable<Object, Object> environmentCopy = new Hashtable<Object, Object>();
         environmentCopy.putAll(environment);
 
-        String defaultRemoteURI = DEFAULT_REMOTE_URI;
-        if (environment.containsKey(DEFAULT_REMOTE_URI_PROP)) {
-            defaultRemoteURI = String.valueOf(environment.get(DEFAULT_REMOTE_URI_PROP));
-        }
-
         Map<String, Object> bindings = new ConcurrentHashMap<String, Object>();
-        createConnectionFactories(environmentCopy, defaultRemoteURI, bindings);
+        createConnectionFactories(environmentCopy, bindings);
         createQueues(environmentCopy, bindings);
         createTopics(environmentCopy, bindings);
 
@@ -99,13 +95,14 @@ public class JmsInitialContextFactory implements InitialContextFactory {
         return createContext(environmentCopy, bindings);
     }
 
-    private void createConnectionFactories(Hashtable<Object, Object> environment, String defaultRemoteURI, Map<String, Object> bindings) throws NamingException {
+    private void createConnectionFactories(Hashtable<Object, Object> environment, Map<String, Object> bindings) throws NamingException {
         List<String> names = getConnectionFactoryNames(environment);
+        Map<String, String> defaults = getConnectionFactoryDefaults(environment);
         for (String name : names) {
             JmsConnectionFactory factory = null;
 
             try {
-                factory = createConnectionFactory(name, defaultRemoteURI, environment);
+                factory = createConnectionFactory(name, defaults, environment);
             } catch (Exception e) {
                 throw new NamingException("Invalid ConnectionFactory definition");
             }
@@ -121,22 +118,22 @@ public class JmsInitialContextFactory implements InitialContextFactory {
         return new ReadOnlyContext(environment, bindings);
     }
 
-    protected JmsConnectionFactory createConnectionFactory(String name, String defaultRemoteURI, Hashtable<Object, Object> environment) throws URISyntaxException {
+    protected JmsConnectionFactory createConnectionFactory(String name, Map<String, String> defaults, Hashtable<Object, Object> environment) throws URISyntaxException {
         String cfNameKey = CONNECTION_FACTORY_KEY_PREFIX + name;
         Map<String, String> props = new LinkedHashMap<String, String>();
 
-        // Use the default URI if none is defined for this factory in the environment
-        String uri = defaultRemoteURI;
+        // Add the defaults which apply to all connection factories
+        props.putAll(defaults);
+
+        // Add any URI entry for this specific factory name
         Object o = environment.get(cfNameKey);
         if (o != null) {
             String value = String.valueOf(o);
             if (value.trim().length() != 0) {
-                uri = value;
+                props.put(JmsConnectionFactory.REMOTE_URI_PROP, value);
             }
         }
 
-        props.put(JmsConnectionFactory.REMOTE_URI_PROP, uri);
-
         //TODO: support gathering up any other per-factory properties from the environment
 
         return createConnectionFactory(props);
@@ -161,6 +158,22 @@ public class JmsInitialContextFactory implements InitialContextFactory {
         return list;
     }
 
+    protected Map<String, String> getConnectionFactoryDefaults(Map<Object, Object> environment) {
+        Map<String, String> map = new LinkedHashMap<String, String>();
+        map.put(JmsConnectionFactory.REMOTE_URI_PROP, DEFAULT_REMOTE_URI);
+
+        for (Iterator<Entry<Object, Object>> iter = environment.entrySet().iterator(); iter.hasNext();) {
+            Map.Entry<Object, Object> entry = iter.next();
+            String key = String.valueOf(entry.getKey());
+            if (key.startsWith(CONNECTION_FACTORY_DEFAULT_KEY_PREFIX)) {
+                String jndiName = key.substring(CONNECTION_FACTORY_DEFAULT_KEY_PREFIX.length());
+                map.put(jndiName, String.valueOf(entry.getValue()));
+            }
+        }
+
+        return Collections.unmodifiableMap(map);
+    }
+
     protected void createQueues(Hashtable<Object, Object> environment, Map<String, Object> bindings) {
         for (Iterator<Entry<Object, Object>> iter = environment.entrySet().iterator(); iter.hasNext();) {
             Map.Entry<Object, Object> entry = iter.next();

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/2459143f/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 6c3a5ae..b2132c5 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
@@ -63,7 +63,7 @@ public class JmsInitialContextFactoryTest extends QpidJmsTestCase {
         String updatedDefaultURI = "amqp://example.com:1234";
 
         Hashtable<Object, Object> env = new Hashtable<Object, Object>();
-        env.put(JmsInitialContextFactory.DEFAULT_REMOTE_URI_PROP, updatedDefaultURI);
+        env.put(JmsInitialContextFactory.CONNECTION_FACTORY_DEFAULT_KEY_PREFIX + JmsConnectionFactory.REMOTE_URI_PROP, updatedDefaultURI);
         Context ctx = createInitialContext(env);
 
         for (String factoryName : JmsInitialContextFactory.DEFAULT_CONNECTION_FACTORY_NAMES) {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


[10/13] qpid-jms git commit: fix argument order for test assertions

Posted by ro...@apache.org.
fix argument order for test assertions


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/4ad313d7
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/4ad313d7
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/4ad313d7

Branch: refs/heads/master
Commit: 4ad313d73a115fb4a60aee5c1b8a16b2dec528a0
Parents: 2459143
Author: Robert Gemmell <ro...@apache.org>
Authored: Fri Jan 30 13:04:43 2015 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Fri Jan 30 13:04:43 2015 +0000

----------------------------------------------------------------------
 .../jms/jndi/JmsInitialContextFactoryTest.java  | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/4ad313d7/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 b2132c5..3f1a63e 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
@@ -54,7 +54,7 @@ public class JmsInitialContextFactoryTest extends QpidJmsTestCase {
 
             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);
+            assertEquals("Unexpected URI for returned factory", JmsInitialContextFactory.DEFAULT_REMOTE_URI, ((JmsConnectionFactory) o).getRemoteURI());
         }
     }
 
@@ -71,7 +71,7 @@ public class JmsInitialContextFactoryTest extends QpidJmsTestCase {
 
             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(), updatedDefaultURI);
+            assertEquals("Unexpected URI for returned factory", updatedDefaultURI, ((JmsConnectionFactory) o).getRemoteURI());
         }
     }
 
@@ -104,7 +104,7 @@ public class JmsInitialContextFactoryTest extends QpidJmsTestCase {
 
         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(), uri);
+        assertEquals("Unexpected URI for returned factory", uri, ((JmsConnectionFactory) o).getRemoteURI());
     }
 
     @Test
@@ -128,7 +128,7 @@ public class JmsInitialContextFactoryTest extends QpidJmsTestCase {
 
         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);
+        assertEquals("Unexpected URI for returned factory", JmsInitialContextFactory.DEFAULT_REMOTE_URI, ((JmsConnectionFactory) o).getRemoteURI());
     }
 
     @Test
@@ -144,7 +144,7 @@ public class JmsInitialContextFactoryTest extends QpidJmsTestCase {
 
         assertNotNull("No object returned", o);
         assertEquals("Unexpected class type for returned object", JmsQueue.class, o.getClass());
-        assertEquals("Unexpected name for returned object", ((JmsQueue) o).getQueueName(), actualName);
+        assertEquals("Unexpected name for returned object", actualName, ((JmsQueue) o).getQueueName());
     }
 
     @Test
@@ -157,7 +157,7 @@ public class JmsInitialContextFactoryTest extends QpidJmsTestCase {
 
         assertNotNull("No object returned", o);
         assertEquals("Unexpected class type for returned object", JmsQueue.class, o.getClass());
-        assertEquals("Unexpected name for returned object", ((JmsQueue) o).getQueueName(), actualName);
+        assertEquals("Unexpected name for returned object", actualName, ((JmsQueue) o).getQueueName());
     }
 
     @Test
@@ -173,7 +173,7 @@ public class JmsInitialContextFactoryTest extends QpidJmsTestCase {
 
         assertNotNull("No object returned", o);
         assertEquals("Unexpected class type for returned object", JmsTopic.class, o.getClass());
-        assertEquals("Unexpected name for returned object", ((JmsTopic) o).getTopicName(), actualName);
+        assertEquals("Unexpected name for returned object", actualName, ((JmsTopic) o).getTopicName());
     }
 
     @Test
@@ -186,7 +186,7 @@ public class JmsInitialContextFactoryTest extends QpidJmsTestCase {
 
         assertNotNull("No object returned", o);
         assertEquals("Unexpected class type for returned object", JmsTopic.class, o.getClass());
-        assertEquals("Unexpected name for returned object", ((JmsTopic) o).getTopicName(), actualName);
+        assertEquals("Unexpected name for returned object", actualName, ((JmsTopic) o).getTopicName());
     }
 
     @Test
@@ -202,7 +202,7 @@ public class JmsInitialContextFactoryTest extends QpidJmsTestCase {
 
         assertNotNull("No object returned", o);
         assertEquals("Unexpected class type for returned object", JmsQueue.class, o.getClass());
-        assertEquals("Unexpected name for returned object", ((JmsQueue) o).getQueueName(), actualName);
+        assertEquals("Unexpected name for returned object", actualName, ((JmsQueue) o).getQueueName());
     }
 
     @Test
@@ -218,7 +218,7 @@ public class JmsInitialContextFactoryTest extends QpidJmsTestCase {
 
         assertNotNull("No object returned", o);
         assertEquals("Unexpected class type for returned object", JmsTopic.class, o.getClass());
-        assertEquals("Unexpected name for returned object", ((JmsTopic) o).getTopicName(), actualName);
+        assertEquals("Unexpected name for returned object", actualName, ((JmsTopic) o).getTopicName());
     }
 
     @Test(expected = OperationNotSupportedException.class)


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


[06/13] qpid-jms git commit: make prefixes constants

Posted by ro...@apache.org.
make prefixes constants


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/b338b5a1
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/b338b5a1
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/b338b5a1

Branch: refs/heads/master
Commit: b338b5a1da4180843eea72a435c73ede2cab650e
Parents: af766dc
Author: Robert Gemmell <ro...@apache.org>
Authored: Fri Jan 30 11:33:45 2015 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Fri Jan 30 11:33:45 2015 +0000

----------------------------------------------------------------------
 .../qpid/jms/jndi/JmsInitialContextFactory.java | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/b338b5a1/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 19515a8..c878e4c 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
@@ -54,9 +54,9 @@ public class JmsInitialContextFactory implements InitialContextFactory {
     static final String DEFAULT_REMOTE_URI_PROP = "defaultRemoteURI";
     static final String DEFAULT_REMOTE_URI = "amqp://localhost:5672";
 
-    private String connectionFactoryPrefix = "connectionfactory.";
-    private String queuePrefix = "queue.";
-    private String topicPrefix = "topic.";
+    static final String CONNECTION_FACTORY_KEY_PREFIX = "connectionfactory.";
+    static final String QUEUE_KEY_PREFIX = "queue.";
+    static final String TOPIC_KEY_PREFIX = "topic.";
 
     @SuppressWarnings("unchecked")
     @Override
@@ -122,7 +122,7 @@ public class JmsInitialContextFactory implements InitialContextFactory {
     }
 
     protected JmsConnectionFactory createConnectionFactory(String name, String defaultRemoteURI, Hashtable<Object, Object> environment) throws URISyntaxException {
-        String cfNameKey = connectionFactoryPrefix + name;
+        String cfNameKey = CONNECTION_FACTORY_KEY_PREFIX + name;
         Map<String, String> props = new LinkedHashMap<String, String>();
 
         // Use the default URI if none is defined for this factory in the environment
@@ -143,8 +143,8 @@ public class JmsInitialContextFactory implements InitialContextFactory {
         for (Iterator<Entry<Object, Object>> iter = environment.entrySet().iterator(); iter.hasNext();) {
             Map.Entry<Object, Object> entry = iter.next();
             String key = String.valueOf(entry.getKey());
-            if (key.startsWith(connectionFactoryPrefix)) {
-                String jndiName = key.substring(connectionFactoryPrefix.length());
+            if (key.startsWith(CONNECTION_FACTORY_KEY_PREFIX)) {
+                String jndiName = key.substring(CONNECTION_FACTORY_KEY_PREFIX.length());
                 list.add(jndiName);
             }
         }
@@ -161,8 +161,8 @@ public class JmsInitialContextFactory implements InitialContextFactory {
         for (Iterator<Entry<Object, Object>> iter = environment.entrySet().iterator(); iter.hasNext();) {
             Map.Entry<Object, Object> entry = iter.next();
             String key = entry.getKey().toString();
-            if (key.startsWith(queuePrefix)) {
-                String jndiName = key.substring(queuePrefix.length());
+            if (key.startsWith(QUEUE_KEY_PREFIX)) {
+                String jndiName = key.substring(QUEUE_KEY_PREFIX.length());
                 bindings.put(jndiName, createQueue(entry.getValue().toString()));
             }
         }
@@ -172,8 +172,8 @@ public class JmsInitialContextFactory implements InitialContextFactory {
         for (Iterator<Entry<Object, Object>> iter = environment.entrySet().iterator(); iter.hasNext();) {
             Map.Entry<Object, Object> entry = iter.next();
             String key = entry.getKey().toString();
-            if (key.startsWith(topicPrefix)) {
-                String jndiName = key.substring(topicPrefix.length());
+            if (key.startsWith(TOPIC_KEY_PREFIX)) {
+                String jndiName = key.substring(TOPIC_KEY_PREFIX.length());
                 bindings.put(jndiName, createTopic(entry.getValue().toString()));
             }
         }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


[05/13] qpid-jms git commit: verify that the default factories go away when others are explicitly defined

Posted by ro...@apache.org.
verify that the default factories go away when others are explicitly defined


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/af766dcb
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/af766dcb
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/af766dcb

Branch: refs/heads/master
Commit: af766dcb853d3e10ad58c3e9ad4d47b7af979097
Parents: da3beb4
Author: Robert Gemmell <ro...@apache.org>
Authored: Fri Jan 30 11:29:47 2015 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Fri Jan 30 11:29:47 2015 +0000

----------------------------------------------------------------------
 .../jms/jndi/JmsInitialContextFactoryTest.java     | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/af766dcb/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 5b4e23e..13a0d2f 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
@@ -21,6 +21,7 @@ import static org.junit.Assert.*;
 import java.util.Hashtable;
 
 import javax.naming.Context;
+import javax.naming.NameNotFoundException;
 import javax.naming.NamingException;
 import javax.naming.OperationNotSupportedException;
 
@@ -75,6 +76,22 @@ public class JmsInitialContextFactoryTest extends QpidJmsTestCase {
     }
 
     @Test
+    public void testDefaultConnectionFactoriesNotPresentWhenOneIsExplicitlyDefined() throws Exception {
+        Hashtable<Object, Object> env = new Hashtable<Object, Object>();
+        env.put("connectionfactory.myNewFactory", "amqp://example.com:1234");
+        Context ctx = createInitialContext(env);
+
+        for (String factoryName : JmsInitialContextFactory.DEFAULT_CONNECTION_FACTORY_NAMES) {
+            try {
+                ctx.lookup(factoryName);
+                fail("should have thrown exception due to name not being found");
+            } catch (NameNotFoundException nnfe) {
+                // //expected
+            }
+        }
+    }
+
+    @Test
     public void testConnectionFactoryBinding() throws Exception {
         String factoryName = "myNewFactory";
         String uri = "amqp://example.com:1234";


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


[13/13] qpid-jms git commit: fixup checks and updated exception messages to inidcate which options could not be applied

Posted by ro...@apache.org.
fixup checks and updated exception messages to inidcate which options could not be applied


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/dba3f1a3
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/dba3f1a3
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/dba3f1a3

Branch: refs/heads/master
Commit: dba3f1a3846d09a53dad21e9cabbecfbaeb593b0
Parents: 7f59db6
Author: Robert Gemmell <ro...@apache.org>
Authored: Fri Jan 30 17:00:19 2015 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Fri Jan 30 17:08:57 2015 +0000

----------------------------------------------------------------------
 .../java/org/apache/qpid/jms/JmsConnectionFactory.java    | 10 ++++++----
 .../qpid/jms/provider/amqp/AmqpProviderFactory.java       |  5 +++--
 .../jms/provider/failover/FailoverProviderFactory.java    |  5 +++--
 .../org/apache/qpid/jms/transports/TransportFactory.java  |  5 +++--
 4 files changed, 15 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/dba3f1a3/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnectionFactory.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnectionFactory.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnectionFactory.java
index 789f2ae..21c3eaf 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnectionFactory.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnectionFactory.java
@@ -318,11 +318,12 @@ public class JmsConnectionFactory extends JNDIStorable implements ConnectionFact
                 Map<String, String> map = PropertyUtil.parseQuery(this.remoteURI.getQuery());
                 Map<String, String> jmsOptionsMap = PropertyUtil.filterProperties(map, "jms.");
 
-                if (!PropertyUtil.setProperties(this, jmsOptionsMap)) {
+                Map<String, String> unused = PropertyUtil.setProperties(this, jmsOptionsMap);
+                if (!unused.isEmpty()) {
                     String msg = ""
                         + " Not all jms options could be set on the ConnectionFactory."
                         + " Check the options are spelled correctly."
-                        + " Given parameters=[" + jmsOptionsMap + "]."
+                        + " Unused parameters=[" + unused + "]."
                         + " This connection factory cannot be started.";
                     throw new IllegalArgumentException(msg);
                 } else {
@@ -331,11 +332,12 @@ public class JmsConnectionFactory extends JNDIStorable implements ConnectionFact
             } else if (URISupport.isCompositeURI(this.remoteURI)) {
                 CompositeData data = URISupport.parseComposite(this.remoteURI);
                 Map<String, String> jmsOptionsMap = PropertyUtil.filterProperties(data.getParameters(), "jms.");
-                if (!PropertyUtil.setProperties(this, jmsOptionsMap)) {
+                Map<String, String> unused = PropertyUtil.setProperties(this, jmsOptionsMap);
+                if (!unused.isEmpty()) {
                     String msg = ""
                         + " Not all jms options could be set on the ConnectionFactory."
                         + " Check the options are spelled correctly."
-                        + " Given parameters=[" + jmsOptionsMap + "]."
+                        + " Unused parameters=[" + unused + "]."
                         + " This connection factory cannot be started.";
                     throw new IllegalArgumentException(msg);
                 } else {

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/dba3f1a3/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProviderFactory.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProviderFactory.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProviderFactory.java
index 814b6c9..9fa8998 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProviderFactory.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProviderFactory.java
@@ -44,11 +44,12 @@ public class AmqpProviderFactory extends ProviderFactory {
 
         result.setTransportType(getTransportType());
 
-        if (!PropertyUtil.setProperties(result, providerOptions)) {
+        Map<String, String> unused = PropertyUtil.setProperties(result, providerOptions);
+        if (!unused.isEmpty()) {
             String msg = ""
                 + " Not all provider options could be set on the AMQP Provider."
                 + " Check the options are spelled correctly."
-                + " Given parameters=[" + providerOptions + "]."
+                + " Unused parameters=[" + unused + "]."
                 + " This provider instance cannot be started.";
             throw new IllegalArgumentException(msg);
         }

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/dba3f1a3/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/failover/FailoverProviderFactory.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/failover/FailoverProviderFactory.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/failover/FailoverProviderFactory.java
index a0be3ec..1b02dd9 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/failover/FailoverProviderFactory.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/failover/FailoverProviderFactory.java
@@ -37,11 +37,12 @@ public class FailoverProviderFactory extends ProviderFactory {
         Map<String, String> nested = PropertyUtil.filterProperties(options, "nested.");
 
         FailoverProvider provider = new FailoverProvider(composite.getComponents(), nested);
-        if (!PropertyUtil.setProperties(provider, options)) {
+        Map<String, String> unused = PropertyUtil.setProperties(provider, options);
+        if (!unused.isEmpty()) {
             String msg = ""
                 + " Not all options could be set on the Failover provider."
                 + " Check the options are spelled correctly."
-                + " Given parameters=[" + options + "]."
+                + " Unused parameters=[" + unused + "]."
                 + " This Provider cannot be started.";
             throw new IllegalArgumentException(msg);
         }

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/dba3f1a3/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/TransportFactory.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/TransportFactory.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/TransportFactory.java
index da0c4f5..2f0a4e7 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/TransportFactory.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/TransportFactory.java
@@ -55,10 +55,11 @@ public abstract class TransportFactory {
 
         TransportOptions transportOptions = doCreateTransportOptions();
 
-        if (!PropertyUtil.setProperties(transportOptions, transportURIOptions)) {
+        Map<String, String> unused = PropertyUtil.setProperties(transportOptions, transportURIOptions);
+        if (!unused.isEmpty()) {
             String msg = " Not all transport options could be set on the " + getName() +
                          " Transport. Check the options are spelled correctly." +
-                         " Given parameters=[" + transportURIOptions + "]." +
+                         " Unused parameters=[" + unused + "]." +
                          " This provider instance cannot be started.";
             throw new IllegalArgumentException(msg);
         }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


[03/13] qpid-jms git commit: add a default URI for use with the default connection factories

Posted by ro...@apache.org.
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 <ro...@apache.org>
Authored: Fri Jan 30 10:51:41 2015 +0000
Committer: Robert Gemmell <ro...@apache.org>
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: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


[04/13] qpid-jms git commit: make the default factory URI configurable

Posted by ro...@apache.org.
make the default factory URI configurable


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/da3beb4f
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/da3beb4f
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/da3beb4f

Branch: refs/heads/master
Commit: da3beb4f87d3d898841c56b6850e2685051dbf87
Parents: 683802d
Author: Robert Gemmell <ro...@apache.org>
Authored: Fri Jan 30 10:54:48 2015 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Fri Jan 30 10:54:48 2015 +0000

----------------------------------------------------------------------
 .../qpid/jms/jndi/JmsInitialContextFactory.java    |  8 +++++++-
 .../jms/jndi/JmsInitialContextFactoryTest.java     | 17 +++++++++++++++++
 2 files changed, 24 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/da3beb4f/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 479da71..19515a8 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
@@ -51,6 +51,7 @@ public class JmsInitialContextFactory implements InitialContextFactory {
     static final String[] DEFAULT_CONNECTION_FACTORY_NAMES = {
         "ConnectionFactory", "QueueConnectionFactory", "TopicConnectionFactory" };
 
+    static final String DEFAULT_REMOTE_URI_PROP = "defaultRemoteURI";
     static final String DEFAULT_REMOTE_URI = "amqp://localhost:5672";
 
     private String connectionFactoryPrefix = "connectionfactory.";
@@ -64,8 +65,13 @@ public class JmsInitialContextFactory implements InitialContextFactory {
         Hashtable<Object, Object> environmentCopy = new Hashtable<Object, Object>();
         environmentCopy.putAll(environment);
 
+        String defaultRemoteURI = DEFAULT_REMOTE_URI;
+        if (environment.containsKey(DEFAULT_REMOTE_URI_PROP)) {
+            defaultRemoteURI = String.valueOf(environment.get(DEFAULT_REMOTE_URI_PROP));
+        }
+
         Map<String, Object> bindings = new ConcurrentHashMap<String, Object>();
-        createConnectionFactories(environmentCopy, DEFAULT_REMOTE_URI, bindings);
+        createConnectionFactories(environmentCopy, defaultRemoteURI, bindings);
         createQueues(environmentCopy, bindings);
         createTopics(environmentCopy, bindings);
 

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/da3beb4f/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 a4e9618..5b4e23e 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
@@ -58,6 +58,23 @@ public class JmsInitialContextFactoryTest extends QpidJmsTestCase {
     }
 
     @Test
+    public void testDefaultConnectionFactoriesSeeDefaultURIUpdate() throws Exception {
+        String updatedDefaultURI = "amqp://example.com:1234";
+
+        Hashtable<Object, Object> env = new Hashtable<Object, Object>();
+        env.put(JmsInitialContextFactory.DEFAULT_REMOTE_URI_PROP, updatedDefaultURI);
+        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(), updatedDefaultURI);
+        }
+    }
+
+    @Test
     public void testConnectionFactoryBinding() throws Exception {
         String factoryName = "myNewFactory";
         String uri = "amqp://example.com:1234";


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


[07/13] qpid-jms git commit: update test to use new constants

Posted by ro...@apache.org.
update test to use new constants


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/7448bbc8
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/7448bbc8
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/7448bbc8

Branch: refs/heads/master
Commit: 7448bbc8aad2f9ef1dddb152bda7e412590c38b1
Parents: b338b5a
Author: Robert Gemmell <ro...@apache.org>
Authored: Fri Jan 30 11:42:42 2015 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Fri Jan 30 11:42:42 2015 +0000

----------------------------------------------------------------------
 .../qpid/jms/jndi/JmsInitialContextFactoryTest.java     | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/7448bbc8/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 13a0d2f..bdf7379 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
@@ -78,7 +78,7 @@ public class JmsInitialContextFactoryTest extends QpidJmsTestCase {
     @Test
     public void testDefaultConnectionFactoriesNotPresentWhenOneIsExplicitlyDefined() throws Exception {
         Hashtable<Object, Object> env = new Hashtable<Object, Object>();
-        env.put("connectionfactory.myNewFactory", "amqp://example.com:1234");
+        env.put(JmsInitialContextFactory.CONNECTION_FACTORY_KEY_PREFIX + "myNewFactory", "amqp://example.com:1234");
         Context ctx = createInitialContext(env);
 
         for (String factoryName : JmsInitialContextFactory.DEFAULT_CONNECTION_FACTORY_NAMES) {
@@ -97,7 +97,7 @@ public class JmsInitialContextFactoryTest extends QpidJmsTestCase {
         String uri = "amqp://example.com:1234";
 
         Hashtable<Object, Object> env = new Hashtable<Object, Object>();
-        env.put("connectionfactory." + factoryName, uri);
+        env.put(JmsInitialContextFactory.CONNECTION_FACTORY_KEY_PREFIX + factoryName, uri);
         Context ctx = createInitialContext(env);
 
         Object o = ctx.lookup(factoryName);
@@ -113,7 +113,7 @@ public class JmsInitialContextFactoryTest extends QpidJmsTestCase {
         String actualName = "myQueueName";
 
         Hashtable<Object, Object> env = new Hashtable<Object, Object>();
-        env.put("queue." + lookupName, actualName);
+        env.put(JmsInitialContextFactory.QUEUE_KEY_PREFIX + lookupName, actualName);
 
         Context ctx = createInitialContext(env);
         Object o = ctx.lookup(lookupName);
@@ -142,7 +142,7 @@ public class JmsInitialContextFactoryTest extends QpidJmsTestCase {
         String actualName = "myTopicName";
 
         Hashtable<Object, Object> env = new Hashtable<Object, Object>();
-        env.put("topic." + lookupName, actualName);
+        env.put(JmsInitialContextFactory.TOPIC_KEY_PREFIX + lookupName, actualName);
 
         Context ctx = createInitialContext(env);
         Object o = ctx.lookup(lookupName);
@@ -171,7 +171,7 @@ public class JmsInitialContextFactoryTest extends QpidJmsTestCase {
         String actualName = "myQueueName";
 
         Hashtable<Object, Object> env = new Hashtable<Object, Object>();
-        env.put("queue." + lookupName, actualName);
+        env.put(JmsInitialContextFactory.QUEUE_KEY_PREFIX + lookupName, actualName);
 
         Context ctx = createInitialContext(env);
         Object o = ctx.lookup(lookupName);
@@ -187,7 +187,7 @@ public class JmsInitialContextFactoryTest extends QpidJmsTestCase {
         String actualName = "myTopicName";
 
         Hashtable<Object, Object> env = new Hashtable<Object, Object>();
-        env.put("topic." + lookupName, actualName);
+        env.put(JmsInitialContextFactory.TOPIC_KEY_PREFIX + lookupName, actualName);
 
         Context ctx = createInitialContext(env);
         Object o = ctx.lookup(lookupName);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


[02/13] qpid-jms git commit: test that a bad option in the URI results in failure when using setProperties containing the remoteURI property

Posted by ro...@apache.org.
test that a bad option in the URI results in failure when using setProperties containing the remoteURI property


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/72a52216
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/72a52216
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/72a52216

Branch: refs/heads/master
Commit: 72a52216cf4145ee8fb3870741a24a4e54f1fadb
Parents: 47a83bc
Author: Robert Gemmell <ro...@apache.org>
Authored: Fri Jan 30 10:39:44 2015 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Fri Jan 30 10:39:44 2015 +0000

----------------------------------------------------------------------
 .../apache/qpid/jms/JmsConnectionFactoryTest.java    | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/72a52216/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsConnectionFactoryTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsConnectionFactoryTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsConnectionFactoryTest.java
index 927834b..6504317 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsConnectionFactoryTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsConnectionFactoryTest.java
@@ -134,6 +134,21 @@ public class JmsConnectionFactoryTest extends QpidJmsTestCase {
     }
 
     @Test
+    public void testSetPropertiesWithBadUriOptionCausesFail() throws Exception {
+        JmsConnectionFactory cf = new JmsConnectionFactory();
+
+        Map<String, String> props = new HashMap<String, String>();
+        props.put("remoteURI", "amqp://localhost:1234?jms.badOption=true");
+
+        try {
+            cf.setProperties(props);
+            fail("Should have thrown exception");
+        } catch (IllegalArgumentException iae) {
+            // expected
+        }
+    }
+
+    @Test
     public void testGetProperties() throws Exception {
         String clientID = getTestName();
         String queuePrefix = "q:";


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


[08/13] qpid-jms git commit: allow defining explicitly named factories that still use the default uri

Posted by ro...@apache.org.
allow defining explicitly named factories that still use the default uri


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/883f979b
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/883f979b
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/883f979b

Branch: refs/heads/master
Commit: 883f979bc7d2833d50e2057148dcd48dc64fa7b4
Parents: 7448bbc
Author: Robert Gemmell <ro...@apache.org>
Authored: Fri Jan 30 12:03:06 2015 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Fri Jan 30 12:03:06 2015 +0000

----------------------------------------------------------------------
 .../qpid/jms/jndi/JmsInitialContextFactory.java |  8 +++++--
 .../jms/jndi/JmsInitialContextFactoryTest.java  | 24 ++++++++++++++++++++
 2 files changed, 30 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/883f979b/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 c878e4c..3620406 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
@@ -127,8 +127,12 @@ public class JmsInitialContextFactory implements InitialContextFactory {
 
         // 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));
+        Object o = environment.get(cfNameKey);
+        if (o != null) {
+            String value = String.valueOf(o);
+            if (value.trim().length() != 0) {
+                uri = value;
+            }
         }
 
         props.put(JmsConnectionFactory.REMOTE_URI_PROP, uri);

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/883f979b/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 bdf7379..6c3a5ae 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
@@ -108,6 +108,30 @@ public class JmsInitialContextFactoryTest extends QpidJmsTestCase {
     }
 
     @Test
+    public void testConnectionFactoryBindingUsesDefaultURIWhenEmpty() throws Exception {
+        doConnectionFactoryBindingUsesDefaultURITestImpl("");
+    }
+
+    @Test
+    public void testConnectionFactoryBindingUsesDefaultURIWhenNull() throws Exception {
+        doConnectionFactoryBindingUsesDefaultURITestImpl("");
+    }
+
+    private void doConnectionFactoryBindingUsesDefaultURITestImpl(String uriPropertyValue) throws NamingException {
+        String factoryName = "myNewFactory";
+
+        Hashtable<Object, Object> env = new Hashtable<Object, Object>();
+        env.put(JmsInitialContextFactory.CONNECTION_FACTORY_KEY_PREFIX + factoryName, uriPropertyValue);
+        Context ctx = createInitialContext(env);
+
+        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 testQueueBinding() throws Exception {
         String lookupName = "myLookupName";
         String actualName = "myQueueName";


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


[12/13] qpid-jms git commit: return a map containing any unused properties from the method

Posted by ro...@apache.org.
return a map containing any unused properties from the  method


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/7f59db6e
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/7f59db6e
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/7f59db6e

Branch: refs/heads/master
Commit: 7f59db6e982d3ac41fbc2db33fbfb9670309cc93
Parents: 4bf63bd
Author: Robert Gemmell <ro...@apache.org>
Authored: Fri Jan 30 16:50:34 2015 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Fri Jan 30 17:08:57 2015 +0000

----------------------------------------------------------------------
 .../org/apache/qpid/jms/util/PropertyUtil.java  | 22 +++++++++++---------
 .../apache/qpid/jms/util/PropertyUtilTest.java  |  7 +++++--
 2 files changed, 17 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/7f59db6e/qpid-jms-client/src/main/java/org/apache/qpid/jms/util/PropertyUtil.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/util/PropertyUtil.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/util/PropertyUtil.java
index 4abb778..e4aef66 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/util/PropertyUtil.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/util/PropertyUtil.java
@@ -261,7 +261,7 @@ public class PropertyUtil {
      *
      * @param uri
      *        The URI value to append the object properties to.
-     * @param bean
+     * @param properties
      *        The Object whose properties will be added to the target URI.
      *
      * @return a new String value that is the original URI with the added bean properties.
@@ -277,7 +277,7 @@ public class PropertyUtil {
      *
      * @param uri
      *        The string URI value to append the object properties to.
-     * @param bean
+     * @param properties
      *        The properties that will be added to the target URI.
      *
      * @return a new String value that is the original URI with the added properties.
@@ -311,8 +311,8 @@ public class PropertyUtil {
     }
 
     /**
-     * Set properties on an object using the provided map. The return value indicates if all
-     * properties from the given map were set on the target object.
+     * Set properties on an object using the provided map. The return value
+     * indicates if all properties from the given map were set on the target object.
      *
      * @param target
      *        the object whose properties are to be set from the map options.
@@ -321,7 +321,7 @@ public class PropertyUtil {
      *
      * @return true if all values in the properties map were applied to the target object.
      */
-    public static boolean setProperties(Object target, Map<String, String> properties) {
+    public static Map<String, String> setProperties(Object target, Map<String, String> properties) {
         if (target == null) {
             throw new IllegalArgumentException("target object cannot be null");
         }
@@ -329,24 +329,26 @@ public class PropertyUtil {
             throw new IllegalArgumentException("Given Properties object cannot be null");
         }
 
-        int setCounter = 0;
+        Map<String, String> unmatched = new HashMap<String, String>();
 
         for (Map.Entry<String, String> entry : properties.entrySet()) {
-            if (setProperty(target, entry.getKey(), entry.getValue())) {
-                setCounter++;
+            if (!setProperty(target, entry.getKey(), entry.getValue())) {
+                unmatched.put((String) entry.getKey(), entry.getValue());
             }
         }
 
-        return setCounter == properties.size();
+        return Collections.unmodifiableMap(unmatched);
     }
 
+    //TODO: common impl for above and below methods.
+
     /**
      * Set properties on an object using the provided Properties object. The return value
      * indicates if all properties from the given map were set on the target object.
      *
      * @param target
      *        the object whose properties are to be set from the map options.
-     * @param props
+     * @param properties
      *        the properties that should be applied to the given object.
      *
      * @return an unmodifiable map with any values that could not be applied to the target.

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/7f59db6e/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/PropertyUtilTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/PropertyUtilTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/PropertyUtilTest.java
index c75914c..72b4eb2 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/PropertyUtilTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/PropertyUtilTest.java
@@ -424,7 +424,7 @@ public class PropertyUtilTest {
         properties.put("firstName", "foo");
         properties.put("lastName", "bar");
 
-        assertTrue(PropertyUtil.setProperties(configObject, properties));
+        assertTrue(PropertyUtil.setProperties(configObject, properties).isEmpty());
 
         assertEquals("foo", configObject.getFirstName());
         assertEquals("bar", configObject.getLastName());
@@ -453,7 +453,10 @@ public class PropertyUtilTest {
         properties.put("lastName", "bar");
         properties.put("unused", "absent");
 
-        assertFalse(PropertyUtil.setProperties(configObject, properties));
+        Map<String, String> result = PropertyUtil.setProperties(configObject, properties);
+
+        assertFalse(result.isEmpty());
+        assertTrue(result.containsKey("unused"));
 
         assertEquals("foo", configObject.getFirstName());
         assertEquals("bar", configObject.getLastName());


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


[11/13] qpid-jms git commit: add ability to specify factory specific properties outwith the potentially-defaulted URI

Posted by ro...@apache.org.
add ability to specify factory specific properties outwith the potentially-defaulted URI


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/4bf63bdf
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/4bf63bdf
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/4bf63bdf

Branch: refs/heads/master
Commit: 4bf63bdf3934ea2defda1d0a2b41515b9d2c14b0
Parents: 4ad313d
Author: Robert Gemmell <ro...@apache.org>
Authored: Fri Jan 30 15:25:34 2015 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Fri Jan 30 15:28:55 2015 +0000

----------------------------------------------------------------------
 .../qpid/jms/jndi/JmsInitialContextFactory.java | 21 +++++++++++++++++++-
 .../jms/jndi/JmsInitialContextFactoryTest.java  | 18 +++++++++++++++++
 2 files changed, 38 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/4bf63bdf/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 dbb222b..42c4e32 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
@@ -58,6 +58,7 @@ public class JmsInitialContextFactory implements InitialContextFactory {
     static final String QUEUE_KEY_PREFIX = "queue.";
     static final String TOPIC_KEY_PREFIX = "topic.";
     static final String CONNECTION_FACTORY_DEFAULT_KEY_PREFIX = "default." + CONNECTION_FACTORY_KEY_PREFIX;
+    static final String CONNECTION_FACTORY_PROPERTY_KEY_PREFIX = "property." + CONNECTION_FACTORY_KEY_PREFIX;
 
     @SuppressWarnings("unchecked")
     @Override
@@ -134,7 +135,8 @@ public class JmsInitialContextFactory implements InitialContextFactory {
             }
         }
 
-        //TODO: support gathering up any other per-factory properties from the environment
+        // Add any factory-specific additional properties
+        props.putAll(getConnectionFactoryProperties(name, environment));
 
         return createConnectionFactory(props);
     }
@@ -174,6 +176,23 @@ public class JmsInitialContextFactory implements InitialContextFactory {
         return Collections.unmodifiableMap(map);
     }
 
+    protected Map<String, String> getConnectionFactoryProperties(String factoryName, Map<Object, Object> environment) {
+        Map<String, String> map = new LinkedHashMap<String, String>();
+
+        String factoryPropertiesPrefix = CONNECTION_FACTORY_PROPERTY_KEY_PREFIX + factoryName + ".";
+
+        for (Iterator<Entry<Object, Object>> iter = environment.entrySet().iterator(); iter.hasNext();) {
+            Map.Entry<Object, Object> entry = iter.next();
+            String key = String.valueOf(entry.getKey());
+            if (key.startsWith(factoryPropertiesPrefix)) {
+                String propertyName = key.substring(factoryPropertiesPrefix.length());
+                map.put(propertyName, String.valueOf(entry.getValue()));
+            }
+        }
+
+        return map;
+    }
+
     protected void createQueues(Hashtable<Object, Object> environment, Map<String, Object> bindings) {
         for (Iterator<Entry<Object, Object>> iter = environment.entrySet().iterator(); iter.hasNext();) {
             Map.Entry<Object, Object> entry = iter.next();

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/4bf63bdf/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 3f1a63e..f22bf2e 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
@@ -76,6 +76,24 @@ public class JmsInitialContextFactoryTest extends QpidJmsTestCase {
     }
 
     @Test
+    public void testDefaultConnectionFactorySeesFactorySpecificProperty() throws Exception {
+        String updatedClientID = _testName.getMethodName();
+
+        String factoryName = JmsInitialContextFactory.DEFAULT_CONNECTION_FACTORY_NAMES[0];
+        String propertyPrefix = JmsInitialContextFactory.CONNECTION_FACTORY_PROPERTY_KEY_PREFIX;
+
+        Hashtable<Object, Object> env = new Hashtable<Object, Object>();
+        env.put(propertyPrefix + factoryName + "." + "clientID", updatedClientID);
+        Context ctx = createInitialContext(env);
+
+        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", updatedClientID, ((JmsConnectionFactory) o).getClientID());
+    }
+
+    @Test
     public void testDefaultConnectionFactoriesNotPresentWhenOneIsExplicitlyDefined() throws Exception {
         Hashtable<Object, Object> env = new Hashtable<Object, Object>();
         env.put(JmsInitialContextFactory.CONNECTION_FACTORY_KEY_PREFIX + "myNewFactory", "amqp://example.com:1234");


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org