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();

Reply via email to