diff --git a/engine/src/main/java/org/archive/crawler/framework/Engine.java b/engine/src/main/java/org/archive/crawler/framework/Engine.java index c69fd86d..fee3ef86 100644 --- a/engine/src/main/java/org/archive/crawler/framework/Engine.java +++ b/engine/src/main/java/org/archive/crawler/framework/Engine.java @@ -88,10 +88,15 @@ public class Engine { } public boolean considerAsJobDirectory(File dir) { - for (File cxml : dir.listFiles(new FilenameFilter() { + File[] candidateConfigs = dir.listFiles(new FilenameFilter() { public boolean accept(File dir, String name) { return name.endsWith(".cxml"); - }})) { + }}); + if(candidateConfigs==null) { + // directory did not exist or did not contain cxml + return false; + } + for (File cxml : candidateConfigs) { try { CrawlJob cj = new CrawlJob(cxml); if(!jobConfigs.containsKey(cj.getShortName())) { diff --git a/engine/src/main/java/org/archive/crawler/restlet/EngineResource.java b/engine/src/main/java/org/archive/crawler/restlet/EngineResource.java index e56e3667..afa7ed4b 100644 --- a/engine/src/main/java/org/archive/crawler/restlet/EngineResource.java +++ b/engine/src/main/java/org/archive/crawler/restlet/EngineResource.java @@ -26,6 +26,7 @@ import java.io.Writer; import java.util.ArrayList; import java.util.Collections; +import org.apache.commons.lang.StringUtils; import org.archive.crawler.framework.CrawlJob; import org.archive.crawler.framework.Engine; import org.restlet.Context; @@ -73,7 +74,17 @@ public class EngineResource extends Resource { if("rescan".equals(action)) { getEngine().findJobConfigs(); } else if ("add".equals(action)) { - getEngine().considerAsJobDirectory(new File(form.getFirstValue("addpath"))); + String path = form.getFirstValue("addpath"); + if(path==null) { + path = ""; + } + boolean added = false; + if(StringUtils.isNotBlank(path)) { + added = getEngine().considerAsJobDirectory(new File(path)); + } + if(!added) { + Flash.addFlash(getResponse(), "not a valid preexisting job directory: \""+path+"\"", Flash.Kind.NACK); + } } // default: redirect to GET self getResponse().redirectSeeOther(getRequest().getOriginalRef()); @@ -98,6 +109,8 @@ public class EngineResource extends Resource { pw.println("
"); pw.println("