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]

Reply via email to