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

commit 062e607ee72c2a7cead5b5f5d232ee3fbafbbdd8
Author: tallison <[email protected]>
AuthorDate: Fri Jul 21 16:23:43 2023 -0400

    TIKA-4103 -- check for resourceName; unrelated, add resourceName for macros 
in OfficeParser
---
 .../src/main/java/org/apache/tika/eval/app/ExtractComparer.java  | 9 +++++++--
 .../main/java/org/apache/tika/parser/microsoft/OfficeParser.java | 4 ++++
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git 
a/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/ExtractComparer.java
 
b/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/ExtractComparer.java
index dbab7d476..62723d7e6 100644
--- 
a/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/ExtractComparer.java
+++ 
b/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/ExtractComparer.java
@@ -470,7 +470,9 @@ public class ExtractComparer extends AbstractProfiler {
         if (digestA == null) {
             return -1;
         }
+        String resourceName = 
metadata.get(TikaCoreProperties.RESOURCE_NAME_KEY);
 
+        int cand = -1;
         for (int i = 0; i < metadataListB.size(); i++) {
             if (handledB.contains(i)) {
                 continue;
@@ -478,10 +480,13 @@ public class ExtractComparer extends AbstractProfiler {
             Metadata mB = metadataListB.get(i);
             String digestB = mB.get(sharedDigestKey);
             if (digestA.equalsIgnoreCase(digestB)) {
-                return i;
+                cand = i;
+                if (resourceName != null && 
resourceName.equals(mB.get(TikaCoreProperties.RESOURCE_NAME_KEY))) {
+                    return i;
+                }
             }
         }
-        return -1;
+        return cand;
     }
 
     private void writeContrasts(Map<Cols, String> data, ContrastStatistics 
contrastStatistics) {
diff --git 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java
 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java
index e862260f6..c3c81e792 100644
--- 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java
+++ 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java
@@ -61,6 +61,7 @@ import org.apache.tika.parser.microsoft.ooxml.OOXMLParser;
 import org.apache.tika.sax.BodyContentHandler;
 import org.apache.tika.sax.EmbeddedContentHandler;
 import org.apache.tika.sax.XHTMLContentHandler;
+import org.apache.tika.utils.StringUtils;
 
 /**
  * Defines a Microsoft document content extractor.
@@ -126,6 +127,9 @@ public class OfficeParser extends AbstractOfficeParser {
             m.set(TikaCoreProperties.EMBEDDED_RESOURCE_TYPE,
                     TikaCoreProperties.EmbeddedResourceType.MACRO.toString());
             m.set(Metadata.CONTENT_TYPE, "text/x-vbasic");
+            if (!StringUtils.isBlank(e.getKey())) {
+                m.set(TikaCoreProperties.RESOURCE_NAME_KEY, e.getKey());
+            }
             if (embeddedDocumentExtractor.shouldParseEmbedded(m)) {
                 embeddedDocumentExtractor.parseEmbedded(
                         new 
UnsynchronizedByteArrayInputStream(e.getValue().getBytes(StandardCharsets.UTF_8)),

Reply via email to