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:32 UTC
[11/13] qpid-jms git commit: add ability to specify factory specific
properties outwith the potentially-defaulted URI
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