This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-net.git
commit 9c11d6527fdbb4ab971e4c215f69b6775130b4c1 Author: Gary Gregory <[email protected]> AuthorDate: Fri Mar 13 07:30:39 2026 -0400 ListenerList.addListener(T) now ignores null input. Fix compiler warnings. --- src/changes/changes.xml | 1 + src/main/java/org/apache/commons/net/util/ListenerList.java | 4 +++- .../java/org/apache/commons/net/util/ListenerListTest.java | 10 ++++++---- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index eb492e33..17dba11f 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -73,6 +73,7 @@ The <action> type attribute can be add,update,fix,remove. <action type="fix" dev="ggregory" due-to="Gary Gregory">TelnetInputStream.read() doesn't preserve the original InterruptedException as the cause of its InterruptedIOException.</action> <action type="fix" dev="ggregory" due-to="Gary Gregory">FTPClient._storeFile(String, String, InputStream) doesn't always close it's internal socket when an exception is thrown early in processing.</action> <action type="fix" dev="ggregory" due-to="Gary Gregory">ListenerList.removeListener(T) now ignores null input to avoid a NullPointerException.</action> + <action type="fix" dev="ggregory" due-to="Gary Gregory">ListenerList.addListener(T) now ignores null input.</action> <!-- ADD --> <action type="add" dev="ggregory" due-to="Gary Gregory">Add DatagramSocketClient.getDefaultTimeoutDuration() and deprecate getDefaultTimeout().</action> <action type="add" dev="ggregory" due-to="Maros Orsak, Gary Gregory" issue="NET-741">Add subnet IPv6 handling with SubnetUtils6 #391.</action> diff --git a/src/main/java/org/apache/commons/net/util/ListenerList.java b/src/main/java/org/apache/commons/net/util/ListenerList.java index 4566e934..7d7725c4 100644 --- a/src/main/java/org/apache/commons/net/util/ListenerList.java +++ b/src/main/java/org/apache/commons/net/util/ListenerList.java @@ -51,7 +51,9 @@ public class ListenerList<T extends EventListener> implements Serializable, Iter * @param listener A listener. */ public void addListener(final T listener) { - listeners.add(listener); + if (listener != null) { + listeners.add(listener); + } } /** diff --git a/src/test/java/org/apache/commons/net/util/ListenerListTest.java b/src/test/java/org/apache/commons/net/util/ListenerListTest.java index 3d859ac2..a596aba6 100644 --- a/src/test/java/org/apache/commons/net/util/ListenerListTest.java +++ b/src/test/java/org/apache/commons/net/util/ListenerListTest.java @@ -38,20 +38,21 @@ class ListenerListTest { @Test void testAdd() { final EventListenerImpl eventListenerImpl = new EventListenerImpl(); - final ListenerList listenerList = new ListenerList(); + final ListenerList<EventListener> listenerList = new ListenerList<>(); + listenerList.addListener(null); listenerList.addListener(eventListenerImpl); assertEquals(1, listenerList.getListenerCount()); } @Test void testConstructor() { - assertEquals(0, new ListenerList().getListenerCount()); + assertEquals(0, new ListenerList<>().getListenerCount()); } @Test void testIterator() { final EventListenerImpl eventListenerImpl = new EventListenerImpl(); - final ListenerList listenerList = new ListenerList(); + final ListenerList<EventListener> listenerList = new ListenerList<>(); listenerList.addListener(eventListenerImpl); final Iterator<EventListener> iterator = listenerList.iterator(); assertTrue(iterator.hasNext()); @@ -60,9 +61,10 @@ class ListenerListTest { @Test void testRemove() { final EventListenerImpl eventListenerImpl = new EventListenerImpl(); - final ListenerList listenerList = new ListenerList(); + final ListenerList<EventListener> listenerList = new ListenerList<>(); listenerList.addListener(eventListenerImpl); assertEquals(1, listenerList.getListenerCount()); + listenerList.removeListener(null); listenerList.removeListener(eventListenerImpl); assertEquals(0, listenerList.getListenerCount()); listenerList.iterator();
