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