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;
/** The logger. */
private static final Logger logger = Logging.getLogger(CoreImpl.class.getName());
- /** The core listeners. */
- private final List<CoreListener> coreListeners = new ArrayList<CoreListener>();
+ /** The core listener support. */
+ private final CoreListenerSupport coreListenerSupport = new CoreListenerSupport();
/** Thread pool. */
private Executor threadPool = Executors.newCachedThreadPool();
*/
public void addCoreListener(CoreListener coreListener) {
logger.log(Level.FINEST, "adding core listener: " + coreListener);
- coreListeners.add(coreListener);
+ coreListenerSupport.addListener(coreListener);
}
/**
*/
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 <code>null</code>
- * 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);
}
//
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();
}
/**
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();
}
/**
*/
public void connectToNode(Node node) {
logger.log(Level.FINEST, "connectToNode(node=" + node + ")");
- fireNodeConnecting(node);
+ coreListenerSupport.fireNodeConnecting(node);
nodeManager.connect(node);
}
public void createProject() throws IOException, JSiteException {
logger.log(Level.FINEST, "createProject()");
Project newProject = projectManager.createProject();
- fireProjectAdded(newProject);
+ coreListenerSupport.fireProjectAdded(newProject);
}
/**
public void cloneProject(Project project) {
logger.log(Level.FINEST, "cloneProject(project=" + project + ")");
Project projectClone = projectManager.cloneProject(project);
- fireProjectCloned(project, projectClone);
+ coreListenerSupport.fireProjectCloned(project, projectClone);
}
/**
public void removeProject(Project project) {
logger.log(Level.FINEST, "removeProject(project=" + project + ")");
projectManager.removeProject(project);
- fireProjectRemoved(project);
+ coreListenerSupport.fireProjectRemoved(project);
}
//
* {@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);
}
//
--- /dev/null
+/*
+ * 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<CoreListener> {
+
+ /** 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 <code>null</code>
+ * 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);
+ }
+ }
+
+}