diff --git a/commons/src/main/java/org/archive/util/ArchiveUtils.java b/commons/src/main/java/org/archive/util/ArchiveUtils.java index eb7f1c4e..6e8e8d7f 100644 --- a/commons/src/main/java/org/archive/util/ArchiveUtils.java +++ b/commons/src/main/java/org/archive/util/ArchiveUtils.java @@ -897,14 +897,36 @@ public class ArchiveUtils { return TLDS.contains(dom.toUpperCase()); } - public static void closeQuietly(Closeable input) { + public static void closeQuietly(Object input) { + if(input == null || ! (input instanceof Closeable)) { + return; + } try { - if (input != null) { - input.close(); - } + ((Closeable)input).close(); } catch (IOException ioe) { // ignore } } + + /** + * Perform checks as to whether normal execution should proceed. + * + * If an external interrupt is detected, throw an interrupted exception. + * Used before anything that should not be attempted by a 'zombie' thread + * that the Frontier/Crawl has given up on. + * + * @throws InterruptedException + */ + public static void continueCheck() throws InterruptedException { + if(Thread.interrupted()) { + throw new InterruptedException("interrupt detected"); + } + } + +// public static long doubleMurmur(byte[] data) { +// int first = MurmurHash.hash(data, 7); +// int second = MurmurHash.hash(data, 13); +// return (((long)first)<<32) | ((long)second & 0x00000000ffffffffl); +// } } diff --git a/engine/src/main/java/org/archive/crawler/deciderules/ClassKeyMatchesRegExpDecideRule.java b/engine/src/main/java/org/archive/crawler/deciderules/ClassKeyMatchesRegExpDecideRule.java index 2d731071..cf33e314 100644 --- a/engine/src/main/java/org/archive/crawler/deciderules/ClassKeyMatchesRegExpDecideRule.java +++ b/engine/src/main/java/org/archive/crawler/deciderules/ClassKeyMatchesRegExpDecideRule.java @@ -27,8 +27,8 @@ package org.archive.crawler.deciderules; import org.archive.crawler.framework.CrawlController; import org.archive.modules.CrawlURI; -import org.archive.modules.ProcessorURI; import org.archive.modules.deciderules.MatchesRegExpDecideRule; +import org.springframework.beans.factory.annotation.Autowired; /** @@ -41,19 +41,24 @@ public class ClassKeyMatchesRegExpDecideRule extends MatchesRegExpDecideRule { private static final long serialVersionUID = 3L; - - final private CrawlController controller; + protected CrawlController controller; + public CrawlController getCrawlController() { + return this.controller; + } + @Autowired + public void setCrawlController(CrawlController controller) { + this.controller = controller; + } /** * Usual constructor. */ - public ClassKeyMatchesRegExpDecideRule(CrawlController controller) { - this.controller = controller; + public ClassKeyMatchesRegExpDecideRule() { } @Override - protected String getString(ProcessorURI uri) { + protected String getString(CrawlURI uri) { CrawlURI curi = (CrawlURI)uri; return controller.getFrontier().getClassKey(curi); }