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"};

Reply via email to