This is an automated email from the ASF dual-hosted git repository.

tballison 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 0eb16365d1 [TIKA-4993] Upgrade poi.version from 5.5.1 to 6.0.0 (#3405)
0eb16365d1 is described below

commit 0eb16365d1a35c034adeebf42a8ba2a9ea4ebbf1
Author: Tilman Hausherr <[email protected]>
AuthorDate: Mon Oct 26 13:47:15 2026 +0100

    [TIKA-4993] Upgrade poi.version from 5.5.1 to 6.0.0 (#3405)
    
    * [TIKA-4993] Upgrade poi.version from 5.5.1 to 6.0.0
    
    * Refactor cell method to use Comment interface
    
    Refactor cell method to use POI's Comment interface and deprecate the old 
method.
    
    * Fix method signature formatting in XSSFExcelExtractorDecorator
    
    Co-authored-by: Copilot Autofix powered by AI 
<[email protected]>
    
    * Refactor comment handling in XSSFExcelExtractorDecorator
    
    ---------
    
    Co-authored-by: Copilot Autofix powered by AI 
<[email protected]>
---
 tika-parent/pom.xml                                |  2 +-
 .../ooxml/XSSFExcelExtractorDecorator.java         | 52 +++++++++++++++++-----
 2 files changed, 43 insertions(+), 11 deletions(-)

diff --git a/tika-parent/pom.xml b/tika-parent/pom.xml
index cb1f8a4b13..361194bf35 100644
--- a/tika-parent/pom.xml
+++ b/tika-parent/pom.xml
@@ -445,7 +445,7 @@
     <pax.exam.version>4.14.0</pax.exam.version>
     <!-- TODO remove PDFBOX-6261 bugfix in PDFMarkedContent2XHTML with 3.0.9 
release -->
     <pdfbox.version>3.0.8</pdfbox.version>
-    <poi.version>5.5.1</poi.version>
+    <poi.version>6.0.0</poi.version>
     <protobuf.version>3.25.9</protobuf.version>
     <quartz.version>2.5.2</quartz.version>
     <reactor.core.version>3.8.8</reactor.core.version>
diff --git 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/XSSFExcelExtractorDecorator.java
 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/XSSFExcelExtractorDecorator.java
index c7907f93e7..62d6bbd5d9 100644
--- 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/XSSFExcelExtractorDecorator.java
+++ 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/XSSFExcelExtractorDecorator.java
@@ -38,8 +38,10 @@ import 
org.apache.poi.openxml4j.opc.PackageRelationshipCollection;
 import org.apache.poi.openxml4j.opc.PackageRelationshipTypes;
 import org.apache.poi.openxml4j.opc.PackagingURIHelper;
 import org.apache.poi.openxml4j.opc.TargetMode;
+import org.apache.poi.ss.usermodel.Comment;
 import org.apache.poi.ss.usermodel.DataFormatter;
 import org.apache.poi.ss.usermodel.HeaderFooter;
+import org.apache.poi.ss.usermodel.RichTextString;
 import org.apache.poi.ss.util.CellReference;
 import org.apache.poi.xssf.eventusermodel.XSSFReader;
 import 
org.apache.poi.xssf.eventusermodel.XSSFSheetXMLHandler.SheetContentsHandler;
@@ -993,6 +995,7 @@ public class XSSFExcelExtractorDecorator extends 
AbstractOOXMLExtractor {
             footers = new ArrayList<>();
         }
 
+        @Override
         public void startRow(int rowNum) {
             try {
                 // Missing rows, if desired, with a single empty row
@@ -1020,6 +1023,7 @@ public class XSSFExcelExtractorDecorator extends 
AbstractOOXMLExtractor {
 
         }
 
+        @Override
         public void endRow(int rowNum) {
             try {
                 xhtml.endElement("tr");
@@ -1045,6 +1049,7 @@ public class XSSFExcelExtractorDecorator extends 
AbstractOOXMLExtractor {
             }
         }
 
+        @Override
         public void cell(String cellRef, String formattedValue,
                           XSSFCommentsShim.CommentData comment) {
             try {
@@ -1085,20 +1090,15 @@ public class XSSFExcelExtractorDecorator extends 
AbstractOOXMLExtractor {
         }
 
         /**
-         * Bridge for POI's {@link SheetContentsHandler} interface, used by the
-         * XLSB (binary) path via {@link 
org.apache.poi.xssf.binary.XSSFBSheetHandler}.
+         * {@inheritDoc}
          */
+        @Override
+        @Deprecated
         public void cell(String cellRef, String formattedValue, XSSFComment 
comment) {
-            XSSFCommentsShim.CommentData commentData = null;
-            if (comment != null) {
-                String text = comment.getString() != null ?
-                        comment.getString().getString() : "";
-                commentData = new XSSFCommentsShim.CommentData(
-                        comment.getAuthor(), text);
-            }
-            cell(cellRef, formattedValue, commentData);
+            cell(cellRef, formattedValue, (Comment) comment);
         }
 
+        @Override
         public void headerFooter(String text, boolean isHeader, String 
tagName) {
             if (!includeHeadersFooters) {
                 return;
@@ -1114,6 +1114,21 @@ public class XSSFExcelExtractorDecorator extends 
AbstractOOXMLExtractor {
         public void endSheet() {
             // no-op — satisfies both TikaSheetContentsHandler and 
SheetContentsHandler
         }
+
+        /**
+         * Bridge for POI's {@link SheetContentsHandler} interface, used by the
+         * XLSB (binary) path via {@link 
org.apache.poi.xssf.binary.XSSFBSheetHandler}.
+         */
+        @Override
+        public void cell(String cellReference, String formattedValue, Comment 
comment) {
+            XSSFCommentsShim.CommentData commentData = null;
+            if (comment != null) {
+                RichTextString richText = comment.getString();
+                String text = (richText != null) ? richText.getString() : "";
+                commentData = new 
XSSFCommentsShim.CommentData(comment.getAuthor(), text);
+            }
+            cell(cellReference, formattedValue, commentData);
+        }
     }
 
     protected static class HeaderFooterFromString implements HeaderFooter {
@@ -1123,24 +1138,30 @@ public class XSSFExcelExtractorDecorator extends 
AbstractOOXMLExtractor {
             this.text = text;
         }
 
+        @Override
         public String getCenter() {
             return hfHelper.getCenterSection(text);
         }
 
+        @Override
         public void setCenter(String paramString) {
         }
 
+        @Override
         public String getLeft() {
             return hfHelper.getLeftSection(text);
         }
 
+        @Override
         public void setLeft(String paramString) {
         }
 
+        @Override
         public String getRight() {
             return hfHelper.getRightSection(text);
         }
 
+        @Override
         public void setRight(String paramString) {
         }
     }
@@ -1159,6 +1180,7 @@ public class XSSFExcelExtractorDecorator extends 
AbstractOOXMLExtractor {
             this.delegate = delegate;
         }
 
+        @Override
         public void startElement(String uri, String localName, String qName, 
Attributes atts)
                 throws SAXException {
             if ("sheetProtection".equals(qName)) {
@@ -1179,42 +1201,52 @@ public class XSSFExcelExtractorDecorator extends 
AbstractOOXMLExtractor {
             delegate.startElement(uri, localName, qName, atts);
         }
 
+        @Override
         public void characters(char[] ch, int start, int length) throws 
SAXException {
             delegate.characters(ch, start, length);
         }
 
+        @Override
         public void endDocument() throws SAXException {
             delegate.endDocument();
         }
 
+        @Override
         public void endElement(String uri, String localName, String qName) 
throws SAXException {
             delegate.endElement(uri, localName, qName);
         }
 
+        @Override
         public void endPrefixMapping(String prefix) throws SAXException {
             delegate.endPrefixMapping(prefix);
         }
 
+        @Override
         public void ignorableWhitespace(char[] ch, int start, int length) 
throws SAXException {
             delegate.ignorableWhitespace(ch, start, length);
         }
 
+        @Override
         public void processingInstruction(String target, String data) throws 
SAXException {
             delegate.processingInstruction(target, data);
         }
 
+        @Override
         public void setDocumentLocator(Locator locator) {
             delegate.setDocumentLocator(locator);
         }
 
+        @Override
         public void skippedEntity(String name) throws SAXException {
             delegate.skippedEntity(name);
         }
 
+        @Override
         public void startDocument() throws SAXException {
             delegate.startDocument();
         }
 
+        @Override
         public void startPrefixMapping(String prefix, String uri) throws 
SAXException {
             delegate.startPrefixMapping(prefix, uri);
         }

Reply via email to