]> source.dussan.org Git - poi.git/commitdiff
#62921 - Provide OOXMLLite alternative for Java 12+
authorAndreas Beeker <kiwiwings@apache.org>
Sun, 18 Nov 2018 22:09:44 +0000 (22:09 +0000)
committerAndreas Beeker <kiwiwings@apache.org>
Sun, 18 Nov 2018 22:09:44 +0000 (22:09 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1846870 13f79535-47bb-0310-9956-ffa450edef68

build.xml
src/integrationtest/org/apache/poi/TestAllFiles.java
src/integrationtest/org/apache/poi/stress/AbstractFileHandler.java

index a49aa531117791dc04ca0032d4da16801cfad35c..f78ad14f46a4bb9ee07813feb7939fa6971c4077 100644 (file)
--- a/build.xml
+++ b/build.xml
@@ -335,8 +335,11 @@ under the License.
         <propertyref name="user.country"/>
         <propertyref name="javax.xml.stream.XMLInputFactory"/>
         <propertyref name="org.apache.commons.logging.Log"/>
-        <propertyref name="java.locale.providers"/>        <!-- required for Java 9 compilation -->
-        <propertyref name="version.id"/>    <!-- to detect if we are running on slow Gump VM -->
+        <!-- required for Java 9 compilation -->
+        <propertyref name="java.locale.providers"/>
+        <!-- to detect if we are running on slow Gump VM -->
+        <propertyref name="version.id"/>
+        <propertyref name="scratchpad.ignore"/>
     </propertyset>
 
     <!-- these need to be set differently when running with Java 9 -->
index 7d4495d87c96c35e7dfcd02eb34030df0dc5facf..61c47b9e8875e0a8aad7c6e7e62d4a94c5d61cfe 100644 (file)
@@ -90,6 +90,7 @@ import org.junit.runners.Parameterized.Parameters;
 @RunWith(Parameterized.class)
 public class TestAllFiles {
     private static final File ROOT_DIR = new File("test-data");
+    private static final boolean IGNORE_SCRATCHPAD = Boolean.getBoolean("scratchpad.ignore");
 
     public static final String[] SCAN_EXCLUDES = new String[] { "**/.svn/**", "lost+found", "**/.git/**" };
 
@@ -98,6 +99,7 @@ public class TestAllFiles {
     
     // map file extensions to the actual mappers
     public static final Map<String, FileHandler> HANDLERS = new HashMap<>();
+
     static {
         // Excel
         HANDLERS.put(".xls", new HSSFFileHandler());
@@ -107,17 +109,17 @@ public class TestAllFiles {
         HANDLERS.put(".xlsb", new XSSFBFileHandler());
 
         // Word
-        HANDLERS.put(".doc", new HWPFFileHandler());
+        HANDLERS.put(".doc", IGNORE_SCRATCHPAD ? new HPSFFileHandler() : new HWPFFileHandler());
         HANDLERS.put(".docx", new XWPFFileHandler());
         HANDLERS.put(".dotx", new XWPFFileHandler());
         HANDLERS.put(".docm", new XWPFFileHandler());
 
         // OpenXML4J files
-        HANDLERS.put(".ooxml", new OPCFileHandler());          // OPCPackage
-        HANDLERS.put(".zip", new OPCFileHandler());      // OPCPackage
+        HANDLERS.put(".ooxml", new OPCFileHandler());
+        HANDLERS.put(".zip", new OPCFileHandler());
 
         // Powerpoint
-        HANDLERS.put(".ppt", new HSLFFileHandler());
+        HANDLERS.put(".ppt", IGNORE_SCRATCHPAD ? new HPSFFileHandler() : new HSLFFileHandler());
         HANDLERS.put(".pptx", new XSLFFileHandler());
         HANDLERS.put(".pptm", new XSLFFileHandler());
         HANDLERS.put(".ppsm", new XSLFFileHandler());
@@ -126,13 +128,13 @@ public class TestAllFiles {
         HANDLERS.put(".potx", new XSLFFileHandler());
 
         // Outlook
-        HANDLERS.put(".msg", new HSMFFileHandler());
+        HANDLERS.put(".msg", IGNORE_SCRATCHPAD ? new HPSFFileHandler() : new HSMFFileHandler());
 
         // Publisher
-        HANDLERS.put(".pub", new HPBFFileHandler());
+        HANDLERS.put(".pub", IGNORE_SCRATCHPAD ? new HPSFFileHandler() : new HPBFFileHandler());
 
         // Visio - binary
-        HANDLERS.put(".vsd", new HDGFFileHandler());
+        HANDLERS.put(".vsd", IGNORE_SCRATCHPAD ? new HPSFFileHandler() : new HDGFFileHandler());
         
         // Visio - ooxml
         HANDLERS.put(".vsdm", new XDGFFileHandler());
@@ -153,7 +155,7 @@ public class TestAllFiles {
         HANDLERS.put(".adm", new HPSFFileHandler());
 
         // Microsoft TNEF
-        HANDLERS.put(".dat", new HMEFFileHandler());
+        HANDLERS.put(".dat", IGNORE_SCRATCHPAD ? new HPSFFileHandler() : new HMEFFileHandler());
 
         // TODO: are these readable by some of the formats?
         HANDLERS.put(".wri", new NullFileHandler());
@@ -300,7 +302,7 @@ public class TestAllFiles {
         "spreadsheet/54764-2.xlsx",   // see TestXSSFBugs.bug54764()
         "spreadsheet/54764.xlsx",     // see TestXSSFBugs.bug54764()
         "poifs/unknown_properties.msg", // POIFS properties corrupted
-        "poifs/only-zero-byte-streams.ole2", // No actual contents
+        (IGNORE_SCRATCHPAD ? "" : "poifs/only-zero-byte-streams.ole2"), // No actual contents
         "spreadsheet/poc-xmlbomb.xlsx",  // contains xml-entity-expansion
         "spreadsheet/poc-xmlbomb-empty.xlsx",  // contains xml-entity-expansion
         "spreadsheet/poc-shared-strings.xlsx",  // contains shared-string-entity-expansion
@@ -438,8 +440,17 @@ public class TestAllFiles {
             }
         }
 
-        // let some file handlers do additional stuff
-        handler.handleAdditional(inputFile);
+        try {
+            // let some file handlers do additional stuff
+            handler.handleAdditional(inputFile);
+        } catch (AssumptionViolatedException e) {
+            // file handler ignored this file
+        } catch (Exception e) {
+            if(!EXPECTED_FAILURES.contains(file) && !AbstractFileHandler.EXPECTED_EXTRACTOR_FAILURES.contains(file)) {
+                System.out.println("Failed: " + file);
+                throw new Exception("While handling " + file, e);
+            }
+        }
     }
 
     public static String getExtension(String file) {
index 480a7faf618296fc04c01484058c73f534710e51..7f9c22ff414a9721dfd9ab4a9a63207f70262c89 100644 (file)
@@ -79,26 +79,26 @@ public abstract class AbstractFileHandler implements FileHandler {
         long modified = file.lastModified();
         
         POITextExtractor extractor = null;
-        try  {
+        try {
             extractor = ExtractorFactory.createExtractor(file);
             assertNotNull("Should get a POITextExtractor but had none for file " + file, extractor);
 
             assertNotNull("Should get some text but had none for file " + file, extractor.getText());
-            
+
             // also try metadata
             @SuppressWarnings("resource")
             POITextExtractor metadataExtractor = extractor.getMetadataTextExtractor();
             assertNotNull(metadataExtractor.getText());
 
-            assertFalse("Expected Extraction to fail for file " + file + " and handler " + this + ", but did not fail!", 
+            assertFalse("Expected Extraction to fail for file " + file + " and handler " + this + ", but did not fail!",
                     EXPECTED_EXTRACTOR_FAILURES.contains(file.getParentFile().getName() + "/" + file.getName()));
-            
+
             assertEquals("File should not be modified by extractor", length, file.length());
             assertEquals("File should not be modified by extractor", modified, file.lastModified());
-            
+
             handleExtractingAsStream(file);
-            
-            if(extractor instanceof POIOLE2TextExtractor) {
+
+            if (extractor instanceof POIOLE2TextExtractor) {
                 try (HPSFPropertiesExtractor hpsfExtractor = new HPSFPropertiesExtractor((POIOLE2TextExtractor) extractor)) {
                     assertNotNull(hpsfExtractor.getDocumentSummaryInformationText());
                     assertNotNull(hpsfExtractor.getSummaryInformationText());
@@ -115,6 +115,10 @@ public abstract class AbstractFileHandler implements FileHandler {
             String msg = "org.apache.poi.EncryptedDocumentException: Export Restrictions in place - please install JCE Unlimited Strength Jurisdiction Policy files";
             assumeFalse(msg.equals(e.getMessage()));
             throw e;
+        } catch (IllegalStateException e) {
+            if (!e.getMessage().contains("POI Scratchpad jar missing") || !Boolean.getBoolean("scratchpad.ignore")) {
+                throw e;
+            }
         } finally {
             IOUtils.closeQuietly(extractor);
         }