From 7f1700400ba2b7464ace0c1896c736e151e3fb4b Mon Sep 17 00:00:00 2001 From: Hunter Stern Date: Fri, 1 Aug 2014 17:37:31 -0700 Subject: [PATCH 1/2] Allow xml extractor to handle urls in CDATA. --- .../main/java/org/archive/modules/extractor/ExtractorXML.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/src/main/java/org/archive/modules/extractor/ExtractorXML.java b/modules/src/main/java/org/archive/modules/extractor/ExtractorXML.java index 64a1d500..92baf805 100644 --- a/modules/src/main/java/org/archive/modules/extractor/ExtractorXML.java +++ b/modules/src/main/java/org/archive/modules/extractor/ExtractorXML.java @@ -56,7 +56,8 @@ public class ExtractorXML extends ContentExtractor { Logger.getLogger(ExtractorXML.class.getName()); static final Pattern XML_URI_EXTRACTOR = Pattern - .compile("(?s)[\"\'>]\\s*([^<>\\s'\"@]+)\\s*[\"\'<]"); + .compile("(?s)[\"\'>]\\s*(?:\\s\'\"@]+)\\s*(?:\\]\\]>)?[\"\'<]"); + // GROUPS: // (G1) possible uri From 27d632159d6addc2836f1c41076bc18904367121 Mon Sep 17 00:00:00 2001 From: Hunter Stern Date: Mon, 1 Sep 2014 10:13:25 -0700 Subject: [PATCH 2/2] Add test case for ExtractorXML --- .../modules/extractor/ExtractorXMLTest.java | 58 ++++++++++++++++++- 1 file changed, 55 insertions(+), 3 deletions(-) diff --git a/modules/src/test/java/org/archive/modules/extractor/ExtractorXMLTest.java b/modules/src/test/java/org/archive/modules/extractor/ExtractorXMLTest.java index a77842a4..9933298b 100644 --- a/modules/src/test/java/org/archive/modules/extractor/ExtractorXMLTest.java +++ b/modules/src/test/java/org/archive/modules/extractor/ExtractorXMLTest.java @@ -18,15 +18,67 @@ */ package org.archive.modules.extractor; -import org.archive.modules.ProcessorTestBase; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import org.archive.modules.CrawlMetadata; +import org.archive.modules.CrawlURI; +import org.archive.modules.extractor.StringExtractorTestBase.TestData; +import org.archive.net.UURI; +import org.archive.net.UURIFactory; +import org.archive.util.Recorder; /** * Unit test for {@link ExtractorXML}. * * @author pjack */ -public class ExtractorXMLTest extends ProcessorTestBase { +public class ExtractorXMLTest extends StringExtractorTestBase { - // TODO TESTME! + final public static String[] VALID_TEST_DATA = new String[] { + "http://conservation.org", + "http://conservation.org", + + "", + "http://sp10.conservation.org/CIFMGPhotos/790x444_skerry_gallery_02.jpg", + + }; + @Override + protected String[] getValidTestData() { + return VALID_TEST_DATA; + } + + @Override + protected Extractor makeExtractor() { + ExtractorXML result = new ExtractorXML(); + UriErrorLoggerModule ulm = new UnitTestUriLoggerModule(); + result.setLoggerModule(ulm); + return result; + } + + protected ExtractorXML getExtractor() { + return (ExtractorXML) extractor; + } + + @Override + protected Collection makeData(String content, String destURI) + throws Exception { + List result = new ArrayList(); + UURI src = UURIFactory.getInstance("http://www.archive.org/start/"); + CrawlURI euri = new CrawlURI(src, null, null, + LinkContext.SPECULATIVE_MISC); + Recorder recorder = createRecorder(content, "UTF-8"); + euri.setContentType("text/xml"); + euri.setRecorder(recorder); + euri.setContentSize(content.length()); + + UURI dest = UURIFactory.getInstance(destURI); + CrawlURI link = euri.createCrawlURI(dest, LinkContext.SPECULATIVE_MISC, Hop.SPECULATIVE); + result.add(new TestData(euri, link)); + + return result; + } + }