Author: simonetripodi Date: Wed Mar 27 14:23:12 2013 New Revision: 1461601 URL: http://svn.apache.org/r1461601 Log: [CHAIN-80] NPE when submitting null commands map to CatalogBase - patch submitted by Steve Westwood
Modified: commons/proper/chain/trunk/core/src/main/java/org/apache/commons/chain2/impl/CatalogBase.java commons/proper/chain/trunk/core/src/test/java/org/apache/commons/chain2/impl/CatalogBaseTestCase.java Modified: commons/proper/chain/trunk/core/src/main/java/org/apache/commons/chain2/impl/CatalogBase.java URL: http://svn.apache.org/viewvc/commons/proper/chain/trunk/core/src/main/java/org/apache/commons/chain2/impl/CatalogBase.java?rev=1461601&r1=1461600&r2=1461601&view=diff ============================================================================== --- commons/proper/chain/trunk/core/src/main/java/org/apache/commons/chain2/impl/CatalogBase.java (original) +++ commons/proper/chain/trunk/core/src/main/java/org/apache/commons/chain2/impl/CatalogBase.java Wed Mar 27 14:23:12 2013 @@ -58,10 +58,16 @@ public class CatalogBase<K, V, C extends * All Map keys should be <code>String</code> and all values should be <code>Command</code>.</p> * * @param commands Map of Commands. + * + * @exception IllegalArgumentException if <code>commands</code> + * is <code>null</code> * * @since Chain 1.1 */ - public CatalogBase(Map<String, Command<K, V, C>> commands ) { + public CatalogBase(Map<String, Command<K, V, C>> commands) { + if (commands == null) { + throw new IllegalArgumentException("'commands' parameter must be not null"); + } this.commands.putAll( commands ); } Modified: commons/proper/chain/trunk/core/src/test/java/org/apache/commons/chain2/impl/CatalogBaseTestCase.java URL: http://svn.apache.org/viewvc/commons/proper/chain/trunk/core/src/test/java/org/apache/commons/chain2/impl/CatalogBaseTestCase.java?rev=1461601&r1=1461600&r2=1461601&view=diff ============================================================================== --- commons/proper/chain/trunk/core/src/test/java/org/apache/commons/chain2/impl/CatalogBaseTestCase.java (original) +++ commons/proper/chain/trunk/core/src/test/java/org/apache/commons/chain2/impl/CatalogBaseTestCase.java Wed Mar 27 14:23:12 2013 @@ -19,9 +19,10 @@ package org.apache.commons.chain2.impl; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; import java.util.Iterator; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import org.apache.commons.chain2.Catalog; import org.apache.commons.chain2.Command; @@ -145,7 +146,31 @@ public class CatalogBaseTestCase { assertNull(catalog.getCommand("ChainBase")); } - + // Test construction with commands collection + @Test + public void testInstantiationWithMapOfCommands() { + @SuppressWarnings("serial") + Map<String, Command<String, Object, Context<String, Object>>> + commands = new ConcurrentHashMap<String, Command<String, Object, Context<String, Object>>>() { + { + put("AddingCommand", new AddingCommand("", null)); + } + }; + + CatalogBase<String, Object, Context<String, Object>> + catalog = new CatalogBase<String, Object, Context<String, Object>>(commands); + + assertEquals("Correct command count", 1, catalog.getCommands().size()); + } + + // Examine construction with null commands collection + @Test(expected = IllegalArgumentException.class) + public void testInstantiationWithNullMapOfCommands() { + Map<String, Command<String, Object, Context<String, Object>>> commands = null; + @SuppressWarnings("unused") + CatalogBase<String, Object, Context<String, Object>> + catalog = new CatalogBase<String, Object, Context<String, Object>>(commands); + } // -------------------------------------------------------- Support Methods