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/20 15:40:47 UTC

[6/9] qpid-jms git commit: ensure we dont reference/modify the initial environment map, create our own copy and use that

ensure we dont reference/modify the initial environment map, create our own copy and use that


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

Branch: refs/heads/master
Commit: 3c27692b4038cf651dfca1a8892c09c3ba9985a2
Parents: 0a10bab
Author: Robert Gemmell <ro...@apache.org>
Authored: Tue Jan 20 12:23:01 2015 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Tue Jan 20 12:40:08 2015 +0000

----------------------------------------------------------------------
 .../qpid/jms/jndi/JmsInitialContextFactory.java | 43 ++++++++++++--------
 1 file changed, 25 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/3c27692b/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 27c238e..22dfc62 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,26 +54,17 @@ public class JmsInitialContextFactory implements InitialContextFactory {
     private String queuePrefix = "queue.";
     private String topicPrefix = "topic.";
 
+    @SuppressWarnings({ "unchecked", "rawtypes" })
     @Override
     public Context getInitialContext(Hashtable environment) throws NamingException {
-        // lets create a factory
-        Map<String, Object> data = new ConcurrentHashMap<String, Object>();
-        String[] names = getConnectionFactoryNames(environment);
-        for (int i = 0; i < names.length; i++) {
-            JmsConnectionFactory factory = null;
-            String name = names[i];
+        // Copy the environment to ensure we don't modify/reference it, it belongs to the caller.
+        Hashtable<Object, Object> environmentCopy = new Hashtable<Object, Object>();
+        environmentCopy.putAll(environment);
 
-            try {
-                factory = createConnectionFactory(name, environment);
-            } catch (Exception e) {
-                throw new NamingException("Invalid broker URL");
-            }
-
-            data.put(name, factory);
-        }
-
-        createQueues(data, environment);
-        createTopics(data, environment);
+        Map<String, Object> data = new ConcurrentHashMap<String, Object>();
+        createConnectionFactories(environmentCopy, data);
+        createQueues(data, environmentCopy);
+        createTopics(data, environmentCopy);
 
         // Add sub-contexts for dynamic creation on lookup.
         // "dynamicQueues/<queue-name>"
@@ -96,7 +87,23 @@ public class JmsInitialContextFactory implements InitialContextFactory {
             }
         });
 
-        return createContext(environment, data);
+        return createContext(environmentCopy, data);
+    }
+
+    private void createConnectionFactories(Hashtable<Object, Object> environment, Map<String, Object> data) throws NamingException {
+        String[] names = getConnectionFactoryNames(environment);
+        for (int i = 0; i < names.length; i++) {
+            JmsConnectionFactory factory = null;
+            String name = names[i];
+
+            try {
+                factory = createConnectionFactory(name, environment);
+            } catch (Exception e) {
+                throw new NamingException("Invalid broker URL");
+            }
+
+            data.put(name, factory);
+        }
     }
 
     // Implementation methods


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