From: <bra...@us...> - 2008-07-09 00:30:06
|
Revision: 2424 http://archive-access.svn.sourceforge.net/archive-access/?rev=2424&view=rev Author: bradtofel Date: 2008-07-08 17:30:15 -0700 (Tue, 08 Jul 2008) Log Message: ----------- FEATURE: added Shutdownable interface, which all worker threads now implement. added configurable list of Shutdownable objects to WaybackCollection, which will be shutdown() when the WaybackCollection is shutdown() Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/updater/LocalResourceIndexUpdater.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourcestore/indexer/IndexQueueUpdater.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourcestore/indexer/IndexWorker.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourcestore/locationdb/ResourceFileLocationDBUpdater.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourcestore/resourcefile/ResourceFileSourceUpdater.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/webapp/WaybackCollection.java Added Paths: ----------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/Shutdownable.java Added: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/Shutdownable.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/Shutdownable.java (rev 0) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/Shutdownable.java 2008-07-09 00:30:15 UTC (rev 2424) @@ -0,0 +1,37 @@ +/* Shutdownable + * + * $Id$ + * + * Created on 4:54:13 PM Jul 8, 2008. + * + * Copyright (C) 2008 Internet Archive. + * + * This file is part of wayback. + * + * wayback is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * any later version. + * + * wayback 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 Lesser Public License for more details. + * + * You should have received a copy of the GNU Lesser Public License + * along with wayback; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.archive.wayback; + +import java.io.IOException; + +/** + * + * + * @author brad + * @version $Date$, $Revision$ + */ +public interface Shutdownable { + public void shutdown() throws IOException; +} Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/updater/LocalResourceIndexUpdater.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/updater/LocalResourceIndexUpdater.java 2008-07-09 00:26:19 UTC (rev 2423) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/updater/LocalResourceIndexUpdater.java 2008-07-09 00:30:15 UTC (rev 2424) @@ -28,6 +28,7 @@ import java.io.IOException; import java.util.logging.Logger; +import org.archive.wayback.Shutdownable; import org.archive.wayback.core.CaptureSearchResult; import org.archive.wayback.exception.ConfigurationException; import org.archive.wayback.resourceindex.LocalResourceIndex; @@ -48,7 +49,7 @@ * @author brad * @version $Date$, $Revision$ */ -public class LocalResourceIndexUpdater { +public class LocalResourceIndexUpdater implements Shutdownable { /** * Logger for this class */ @@ -71,7 +72,7 @@ * Thread object of update thread -- also is flag indicating if the thread * has already been started. Access to it is synchronized. */ - private Thread updateThread = null; + private Thread thread = null; /** * start the background index merging thread @@ -88,10 +89,21 @@ throw new ConfigurationException("No incoming"); } if(runInterval > 0) { - updateThread = new UpdateThread(this,runInterval); - updateThread.start(); + thread = new UpdateThread(this,runInterval); + thread.start(); } } + + public void shutdown() { + if(thread != null) { + thread.interrupt(); + try { + thread.join(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } private boolean mergeFile(File cdxFile) { boolean added = false; Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourcestore/indexer/IndexQueueUpdater.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourcestore/indexer/IndexQueueUpdater.java 2008-07-09 00:26:19 UTC (rev 2423) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourcestore/indexer/IndexQueueUpdater.java 2008-07-09 00:30:15 UTC (rev 2424) @@ -31,6 +31,7 @@ import java.io.PrintWriter; import java.util.logging.Logger; +import org.archive.wayback.Shutdownable; import org.archive.wayback.resourcestore.locationdb.ResourceFileLocationDB; import org.archive.wayback.util.CloseableIterator; import org.archive.wayback.util.DirMaker; @@ -45,7 +46,7 @@ * @author brad * @version $Date$, $Revision$ */ -public class IndexQueueUpdater { +public class IndexQueueUpdater implements Shutdownable { private static final Logger LOGGER = Logger.getLogger(IndexQueueUpdater.class.getName()); Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourcestore/indexer/IndexWorker.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourcestore/indexer/IndexWorker.java 2008-07-09 00:26:19 UTC (rev 2423) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourcestore/indexer/IndexWorker.java 2008-07-09 00:30:15 UTC (rev 2424) @@ -27,6 +27,7 @@ import java.io.IOException; import java.util.logging.Logger; +import org.archive.wayback.Shutdownable; import org.archive.wayback.UrlCanonicalizer; import org.archive.wayback.core.CaptureSearchResult; import org.archive.wayback.resourceindex.updater.IndexClient; @@ -45,7 +46,7 @@ * @author brad * @version $Date$, $Revision$ */ -public class IndexWorker { +public class IndexWorker implements Shutdownable { private static final Logger LOGGER = Logger.getLogger(IndexWorker.class.getName()); Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourcestore/locationdb/ResourceFileLocationDBUpdater.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourcestore/locationdb/ResourceFileLocationDBUpdater.java 2008-07-09 00:26:19 UTC (rev 2423) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourcestore/locationdb/ResourceFileLocationDBUpdater.java 2008-07-09 00:30:15 UTC (rev 2424) @@ -29,6 +29,7 @@ import java.util.Iterator; import java.util.logging.Logger; +import org.archive.wayback.Shutdownable; import org.archive.wayback.resourcestore.resourcefile.ResourceFileList; import org.archive.wayback.resourcestore.resourcefile.ResourceFileLocation; import org.archive.wayback.util.DirMaker; @@ -52,7 +53,7 @@ * @author brad * @version $Date$, $Revision$ */ -public class ResourceFileLocationDBUpdater { +public class ResourceFileLocationDBUpdater implements Shutdownable { private static final Logger LOGGER = Logger.getLogger(ResourceFileLocationDBUpdater.class.getName()); Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourcestore/resourcefile/ResourceFileSourceUpdater.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourcestore/resourcefile/ResourceFileSourceUpdater.java 2008-07-09 00:26:19 UTC (rev 2423) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourcestore/resourcefile/ResourceFileSourceUpdater.java 2008-07-09 00:30:15 UTC (rev 2424) @@ -29,6 +29,7 @@ import java.util.List; import java.util.logging.Logger; +import org.archive.wayback.Shutdownable; import org.archive.wayback.resourcestore.locationdb.ResourceFileLocationDBUpdater; import org.archive.wayback.util.DirMaker; @@ -44,7 +45,7 @@ * @author brad * @version $Date$, $Revision$ */ -public class ResourceFileSourceUpdater { +public class ResourceFileSourceUpdater implements Shutdownable { private static final Logger LOGGER = Logger.getLogger(ResourceFileSourceUpdater.class.getName()); private List<ResourceFileSource> sources = null; Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/webapp/WaybackCollection.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/webapp/WaybackCollection.java 2008-07-09 00:26:19 UTC (rev 2423) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/webapp/WaybackCollection.java 2008-07-09 00:30:15 UTC (rev 2424) @@ -25,9 +25,11 @@ package org.archive.wayback.webapp; import java.io.IOException; +import java.util.List; import org.archive.wayback.ResourceIndex; import org.archive.wayback.ResourceStore; +import org.archive.wayback.Shutdownable; import org.archive.wayback.exception.ConfigurationException; /** @@ -40,7 +42,27 @@ public class WaybackCollection { private ResourceStore resourceStore = null; private ResourceIndex resourceIndex = null; + private List<Shutdownable> shutdownables = null; private boolean shutdownDone = false; + + public void shutdown() throws IOException { + if(shutdownDone) { + return; + } + if(resourceStore != null) { + resourceStore.shutdown(); + } + if(resourceIndex != null) { + resourceIndex.shutdown(); + } + if(shutdownables != null) { + for(Shutdownable s : shutdownables) { + s.shutdown(); + } + } + shutdownDone = true; + } + public ResourceStore getResourceStore() throws ConfigurationException { if(resourceStore == null) { throw new ConfigurationException("No resourceStore declared"); @@ -59,16 +81,12 @@ public void setResourceIndex(ResourceIndex resourceIndex) { this.resourceIndex = resourceIndex; } - public void shutdown() throws IOException { - if(shutdownDone) { - return; - } - if(resourceStore != null) { - resourceStore.shutdown(); - } - if(resourceIndex != null) { - resourceIndex.shutdown(); - } - shutdownDone = true; + + public List<Shutdownable> getShutdownables() { + return shutdownables; } + + public void setShutdownables(List<Shutdownable> shutdownables) { + this.shutdownables = shutdownables; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |