From 58513a8940fd9ea7679f41c139c3333f410d0cef Mon Sep 17 00:00:00 2001 From: gojomo Date: Thu, 8 Oct 2009 20:57:04 +0000 Subject: [PATCH] [HER-1687] H3 web UI: adding non-existent job directory gives unhelpful NPE * Engine.java return 'false' rather than NPE when given directory non-existent/contains no .cxml * EngineResource.java better handle empty 'add' path; show NACK flash when 'add' has no effect --- .../org/archive/crawler/framework/Engine.java | 9 +++++++-- .../archive/crawler/restlet/EngineResource.java | 15 ++++++++++++++- 2 files changed, 21 insertions(+), 3 deletions(-) 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("

"+engineTitle+"

"); + Flash.renderFlashesHTML(pw, getRequest()); + pw.println("Memory: "); pw.println(engine.heapReport()); pw.println("

");