From f71833e1d9696710c09dc4b5ca13da1a9a2b2e80 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 26 Apr 2021 15:12:32 +0000 Subject: [PATCH] Do not return null for POITextExtractor.getMetadataTextExtractor() for old Excel files To adhere to the JavaDoc of the POITextExtractor interface which does not document a possible null return. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1889205 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/stress/HSSFFileHandler.java | 4 +-- .../poi/hssf/extractor/OldExcelExtractor.java | 33 +++++++++++++++++- .../hssf/extractor/TestOldExcelExtractor.java | 21 +++++++++++ test-data/spreadsheet/stress.xls | Bin 51712 -> 36864 bytes 4 files changed, 55 insertions(+), 3 deletions(-) diff --git a/poi-integration/src/test/java/org/apache/poi/stress/HSSFFileHandler.java b/poi-integration/src/test/java/org/apache/poi/stress/HSSFFileHandler.java index 9ee54b4790..1e0348cac5 100644 --- a/poi-integration/src/test/java/org/apache/poi/stress/HSSFFileHandler.java +++ b/poi-integration/src/test/java/org/apache/poi/stress/HSSFFileHandler.java @@ -107,7 +107,7 @@ class HSSFFileHandler extends SpreadsheetHandler { // a test-case to test this locally without executing the full TestAllFiles @Test void test() throws Exception { - File file = new File("test-data/spreadsheet/49219.xls"); + File file = new File("../test-data/spreadsheet/59074.xls"); try (InputStream stream = new FileInputStream(file)) { handleFile(stream, file.getPath()); @@ -122,6 +122,6 @@ class HSSFFileHandler extends SpreadsheetHandler { @Test @SuppressWarnings("java:S2699") void testExtractor() throws Exception { - handleExtracting(new File("test-data/spreadsheet/BOOK_in_capitals.xls")); + handleExtracting(new File("../test-data/spreadsheet/59074.xls")); } } \ No newline at end of file diff --git a/poi/src/main/java/org/apache/poi/hssf/extractor/OldExcelExtractor.java b/poi/src/main/java/org/apache/poi/hssf/extractor/OldExcelExtractor.java index e6a55f88ff..d5ef5142e7 100644 --- a/poi/src/main/java/org/apache/poi/hssf/extractor/OldExcelExtractor.java +++ b/poi/src/main/java/org/apache/poi/hssf/extractor/OldExcelExtractor.java @@ -316,7 +316,38 @@ public class OldExcelExtractor implements POITextExtractor { @Override public POITextExtractor getMetadataTextExtractor() { - return null; + return new POITextExtractor() { + + @Override + public String getText() { + return ""; + } + + @Override + public POITextExtractor getMetadataTextExtractor() { + throw new IllegalStateException("You already have the Metadata Text Extractor, not recursing!"); + } + + @Override + public void setCloseFilesystem(boolean doCloseFilesystem) { + + } + + @Override + public boolean isCloseFilesystem() { + return toClose != null; + } + + @Override + public Closeable getFilesystem() { + return toClose; + } + + @Override + public Object getDocument() { + return ris; + } + }; } @Override diff --git a/poi/src/test/java/org/apache/poi/hssf/extractor/TestOldExcelExtractor.java b/poi/src/test/java/org/apache/poi/hssf/extractor/TestOldExcelExtractor.java index 3fb037c93e..7dbabe14b1 100644 --- a/poi/src/test/java/org/apache/poi/hssf/extractor/TestOldExcelExtractor.java +++ b/poi/src/test/java/org/apache/poi/hssf/extractor/TestOldExcelExtractor.java @@ -35,6 +35,7 @@ import java.security.Permission; import org.apache.poi.EmptyFileException; import org.apache.poi.EncryptedDocumentException; import org.apache.poi.POIDataSamples; +import org.apache.poi.extractor.POITextExtractor; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.poifs.filesystem.OfficeXmlFileException; import org.apache.poi.poifs.filesystem.POIFSFileSystem; @@ -378,4 +379,24 @@ final class TestOldExcelExtractor { this.status = status; } } + + @Test + void testMetaData() throws IOException { + try (OldExcelExtractor extractor = createExtractor("testEXCEL_3.xls")) { + POITextExtractor metaData = extractor.getMetadataTextExtractor(); + assertNotNull(metaData); + + assertThrows(IllegalStateException.class, metaData::getMetadataTextExtractor); + assertEquals("", metaData.getText()); + assertNotNull(metaData.getDocument()); + assertTrue(metaData.isCloseFilesystem()); + assertNotNull(metaData.getFilesystem()); + + // the setter is a NOP + metaData.setCloseFilesystem(false); + assertTrue(metaData.isCloseFilesystem()); + + metaData.close(); + } + } } diff --git a/test-data/spreadsheet/stress.xls b/test-data/spreadsheet/stress.xls index b613a8975179e0365968feb077d4655c041c670b..c773b819d5716d9d2d3bce7538501ffe956e3b2c 100644 GIT binary patch delta 11587 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 X-a3;&BOl|gUh!M6F89xWTls$gebOg| literal 51712 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 SOW$YRe;OeE=kwp#0{;(sUC~?s