This is an automated email from the ASF dual-hosted git repository.
tallison pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tika.git
The following commit(s) were added to refs/heads/main by this push:
new 99f1433 TIKA-3526 - various cleanups
99f1433 is described below
commit 99f1433d18a4d33203f7ea5d708f1fa57d7afd92
Author: tallison <[email protected]>
AuthorDate: Tue Dec 7 13:48:38 2021 -0500
TIKA-3526 - various cleanups
---
.../parser/microsoft/AbstractPOIFSExtractor.java | 3 ++-
.../tika/parser/microsoft/HSLFExtractor.java | 22 +++++++++++++++++++---
.../microsoft/POIContainerExtractionTest.java | 4 +++-
3 files changed, 24 insertions(+), 5 deletions(-)
diff --git
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/AbstractPOIFSExtractor.java
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/AbstractPOIFSExtractor.java
index f4ee3e8..47571a6 100644
---
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/AbstractPOIFSExtractor.java
+++
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/AbstractPOIFSExtractor.java
@@ -120,7 +120,6 @@ abstract class AbstractPOIFSExtractor {
try {
if (filename != null) {
- embeddedMetadata.set(Metadata.TIKA_MIME_FILE, filename);
embeddedMetadata.set(TikaCoreProperties.RESOURCE_NAME_KEY,
filename);
}
if (relationshipID != null) {
@@ -202,6 +201,8 @@ abstract class AbstractPOIFSExtractor {
if (ole.getLabel() != null) {
metadata.set(TikaCoreProperties.RESOURCE_NAME_KEY,
rName + '/' + ole.getLabel());
+ } else {
+ metadata.add(TikaCoreProperties.RESOURCE_NAME_KEY,
rName);
}
if (ole.getCommand() != null) {
metadata.add(TikaCoreProperties.ORIGINAL_RESOURCE_NAME, ole.getCommand());
diff --git
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/HSLFExtractor.java
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/HSLFExtractor.java
index 38de8f2..addc182 100644
---
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/HSLFExtractor.java
+++
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/HSLFExtractor.java
@@ -62,6 +62,7 @@ import org.apache.tika.metadata.Metadata;
import org.apache.tika.mime.MediaType;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.sax.XHTMLContentHandler;
+import org.apache.tika.utils.StringUtils;
public class HSLFExtractor extends AbstractPOIFSExtractor {
@@ -175,11 +176,15 @@ public class HSLFExtractor extends AbstractPOIFSExtractor
{
throws SAXException {
HSLFObjectData[] objectData = ss.getEmbeddedObjects();
-
+ int i = 0;
for (HSLFObjectData d : objectData) {
if
(processedEmbeddedObjects.contains(d.getExOleObjStg().getPersistId())) {
continue;
}
+ String filename = d.getFileName();
+ if (StringUtils.isBlank(filename)) {
+ filename = "UNKNOWN-" + i;
+ }
try (TikaInputStream tis =
TikaInputStream.get(d.getInputStream())) {
if (FileMagic.valueOf(tis) == FileMagic.OLE2) {
try (POIFSFileSystem pfs = new POIFSFileSystem(tis)) {
@@ -188,14 +193,25 @@ public class HSLFExtractor extends AbstractPOIFSExtractor
{
if (pfs.getRoot().getEntryNames().size() < 1) {
return;
}
- handleEmbeddedOfficeDoc(pfs.getRoot(),
d.getFileName(), xhtml);
+ handleEmbeddedOfficeDoc(pfs.getRoot(), filename,
xhtml);
}
} else {
- handleEmbeddedResource(tis, d.getFileName(), null, null,
xhtml, true);
+ boolean shouldProcess = false;
+ try {
+ tis.mark(1);
+ int b = tis.read();
+ shouldProcess = b > -1;
+ } finally {
+ tis.reset();
+ }
+ if (shouldProcess) {
+ handleEmbeddedResource(tis, filename, null, null,
xhtml, true);
+ }
}
} catch (IOException | TikaException e) {
EmbeddedDocumentUtil.recordException(e, parentMetadata);
}
+ i++;
}
}
diff --git
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/test/java/org/apache/tika/parser/microsoft/POIContainerExtractionTest.java
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/test/java/org/apache/tika/parser/microsoft/POIContainerExtractionTest.java
index 203bdac..c2cdfbe 100644
---
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/test/java/org/apache/tika/parser/microsoft/POIContainerExtractionTest.java
+++
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/test/java/org/apache/tika/parser/microsoft/POIContainerExtractionTest.java
@@ -21,6 +21,8 @@ import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -46,7 +48,7 @@ public class POIContainerExtractionTest extends
AbstractPOIContainerExtractionTe
@Test
public void testWithoutEmbedded() throws Exception {
ContainerExtractor extractor = new ParserContainerExtractor();
- debug(getRecursiveMetadata("testPPT.ppt"));
+
String[] files =
new String[]{"testEXCEL.xls", "testWORD.doc", "testPPT.ppt",
"testVISIO.vsd",
"test-outlook.msg"};