Author: jcarman Date: Thu Jul 22 19:09:18 2010 New Revision: 966807 URL: http://svn.apache.org/viewvc?rev=966807&view=rev Log: Improving error checking logic and adding test cases to verify.
Modified: commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/event/EventListenerSupport.java commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/event/EventListenerSupportTest.java Modified: commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/event/EventListenerSupport.java URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/event/EventListenerSupport.java?rev=966807&r1=966806&r2=966807&view=diff ============================================================================== --- commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/event/EventListenerSupport.java (original) +++ commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/event/EventListenerSupport.java Thu Jul 22 19:09:18 2010 @@ -17,6 +17,8 @@ package org.apache.commons.lang3.event; +import org.apache.commons.lang3.Validate; + import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; @@ -41,6 +43,8 @@ import java.util.List; * </pre> * * @param <L> The event listener type + * + * @since 3.0 */ public class EventListenerSupport<L> { @@ -77,6 +81,9 @@ public class EventListenerSupport<L> */ public EventListenerSupport(Class<L> listenerInterface, ClassLoader classLoader) { + Validate.notNull(listenerInterface, "Listener interface cannot be null."); + Validate.notNull(classLoader, "ClassLoader cannot be null."); + Validate.isTrue(listenerInterface.isInterface(), "Class {0} is not an interface", listenerInterface.getName()); proxy = listenerInterface.cast(Proxy.newProxyInstance(classLoader, new Class[]{listenerInterface}, new ProxyInvocationHandler())); } @@ -102,6 +109,7 @@ public class EventListenerSupport<L> */ public void addListener(L listener) { + Validate.notNull(listener, "Listener object cannot be null."); listeners.add(0, listener); } @@ -122,6 +130,7 @@ public class EventListenerSupport<L> */ public void removeListener(L listener) { + Validate.notNull(listener, "Listener object cannot be null."); listeners.remove(listener); } Modified: commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/event/EventListenerSupportTest.java URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/event/EventListenerSupportTest.java?rev=966807&r1=966806&r2=966807&view=diff ============================================================================== --- commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/event/EventListenerSupportTest.java (original) +++ commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/event/EventListenerSupportTest.java Thu Jul 22 19:09:18 2010 @@ -41,6 +41,32 @@ public class EventListenerSupportTest ex assertSame(calledListeners.get(1), listener2); } + public void testCreateWithNonInterfaceParameter() + { + try + { + EventListenerSupport.create(String.class); + fail("Should not be able to create using non-interface class."); + } + catch(IllegalArgumentException e) + { + + } + } + + public void testCreateWithNullParameter() + { + try + { + EventListenerSupport.create(null); + fail("Should not be able to create using null class."); + } + catch(NullPointerException e) + { + + } + } + public void testRemoveListenerDuringEvent() { final EventListenerSupport<ActionListener> listenerSupport = EventListenerSupport.create(ActionListener.class);