From a5baf05c30ac53df2e1f6b481eb183a2cff53ef5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Thu, 13 Nov 2008 00:49:54 +0100 Subject: [PATCH] Move CoreListener event firing to CoreListenerSupport. --- src/net/pterodactylus/jsite/core/CoreImpl.java | 305 ++------------------- .../jsite/core/CoreListenerSupport.java | 295 ++++++++++++++++++++ 2 files changed, 318 insertions(+), 282 deletions(-) create mode 100644 src/net/pterodactylus/jsite/core/CoreListenerSupport.java diff --git a/src/net/pterodactylus/jsite/core/CoreImpl.java b/src/net/pterodactylus/jsite/core/CoreImpl.java index cff97c6..1e52659 100644 --- a/src/net/pterodactylus/jsite/core/CoreImpl.java +++ b/src/net/pterodactylus/jsite/core/CoreImpl.java @@ -21,7 +21,6 @@ package net.pterodactylus.jsite.core; import java.io.IOException; import java.net.UnknownHostException; -import java.util.ArrayList; import java.util.List; import java.util.concurrent.Executor; import java.util.concurrent.Executors; @@ -40,8 +39,8 @@ public class CoreImpl implements Core, NodeListener, RequestListener { /** The logger. */ private static final Logger logger = Logging.getLogger(CoreImpl.class.getName()); - /** The core listeners. */ - private final List coreListeners = new ArrayList(); + /** The core listener support. */ + private final CoreListenerSupport coreListenerSupport = new CoreListenerSupport(); /** Thread pool. */ private Executor threadPool = Executors.newCachedThreadPool(); @@ -66,7 +65,7 @@ public class CoreImpl implements Core, NodeListener, RequestListener { */ public void addCoreListener(CoreListener coreListener) { logger.log(Level.FINEST, "adding core listener: " + coreListener); - coreListeners.add(coreListener); + coreListenerSupport.addListener(coreListener); } /** @@ -74,265 +73,7 @@ public class CoreImpl implements Core, NodeListener, RequestListener { */ public void removeCoreListener(CoreListener coreListener) { logger.log(Level.FINEST, "removing core listener: " + coreListener); - coreListeners.remove(coreListener); - } - - /** - * Notifies all listeners that the projects were loaded successfully. - * - * @param directory - * The directory the projects were loaded from - */ - private void fireLoadingProjectsDone(String directory) { - logger.log(Level.FINEST, "firing loadingProjectsDone event with [directory=" + directory + "]"); - for (CoreListener coreListener : coreListeners) { - coreListener.loadingProjectsDone(directory); - } - } - - /** - * Notifies all core listeners that loading the projects from the given - * directory has failed. - * - * @param directory - * The directory the projects were tried to load from - * @param throwable - * The exception that occured when loading projects - */ - private void fireLoadingProjectsFailed(String directory, Throwable throwable) { - logger.log(Level.FINEST, "firing loadingProjectsFailed event with [directory=" + directory + ",throwable=" + throwable + "]"); - for (CoreListener coreListener : coreListeners) { - coreListener.loadingProjectsFailed(directory, throwable); - } - } - - /** - * Notifies all listeners that the projects were successfully saved. - * - * @param directory - * The directory the projects were saved to - */ - private void fireSavingProjectsDone(String directory) { - logger.log(Level.FINEST, "firing savingProjectsDone event with [directory=" + directory + "]"); - for (CoreListener coreListener : coreListeners) { - coreListener.savingProjectsDone(directory); - } - } - - /** - * Notifies all listeners that the projects could not be saved. - * - * @param directory - * The directory the projects were to be saved to - * @param throwable - * The exception that occured when saving the projects - */ - private void fireSavingProjectsFailed(String directory, Throwable throwable) { - logger.log(Level.FINEST, "firing savingProjectsFailed event with [directory=" + directory + ",throwable=" + throwable + "]"); - for (CoreListener coreListener : coreListeners) { - coreListener.savingProjectsFailed(directory, throwable); - } - } - - /** - * Notifies all listeners that a project was added. - * - * @param project - * The project that was added - */ - private void fireProjectAdded(Project project) { - logger.log(Level.FINEST, "firing projectAdded event with [project=" + project + "]"); - for (CoreListener coreListener : coreListeners) { - coreListener.projectAdded(project); - } - } - - /** - * Notifies all listeners that a project was cloned. - * - * @param clonedProject - * The project that was cloned - * @param projectClone - * The clone of the project - */ - private void fireProjectCloned(Project clonedProject, Project projectClone) { - logger.log(Level.FINEST, "firing projectCloned event with [clonedProject=" + clonedProject + ",projectClone=" + projectClone + "]"); - for (CoreListener coreListener : coreListeners) { - coreListener.projectCloned(clonedProject, projectClone); - } - } - - /** - * Notifies all listeners that a project was removed. - * - * @param project - * The project that was removed - */ - private void fireProjectRemoved(Project project) { - logger.log(Level.FINEST, "firing projectRemoved event with [project=" + project + "]"); - for (CoreListener coreListener : coreListeners) { - coreListener.projectRemoved(project); - } - } - - /** - * Notifies all listeners that the nodes were successfully loaded. - * - * @param directory - * The directory the nodes were loaded from - */ - private void fireLoadingNodesDone(String directory) { - logger.log(Level.FINEST, "firing loadingNodesDone event with [directory=" + directory + "]"); - for (CoreListener coreListener : coreListeners) { - coreListener.loadingNodesDone(directory); - } - } - - /** - * Notifies all listeners that loading the nodes has failed. - * - * @param directory - * The directory the nodes were loaded from - * @param throwable - * The exception that occured while loading the nodes - */ - private void fireLoadingNodesFailed(String directory, Throwable throwable) { - logger.log(Level.FINEST, "firing loadingNodesFailed event with [directory=" + directory + ",throwable=" + throwable + "]"); - for (CoreListener coreListener : coreListeners) { - coreListener.loadingNodesFailed(directory, throwable); - } - } - - /** - * Notifies all listeners that the nodes were saved successfully. - * - * @param directory - * The directory the nodes were saved to - */ - private void fireSavingNodesDone(String directory) { - logger.log(Level.FINEST, "firing savingNodesDone event with [directory=" + directory + "]"); - for (CoreListener coreListener : coreListeners) { - coreListener.savingNodesDone(directory); - } - } - - /** - * Notifies all listeners that saving the nodes has failed. - * - * @param directory - * The directory the nodes were saved to - * @param throwable - * The exception that occured while saving the nodes - */ - private void fireSavingNodesFailed(String directory, Throwable throwable) { - logger.log(Level.FINEST, "firing savingNodesFailed event with [directory=" + directory + ",throwable=" + throwable + "]"); - for (CoreListener coreListener : coreListeners) { - coreListener.savingProjectsFailed(directory, throwable); - } - } - - /** - * Notifies all core listeners that the core has loaded and is ready to run. - */ - private void fireCoreLoaded() { - logger.log(Level.FINEST, "firing coreLoaded event"); - for (CoreListener coreListener : coreListeners) { - coreListener.coreLoaded(); - } - } - - /** - * Notifies all listeners that the core was stopped. - */ - private void fireCoreStopped() { - logger.log(Level.FINEST, "firing coreStopped event"); - for (CoreListener coreListener : coreListeners) { - coreListener.coreStopped(); - } - } - - /** - * Notifies all listeners that a node was added to the core. - * - * @param node - * The node that was added - */ - private void fireNodeAdded(Node node) { - logger.log(Level.FINEST, "firing nodeAdded event with [node=" + node + "]"); - for (CoreListener coreListener : coreListeners) { - coreListener.nodeAdded(node); - } - } - - /** - * Notifies all listeners that a node was removed from the core. - * - * @param node - * The node that was removed - */ - private void fireNodeRemoved(Node node) { - logger.log(Level.FINEST, "firing nodeRemoved event with [node=" + node + "]"); - for (CoreListener coreListener : coreListeners) { - coreListener.nodeRemoved(node); - } - } - - /** - * Notifies all listeners that a connection to the given node is now being - * established. - * - * @param node - * The node that is being connected to - */ - private void fireNodeConnecting(Node node) { - logger.log(Level.FINEST, "firing nodeConnecting event with [node=" + node + "]"); - for (CoreListener coreListener : coreListeners) { - coreListener.nodeConnecting(node); - } - } - - /** - * Notifies all listeners that the given node is now connected. - * - * @param node - * The node that is now connected - */ - private void fireNodeConnected(Node node) { - logger.log(Level.FINEST, "firing nodeConnected event with [node=" + node + "]"); - for (CoreListener coreListener : coreListeners) { - coreListener.nodeConnected(node); - } - } - - /** - * Notifies all listeners that a connection to a node has failed. - * - * @param node - * The node that could not be connected - * @param cause - * The cause of the failure - */ - private void fireNodeConnectionFailed(Node node, Throwable cause) { - logger.log(Level.FINEST, "firing nodeConnectionFailed event with [node=" + node + ",cause=" + cause + "]"); - for (CoreListener coreListener : coreListeners) { - coreListener.nodeConnectionFailed(node, cause); - } - } - - /** - * Notifies all listeners that the given node was disconnected. - * - * @param node - * The node that is now disconnected - * @param throwable - * The exception that caused the disconnect, or null - * if there was no exception - */ - private void fireNodeDisconnected(Node node, Throwable throwable) { - logger.log(Level.FINEST, "firing nodeDisconnected event with [node=" + node + ",throwable=" + throwable + "]"); - for (CoreListener coreListener : coreListeners) { - coreListener.nodeDisconnected(node, throwable); - } + coreListenerSupport.removeListener(coreListener); } // @@ -426,17 +167,17 @@ public class CoreImpl implements Core, NodeListener, RequestListener { logger.log(Level.INFO, "starting core…"); try { nodeManager.load(); - fireLoadingNodesDone(nodeManager.getDirectory()); + coreListenerSupport.fireLoadingNodesDone(nodeManager.getDirectory()); } catch (IOException ioe1) { - fireLoadingNodesFailed(nodeManager.getDirectory(), ioe1); + coreListenerSupport.fireLoadingNodesFailed(nodeManager.getDirectory(), ioe1); } try { projectManager.load(); - fireLoadingProjectsDone(projectManager.getDirectory()); + coreListenerSupport.fireLoadingProjectsDone(projectManager.getDirectory()); } catch (IOException ioe1) { - fireLoadingProjectsFailed(projectManager.getDirectory(), ioe1); + coreListenerSupport.fireLoadingProjectsFailed(projectManager.getDirectory(), ioe1); } - fireCoreLoaded(); + coreListenerSupport.fireCoreLoaded(); } /** @@ -446,17 +187,17 @@ public class CoreImpl implements Core, NodeListener, RequestListener { logger.log(Level.INFO, "stopping core…"); try { projectManager.save(); - fireSavingProjectsDone(projectManager.getDirectory()); + coreListenerSupport.fireSavingProjectsDone(projectManager.getDirectory()); } catch (IOException ioe1) { - fireSavingProjectsFailed(projectManager.getDirectory(), ioe1); + coreListenerSupport.fireSavingProjectsFailed(projectManager.getDirectory(), ioe1); } try { nodeManager.save(); - fireSavingNodesDone(nodeManager.getDirectory()); + coreListenerSupport.fireSavingNodesDone(nodeManager.getDirectory()); } catch (IOException ioe1) { - fireSavingNodesFailed(nodeManager.getDirectory(), ioe1); + coreListenerSupport.fireSavingNodesFailed(nodeManager.getDirectory(), ioe1); } - fireCoreStopped(); + coreListenerSupport.fireCoreStopped(); } /** @@ -480,7 +221,7 @@ public class CoreImpl implements Core, NodeListener, RequestListener { */ public void connectToNode(Node node) { logger.log(Level.FINEST, "connectToNode(node=" + node + ")"); - fireNodeConnecting(node); + coreListenerSupport.fireNodeConnecting(node); nodeManager.connect(node); } @@ -498,7 +239,7 @@ public class CoreImpl implements Core, NodeListener, RequestListener { public void createProject() throws IOException, JSiteException { logger.log(Level.FINEST, "createProject()"); Project newProject = projectManager.createProject(); - fireProjectAdded(newProject); + coreListenerSupport.fireProjectAdded(newProject); } /** @@ -507,7 +248,7 @@ public class CoreImpl implements Core, NodeListener, RequestListener { public void cloneProject(Project project) { logger.log(Level.FINEST, "cloneProject(project=" + project + ")"); Project projectClone = projectManager.cloneProject(project); - fireProjectCloned(project, projectClone); + coreListenerSupport.fireProjectCloned(project, projectClone); } /** @@ -516,7 +257,7 @@ public class CoreImpl implements Core, NodeListener, RequestListener { public void removeProject(Project project) { logger.log(Level.FINEST, "removeProject(project=" + project + ")"); projectManager.removeProject(project); - fireProjectRemoved(project); + coreListenerSupport.fireProjectRemoved(project); } // @@ -549,35 +290,35 @@ public class CoreImpl implements Core, NodeListener, RequestListener { * {@inheritDoc} */ public void nodeAdded(Node node) { - fireNodeAdded(node); + coreListenerSupport.fireNodeAdded(node); } /** * {@inheritDoc} */ public void nodeRemoved(Node node) { - fireNodeRemoved(node); + coreListenerSupport.fireNodeRemoved(node); } /** * {@inheritDoc} */ public void nodeConnected(Node node) { - fireNodeConnected(node); + coreListenerSupport.fireNodeConnected(node); } /** * {@inheritDoc} */ public void nodeConnectionFailed(Node node, Throwable cause) { - fireNodeConnectionFailed(node, cause); + coreListenerSupport.fireNodeConnectionFailed(node, cause); } /** * {@inheritDoc} */ public void nodeDisconnected(Node node, Throwable throwable) { - fireNodeDisconnected(node, throwable); + coreListenerSupport.fireNodeDisconnected(node, throwable); } // diff --git a/src/net/pterodactylus/jsite/core/CoreListenerSupport.java b/src/net/pterodactylus/jsite/core/CoreListenerSupport.java new file mode 100644 index 0000000..e0d62f5 --- /dev/null +++ b/src/net/pterodactylus/jsite/core/CoreListenerSupport.java @@ -0,0 +1,295 @@ +/* + * jSite-next - CoreListenerSupport.java - + * Copyright © 2008 David Roden + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package net.pterodactylus.jsite.core; + +import java.util.logging.Level; +import java.util.logging.Logger; + +import net.pterodactylus.util.event.ListenerSupport; + +/** + * TODO + * + * @author David Roden <droden@gmail.com> + */ +public class CoreListenerSupport extends ListenerSupport { + + /** The logger. */ + private static final Logger logger = Logger.getLogger(CoreListenerSupport.class.getName()); + + /** + * Notifies all listeners that the projects were loaded successfully. + * + * @param directory + * The directory the projects were loaded from + */ + public void fireLoadingProjectsDone(String directory) { + logger.log(Level.FINEST, "firing loadingProjectsDone event with [directory=" + directory + "]"); + for (CoreListener coreListener : getListeners()) { + coreListener.loadingProjectsDone(directory); + } + } + + /** + * Notifies all core listeners that loading the projects from the given + * directory has failed. + * + * @param directory + * The directory the projects were tried to load from + * @param throwable + * The exception that occured when loading projects + */ + public void fireLoadingProjectsFailed(String directory, Throwable throwable) { + logger.log(Level.FINEST, "firing loadingProjectsFailed event with [directory=" + directory + ",throwable=" + throwable + "]"); + for (CoreListener coreListener : getListeners()) { + coreListener.loadingProjectsFailed(directory, throwable); + } + } + + /** + * Notifies all listeners that the projects were successfully saved. + * + * @param directory + * The directory the projects were saved to + */ + public void fireSavingProjectsDone(String directory) { + logger.log(Level.FINEST, "firing savingProjectsDone event with [directory=" + directory + "]"); + for (CoreListener coreListener : getListeners()) { + coreListener.savingProjectsDone(directory); + } + } + + /** + * Notifies all listeners that the projects could not be saved. + * + * @param directory + * The directory the projects were to be saved to + * @param throwable + * The exception that occured when saving the projects + */ + public void fireSavingProjectsFailed(String directory, Throwable throwable) { + logger.log(Level.FINEST, "firing savingProjectsFailed event with [directory=" + directory + ",throwable=" + throwable + "]"); + for (CoreListener coreListener : getListeners()) { + coreListener.savingProjectsFailed(directory, throwable); + } + } + + /** + * Notifies all listeners that a project was added. + * + * @param project + * The project that was added + */ + public void fireProjectAdded(Project project) { + logger.log(Level.FINEST, "firing projectAdded event with [project=" + project + "]"); + for (CoreListener coreListener : getListeners()) { + coreListener.projectAdded(project); + } + } + + /** + * Notifies all listeners that a project was cloned. + * + * @param clonedProject + * The project that was cloned + * @param projectClone + * The clone of the project + */ + public void fireProjectCloned(Project clonedProject, Project projectClone) { + logger.log(Level.FINEST, "firing projectCloned event with [clonedProject=" + clonedProject + ",projectClone=" + projectClone + "]"); + for (CoreListener coreListener : getListeners()) { + coreListener.projectCloned(clonedProject, projectClone); + } + } + + /** + * Notifies all listeners that a project was removed. + * + * @param project + * The project that was removed + */ + public void fireProjectRemoved(Project project) { + logger.log(Level.FINEST, "firing projectRemoved event with [project=" + project + "]"); + for (CoreListener coreListener : getListeners()) { + coreListener.projectRemoved(project); + } + } + + /** + * Notifies all listeners that the nodes were successfully loaded. + * + * @param directory + * The directory the nodes were loaded from + */ + public void fireLoadingNodesDone(String directory) { + logger.log(Level.FINEST, "firing loadingNodesDone event with [directory=" + directory + "]"); + for (CoreListener coreListener : getListeners()) { + coreListener.loadingNodesDone(directory); + } + } + + /** + * Notifies all listeners that loading the nodes has failed. + * + * @param directory + * The directory the nodes were loaded from + * @param throwable + * The exception that occured while loading the nodes + */ + public void fireLoadingNodesFailed(String directory, Throwable throwable) { + logger.log(Level.FINEST, "firing loadingNodesFailed event with [directory=" + directory + ",throwable=" + throwable + "]"); + for (CoreListener coreListener : getListeners()) { + coreListener.loadingNodesFailed(directory, throwable); + } + } + + /** + * Notifies all listeners that the nodes were saved successfully. + * + * @param directory + * The directory the nodes were saved to + */ + public void fireSavingNodesDone(String directory) { + logger.log(Level.FINEST, "firing savingNodesDone event with [directory=" + directory + "]"); + for (CoreListener coreListener : getListeners()) { + coreListener.savingNodesDone(directory); + } + } + + /** + * Notifies all listeners that saving the nodes has failed. + * + * @param directory + * The directory the nodes were saved to + * @param throwable + * The exception that occured while saving the nodes + */ + public void fireSavingNodesFailed(String directory, Throwable throwable) { + logger.log(Level.FINEST, "firing savingNodesFailed event with [directory=" + directory + ",throwable=" + throwable + "]"); + for (CoreListener coreListener : getListeners()) { + coreListener.savingProjectsFailed(directory, throwable); + } + } + + /** + * Notifies all core listeners that the core has loaded and is ready to run. + */ + public void fireCoreLoaded() { + logger.log(Level.FINEST, "firing coreLoaded event"); + for (CoreListener coreListener : getListeners()) { + coreListener.coreLoaded(); + } + } + + /** + * Notifies all listeners that the core was stopped. + */ + public void fireCoreStopped() { + logger.log(Level.FINEST, "firing coreStopped event"); + for (CoreListener coreListener : getListeners()) { + coreListener.coreStopped(); + } + } + + /** + * Notifies all listeners that a node was added to the core. + * + * @param node + * The node that was added + */ + public void fireNodeAdded(Node node) { + logger.log(Level.FINEST, "firing nodeAdded event with [node=" + node + "]"); + for (CoreListener coreListener : getListeners()) { + coreListener.nodeAdded(node); + } + } + + /** + * Notifies all listeners that a node was removed from the core. + * + * @param node + * The node that was removed + */ + public void fireNodeRemoved(Node node) { + logger.log(Level.FINEST, "firing nodeRemoved event with [node=" + node + "]"); + for (CoreListener coreListener : getListeners()) { + coreListener.nodeRemoved(node); + } + } + + /** + * Notifies all listeners that a connection to the given node is now being + * established. + * + * @param node + * The node that is being connected to + */ + public void fireNodeConnecting(Node node) { + logger.log(Level.FINEST, "firing nodeConnecting event with [node=" + node + "]"); + for (CoreListener coreListener : getListeners()) { + coreListener.nodeConnecting(node); + } + } + + /** + * Notifies all listeners that the given node is now connected. + * + * @param node + * The node that is now connected + */ + public void fireNodeConnected(Node node) { + logger.log(Level.FINEST, "firing nodeConnected event with [node=" + node + "]"); + for (CoreListener coreListener : getListeners()) { + coreListener.nodeConnected(node); + } + } + + /** + * Notifies all listeners that a connection to a node has failed. + * + * @param node + * The node that could not be connected + * @param cause + * The cause of the failure + */ + public void fireNodeConnectionFailed(Node node, Throwable cause) { + logger.log(Level.FINEST, "firing nodeConnectionFailed event with [node=" + node + ",cause=" + cause + "]"); + for (CoreListener coreListener : getListeners()) { + coreListener.nodeConnectionFailed(node, cause); + } + } + + /** + * Notifies all listeners that the given node was disconnected. + * + * @param node + * The node that is now disconnected + * @param throwable + * The exception that caused the disconnect, or null + * if there was no exception + */ + public void fireNodeDisconnected(Node node, Throwable throwable) { + logger.log(Level.FINEST, "firing nodeDisconnected event with [node=" + node + ",throwable=" + throwable + "]"); + for (CoreListener coreListener : getListeners()) { + coreListener.nodeDisconnected(node, throwable); + } + } + +} -- 2.7.4