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