From 555e42f4dec6ab8096d6b43ebcf1b02a269f8ad7 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Wed, 11 Mar 2015 16:17:41 +0000 Subject: [PATCH] Give a more helpful exception if a Visio VSDX ooxml file is passed to ExtractorFactory git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1665929 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/extractor/ExtractorFactory.java | 19 ++++++++++++++++-- .../poi/extractor/TestExtractorFactory.java | 18 ++++++++++++++++- test-data/diagram/test.vsdx | Bin 0 -> 32350 bytes 3 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 test-data/diagram/test.vsdx diff --git a/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java b/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java index 46cd2cd38..0bc7eb31d 100644 --- a/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java +++ b/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java @@ -68,6 +68,8 @@ import org.apache.xmlbeans.XmlException; public class ExtractorFactory { public static final String CORE_DOCUMENT_REL = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"; + public static final String VISIO_DOCUMENT_REL = + "http://schemas.microsoft.com/visio/2010/relationships/document"; /** Should this thread prefer event based over usermodel based extractors? */ @@ -158,12 +160,25 @@ public class ExtractorFactory { } public static POIXMLTextExtractor createExtractor(OPCPackage pkg) throws IOException, OpenXML4JException, XmlException { + // Check for the normal Office core document PackageRelationshipCollection core = pkg.getRelationshipsByType(CORE_DOCUMENT_REL); - if(core.size() != 1) { - throw new IllegalArgumentException("Invalid OOXML Package received - expected 1 core document, found " + core.size()); + + // If nothing was found, try some of the other OOXML-based core types + if (core.size() == 0) { + // Could it be a visio one? + PackageRelationshipCollection visio = + pkg.getRelationshipsByType(VISIO_DOCUMENT_REL); + if (visio.size() == 1) { + throw new IllegalArgumentException("Text extraction not supported for Visio OOXML files"); + } + } + // Should just be a single core document, complain if not + if (core.size() != 1) { + throw new IllegalArgumentException("Invalid OOXML Package received - expected 1 core document, found " + core.size()); } + // Grab the core document part, and try to identify from that PackagePart corePart = pkg.getPart(core.getRelationship(0)); // Is it XSSF? diff --git a/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java b/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java index 7f79afaad..35198a80e 100644 --- a/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java +++ b/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java @@ -71,6 +71,7 @@ public class TestExtractorFactory extends TestCase { private File msgEmbMsg; private File vsd; + private File vsdx; private File pub; @@ -109,6 +110,7 @@ public class TestExtractorFactory extends TestCase { POIDataSamples dgTests = POIDataSamples.getDiagramInstance(); vsd = getFileAndCheck(dgTests, "Test_Visio-Some_Random_Text.vsd"); + vsdx = getFileAndCheck(dgTests, "test.vsdx"); POIDataSamples pubTests = POIDataSamples.getPublisherInstance(); pub = getFileAndCheck(pubTests, "Simple.pub"); @@ -230,7 +232,7 @@ public class TestExtractorFactory extends TestCase { ); extractor.close(); - // Visio + // Visio - binary assertTrue( ExtractorFactory.createExtractor(vsd) instanceof VisioTextExtractor @@ -238,6 +240,13 @@ public class TestExtractorFactory extends TestCase { assertTrue( ExtractorFactory.createExtractor(vsd).getText().length() > 50 ); + // Visio - vsdx + try { + ExtractorFactory.createExtractor(vsdx); + fail(); + } catch(IllegalArgumentException e) { + // Good + } // Publisher assertTrue( @@ -342,6 +351,13 @@ public class TestExtractorFactory extends TestCase { assertTrue( ExtractorFactory.createExtractor(new FileInputStream(vsd)).getText().length() > 50 ); + // Visio - vsdx + try { + ExtractorFactory.createExtractor(new FileInputStream(vsdx)); + fail(); + } catch(IllegalArgumentException e) { + // Good + } // Publisher assertTrue( diff --git a/test-data/diagram/test.vsdx b/test-data/diagram/test.vsdx new file mode 100644 index 0000000000000000000000000000000000000000..1fa690356e477ef15c1e9605e9f7312576b382f7 GIT binary patch literal 32350 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 QkpSjDcUvwV|M>0y0GSB*DgXcg literal 0 HcmV?d00001