diff --git a/commons/src/main/java/org/archive/checkpointing/Checkpoint.java b/commons/src/main/java/org/archive/checkpointing/Checkpoint.java index e82dcb17..a61887d3 100644 --- a/commons/src/main/java/org/archive/checkpointing/Checkpoint.java +++ b/commons/src/main/java/org/archive/checkpointing/Checkpoint.java @@ -31,13 +31,14 @@ import org.json.JSONException; import org.json.JSONObject; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Required; +import org.springframework.context.Lifecycle; /** * Represents a single checkpoint, by its name and main store directory. * * @contributor gojomo */ -public class Checkpoint implements InitializingBean { +public class Checkpoint implements InitializingBean, Lifecycle { private final static Logger LOGGER = Logger.getLogger(Checkpoint.class.getName()); @@ -51,7 +52,9 @@ public class Checkpoint implements InitializingBean { boolean success = false; /** - * Checkpoints directory + * Checkpoints directory; either an absolute path, or relative to the + * CheckpointService's checkpointsDirectory (which will be inserted as + * the COnfigPath base before the Checkpoint is consulted). */ protected ConfigPath checkpointDir = new ConfigPath("checkpoint directory",""); @@ -89,6 +92,24 @@ public class Checkpoint implements InitializingBean { shortName = name.substring(0, name.indexOf("-")); } + boolean isRunning = false; + public boolean isRunning() { + return isRunning; + } + public void start() { + if(isRunning) { + return; + } + isRunning = true; + if(!Checkpoint.hasValidStamp(checkpointDir.getFile())) { + throw new RuntimeException("checkpoint '"+checkpointDir.getFile().getAbsolutePath()+"' missing validity stamp file"); + } + } + public void stop() { + isRunning = false; + } + + public void setSuccess(boolean b) { success = b; } @@ -137,4 +158,8 @@ public class Checkpoint implements InitializingBean { throw new RuntimeException(e); } } + + public static boolean hasValidStamp(File checkpointDirectory) { + return (new File(checkpointDirectory,Checkpoint.VALIDITY_STAMP_FILENAME)).exists(); + } } \ No newline at end of file diff --git a/engine/src/main/java/org/archive/crawler/framework/CheckpointService.java b/engine/src/main/java/org/archive/crawler/framework/CheckpointService.java index 9cad8684..f61ab9d2 100644 --- a/engine/src/main/java/org/archive/crawler/framework/CheckpointService.java +++ b/engine/src/main/java/org/archive/crawler/framework/CheckpointService.java @@ -298,7 +298,7 @@ public class CheckpointService implements Lifecycle, ApplicationContextAware { Iterator iter = dirsList.iterator(); while(iter.hasNext()) { File cpDir = iter.next(); - if(! (new File(cpDir,Checkpoint.VALIDITY_STAMP_FILENAME)).exists()) { + if(!Checkpoint.hasValidStamp(cpDir)) { LOGGER.warning("checkpoint '"+cpDir+"' missing validity stamp file; ignoring"); iter.remove(); }