You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2025/07/16 17:35:01 UTC
(commons-net) 02/02: Add generics to ListenerList
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 ce88e2920431368df202aa95aa8a3e71892c189f
Author: Gary D. Gregory <ga...@gmail.com>
AuthorDate: Wed Jul 16 13:34:53 2025 -0400
Add generics to ListenerList
---
src/changes/changes.xml | 1 +
.../org/apache/commons/net/ProtocolCommandSupport.java | 13 ++++++-------
.../java/org/apache/commons/net/io/CopyStreamAdapter.java | 15 +++++++--------
.../java/org/apache/commons/net/util/ListenerList.java | 12 +++++++-----
4 files changed, 21 insertions(+), 20 deletions(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 27f42679..363b3116 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -107,6 +107,7 @@ The <action> type attribute can be add,update,fix,remove.
<action type="add" dev="ggregory" due-to="Gary Gregory" issue="NET-727">Add accessing options map for TFTP request packet and allow using 'blksize' option #331.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.commons.net.util.ListenerList.isEmpty().</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.commons.net.ftp.FTPClient.getSystemTypeOverride().</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add generics to ListenerList.</action>
<!-- UPDATE -->
<action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">Bump org.apache.commons:commons-parent from 70 to 85 #261, #278, #280, #285, #298, #293, #300, #345.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">Bump org.apache.commons:commons-lang3 from 3.14.0 to 3.18.0 #268, #273, #281, #354.</action>
diff --git a/src/main/java/org/apache/commons/net/ProtocolCommandSupport.java b/src/main/java/org/apache/commons/net/ProtocolCommandSupport.java
index a15ffd81..2ef8bab7 100644
--- a/src/main/java/org/apache/commons/net/ProtocolCommandSupport.java
+++ b/src/main/java/org/apache/commons/net/ProtocolCommandSupport.java
@@ -19,7 +19,6 @@ package org.apache.commons.net;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
-import java.util.EventListener;
import org.apache.commons.net.util.ListenerList;
@@ -42,7 +41,7 @@ public class ProtocolCommandSupport implements Serializable {
/**
* The ProtocolCommandListener.
*/
- private final ListenerList listeners;
+ private final ListenerList<ProtocolCommandListener> listeners;
/**
* Creates a ProtocolCommandSupport instance using the indicated source as the source of ProtocolCommandEvents.
@@ -50,7 +49,7 @@ public class ProtocolCommandSupport implements Serializable {
* @param source The source to use for all generated ProtocolCommandEvents.
*/
public ProtocolCommandSupport(final Object source) {
- this.listeners = new ListenerList();
+ this.listeners = new ListenerList<>();
this.source = source;
}
@@ -73,8 +72,8 @@ public class ProtocolCommandSupport implements Serializable {
public void fireCommandSent(final String command, final String message) {
if (!listeners.isEmpty()) {
final ProtocolCommandEvent event = new ProtocolCommandEvent(source, command, message);
- for (final EventListener listener : listeners) {
- ((ProtocolCommandListener) listener).protocolCommandSent(event);
+ for (final ProtocolCommandListener listener : listeners) {
+ listener.protocolCommandSent(event);
}
}
}
@@ -91,8 +90,8 @@ public class ProtocolCommandSupport implements Serializable {
public void fireReplyReceived(final int replyCode, final String message) {
if (!listeners.isEmpty()) {
final ProtocolCommandEvent event = new ProtocolCommandEvent(source, replyCode, message);
- for (final EventListener listener : listeners) {
- ((ProtocolCommandListener) listener).protocolReplyReceived(event);
+ for (final ProtocolCommandListener listener : listeners) {
+ listener.protocolReplyReceived(event);
}
}
}
diff --git a/src/main/java/org/apache/commons/net/io/CopyStreamAdapter.java b/src/main/java/org/apache/commons/net/io/CopyStreamAdapter.java
index 318c2e52..82863008 100644
--- a/src/main/java/org/apache/commons/net/io/CopyStreamAdapter.java
+++ b/src/main/java/org/apache/commons/net/io/CopyStreamAdapter.java
@@ -17,8 +17,6 @@
package org.apache.commons.net.io;
-import java.util.EventListener;
-
import org.apache.commons.net.util.ListenerList;
/**
@@ -33,13 +31,14 @@ import org.apache.commons.net.util.ListenerList;
* @see Util
*/
public class CopyStreamAdapter implements CopyStreamListener {
- private final ListenerList internalListeners;
+
+ private final ListenerList<CopyStreamListener> internalListeners;
/**
* Creates a new copyStreamAdapter.
*/
public CopyStreamAdapter() {
- internalListeners = new ListenerList();
+ internalListeners = new ListenerList<>();
}
/**
@@ -61,8 +60,8 @@ public class CopyStreamAdapter implements CopyStreamListener {
*/
@Override
public void bytesTransferred(final CopyStreamEvent event) {
- for (final EventListener listener : internalListeners) {
- ((CopyStreamListener) listener).bytesTransferred(event);
+ for (final CopyStreamListener listener : internalListeners) {
+ listener.bytesTransferred(event);
}
}
@@ -78,8 +77,8 @@ public class CopyStreamAdapter implements CopyStreamListener {
*/
@Override
public void bytesTransferred(final long totalBytesTransferred, final int bytesTransferred, final long streamSize) {
- for (final EventListener listener : internalListeners) {
- ((CopyStreamListener) listener).bytesTransferred(totalBytesTransferred, bytesTransferred, streamSize);
+ for (final CopyStreamListener listener : internalListeners) {
+ listener.bytesTransferred(totalBytesTransferred, bytesTransferred, streamSize);
}
}
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 423b3979..636f5e08 100644
--- a/src/main/java/org/apache/commons/net/util/ListenerList.java
+++ b/src/main/java/org/apache/commons/net/util/ListenerList.java
@@ -26,15 +26,17 @@ import java.util.concurrent.CopyOnWriteArrayList;
/**
* A list of event listeners.
+ *
+ * @param <T> the type of elements returned by the iterator
*/
-public class ListenerList implements Serializable, Iterable<EventListener> {
+public class ListenerList<T extends EventListener> implements Serializable, Iterable<T> {
private static final long serialVersionUID = -1934227607974228213L;
/**
* The thread-safe list of listeners.
*/
- private final CopyOnWriteArrayList<EventListener> listeners;
+ private final CopyOnWriteArrayList<T> listeners;
/**
* Constructs a new instance.
@@ -48,7 +50,7 @@ public class ListenerList implements Serializable, Iterable<EventListener> {
*
* @param listener A listener.
*/
- public void addListener(final EventListener listener) {
+ public void addListener(final T listener) {
listeners.add(listener);
}
@@ -78,7 +80,7 @@ public class ListenerList implements Serializable, Iterable<EventListener> {
* @since 2.0 TODO Check that this is a good defensive strategy
*/
@Override
- public Iterator<EventListener> iterator() {
+ public Iterator<T> iterator() {
return listeners.iterator();
}
@@ -96,7 +98,7 @@ public class ListenerList implements Serializable, Iterable<EventListener> {
*
* @param listener listener to be removed from this list, if present.
*/
- public void removeListener(final EventListener listener) {
+ public void removeListener(final T listener) {
listeners.remove(listener);
}