You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by si...@apache.org on 2013/03/27 15:23:12 UTC
svn commit: r1461601 - in /commons/proper/chain/trunk/core/src:
main/java/org/apache/commons/chain2/impl/CatalogBase.java
test/java/org/apache/commons/chain2/impl/CatalogBaseTestCase.java
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