throw exception when properties go unused while creating 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/78ea4daf Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/78ea4daf Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/78ea4daf Branch: refs/heads/master Commit: 78ea4daf00396711d1e8bfe02c0cf21c134ef93d Parents: 19ea818 Author: Robert Gemmell <[email protected]> Authored: Mon Feb 2 12:44:19 2015 +0000 Committer: Robert Gemmell <[email protected]> Committed: Mon Feb 2 12:46:11 2015 +0000 ---------------------------------------------------------------------- .../qpid/jms/jndi/JmsInitialContextFactory.java | 14 ++++++-- .../jms/jndi/JmsInitialContextFactoryTest.java | 38 ++++++++++++++++++++ 2 files changed, 49 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/78ea4daf/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 42c4e32..3f2423d 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 @@ -138,7 +138,7 @@ public class JmsInitialContextFactory implements InitialContextFactory { // Add any factory-specific additional properties props.putAll(getConnectionFactoryProperties(name, environment)); - return createConnectionFactory(props); + return createConnectionFactory(name, props); } protected List<String> getConnectionFactoryNames(Map<Object, Object> environment) { @@ -232,9 +232,17 @@ public class JmsInitialContextFactory implements InitialContextFactory { /** * Factory method to create a new connection factory using the given properties */ - protected JmsConnectionFactory createConnectionFactory(Map<String, String> properties) throws URISyntaxException { + protected JmsConnectionFactory createConnectionFactory(String name, Map<String, String> properties) throws URISyntaxException { JmsConnectionFactory factory = new JmsConnectionFactory(); - factory.setProperties(properties); + Map<String, String> unused = factory.setProperties(properties); + if (!unused.isEmpty()) { + String msg = + " Not all properties could be set on ConnectionFactory '" + name + "'." + + " Check the properties are spelled correctly." + + " Unused properties=[" + unused + "]."; + throw new IllegalArgumentException(msg); + } + return factory; } } http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/78ea4daf/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 f22bf2e..d94fb41 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 @@ -126,6 +126,44 @@ public class JmsInitialContextFactoryTest extends QpidJmsTestCase { } @Test + public void testConnectionFactoryBindingWithInvalidFactorySpecificProperty() throws Exception { + String factoryName = "myNewFactory"; + String uri = "amqp://example.com:1234"; + + String propertyPrefix = JmsInitialContextFactory.CONNECTION_FACTORY_PROPERTY_KEY_PREFIX; + + Hashtable<Object, Object> env = new Hashtable<Object, Object>(); + env.put(JmsInitialContextFactory.CONNECTION_FACTORY_KEY_PREFIX + factoryName, uri); + env.put(propertyPrefix + factoryName + "." + "invalidProperty", "value"); + + try { + createInitialContext(env); + fail("Should have thrown exception"); + } catch (NamingException ne) { + // Expected + } + } + + @Test + public void testConnectionFactoryBindingWithInvalidDefaultProperty() throws Exception { + String factoryName = "myNewFactory"; + String uri = "amqp://example.com:1234"; + + String defaultPrefix = JmsInitialContextFactory.CONNECTION_FACTORY_DEFAULT_KEY_PREFIX; + + Hashtable<Object, Object> env = new Hashtable<Object, Object>(); + env.put(JmsInitialContextFactory.CONNECTION_FACTORY_KEY_PREFIX + factoryName, uri); + env.put(defaultPrefix + "invalidDefaultProperty", "value"); + + try { + createInitialContext(env); + fail("Should have thrown exception"); + } catch (NamingException ne) { + // Expected + } + } + + @Test public void testConnectionFactoryBindingUsesDefaultURIWhenEmpty() throws Exception { doConnectionFactoryBindingUsesDefaultURITestImpl(""); } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
