diff --git a/src/main/java/org/filesys/server/NetworkServerList.java b/src/main/java/org/filesys/server/NetworkServerList.java index 0763cdc..b2127ed 100644 --- a/src/main/java/org/filesys/server/NetworkServerList.java +++ b/src/main/java/org/filesys/server/NetworkServerList.java @@ -20,6 +20,7 @@ package org.filesys.server; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; /** @@ -27,7 +28,7 @@ * * @author gkspencer */ -public class NetworkServerList { +public class NetworkServerList implements Iterable { // List of network servers private List m_servers; @@ -39,6 +40,14 @@ public NetworkServerList() { m_servers = new ArrayList(); } + /** + * Iterator over the servers in the list + */ + @Override + public final Iterator iterator() { + return m_servers.iterator(); + } + /** * Return the number of servers in the list * diff --git a/src/main/java/org/filesys/server/config/ServerConfiguration.java b/src/main/java/org/filesys/server/config/ServerConfiguration.java index a9e6d19..badcffe 100644 --- a/src/main/java/org/filesys/server/config/ServerConfiguration.java +++ b/src/main/java/org/filesys/server/config/ServerConfiguration.java @@ -155,7 +155,23 @@ public final NetworkServer findServer(String proto) { * @return NetworkServer */ public final NetworkServer removeServer(String proto) { - return m_serverList.removeServer(proto); + final NetworkServer server = m_serverList.removeServer(proto); + if (server instanceof ConfigurationListener) { + removeListener((ConfigurationListener) server); + } + return server; + } + + /** + * Remove all active servers + */ + public final void removeAllServers() { + for (NetworkServer server : m_serverList) { + if (server instanceof ConfigurationListener) { + removeListener((ConfigurationListener) server); + } + } + m_serverList.removeAll(); } /**