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

mridulpathak pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 8ad04e59bd Improved: Update Apache Tika to 4.1.0 (OFBIZ-13719)
8ad04e59bd is described below

commit 8ad04e59bd55797ae67654f8323351ca376213e8
Author: Mridul Pathak <[email protected]>
AuthorDate: Fri Oct 23 15:21:34 2026 +0530

    Improved: Update Apache Tika to 4.1.0 (OFBIZ-13719)
    
    Supersedes Dependabot PR #2400, which bumped the version only and did not 
compile against the Tika 4 API.
    
    - Update tika to 4.1.0 and remove tika-parsers from the version catalog and 
the tika bundle; it is a pom-only aggregator in both Tika 3 and 4 and never 
added a jar to the classpath.
    - Adapt SecuredUpload.recursiveParserWrapper to the Tika 4 API 
(TikaInputStream, RecursiveParserWrapperHandler without the embedded-resource 
limit argument, HttpHeaders.CONTENT_TYPE).
    - Wrap the response stream in a TikaInputStream for PDFParser in 
WidgetMacroLibraryTests.
---
 .../main/java/org/apache/ofbiz/security/SecuredUpload.java    | 11 ++++++-----
 .../org/apache/ofbiz/widget/test/WidgetMacroLibraryTests.java |  7 +++----
 gradle/libs.versions.toml                                     |  7 +++----
 3 files changed, 12 insertions(+), 13 deletions(-)

diff --git 
a/framework/security/src/main/java/org/apache/ofbiz/security/SecuredUpload.java 
b/framework/security/src/main/java/org/apache/ofbiz/security/SecuredUpload.java
index 9d9009cc22..a613b070b2 100644
--- 
a/framework/security/src/main/java/org/apache/ofbiz/security/SecuredUpload.java
+++ 
b/framework/security/src/main/java/org/apache/ofbiz/security/SecuredUpload.java
@@ -29,7 +29,6 @@ import java.io.DataInputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
-import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.Reader;
 import java.io.StringReader;
@@ -102,6 +101,8 @@ import 
org.apache.pdfbox.pdmodel.PDEmbeddedFilesNameTreeNode;
 import 
org.apache.pdfbox.pdmodel.common.filespecification.PDComplexFileSpecification;
 import org.apache.tika.Tika;
 import org.apache.tika.exception.TikaException;
+import org.apache.tika.io.TikaInputStream;
+import org.apache.tika.metadata.HttpHeaders;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.metadata.TikaCoreProperties;
 import org.apache.tika.parser.AutoDetectParser;
@@ -1449,7 +1450,7 @@ public class SecuredUpload {
      * document formats including: MSWord, MSExcel, MSPowerPoint, RTF, PDF, 
MSG and several others.
      * <p>
      * The "content" format is determined by the ContentHandlerFactory, and 
the content is stored in
-     * {@link org.apache.tika.parser.RecursiveParserWrapper#TIKA_CONTENT}
+     * {@link org.apache.tika.metadata.TikaCoreProperties#TIKA_CONTENT}
      * <p>
      * The drawback to the RecursiveParserWrapper is that it caches metadata 
and contents in memory. This should not be used on files whose contents
      * are too big to be handled in memory.
@@ -1470,14 +1471,14 @@ public class SecuredUpload {
         Metadata metadata = new Metadata();
         metadata.set(TikaCoreProperties.ORIGINAL_RESOURCE_NAME, 
file.getName());
         ParseContext context = new ParseContext();
-        RecursiveParserWrapperHandler handler = new 
RecursiveParserWrapperHandler(factory, -1);
-        try (InputStream stream = new FileInputStream(file)) {
+        RecursiveParserWrapperHandler handler = new 
RecursiveParserWrapperHandler(factory);
+        try (TikaInputStream stream = TikaInputStream.get(file.toPath())) {
             wrapper.parse(stream, handler, metadata, context);
         }
         List<Metadata> metadatas = handler.getMetadataList();
         Set<String> mimeTypes = new HashSet<>();
         for (Metadata metadata1 : metadatas) {
-            mimeTypes.add(metadata1.get(Metadata.CONTENT_TYPE));
+            mimeTypes.add(metadata1.get(HttpHeaders.CONTENT_TYPE));
         }
         return mimeTypes;
     }
diff --git 
a/framework/widget/src/test/java/org/apache/ofbiz/widget/test/WidgetMacroLibraryTests.java
 
b/framework/widget/src/test/java/org/apache/ofbiz/widget/test/WidgetMacroLibraryTests.java
index 2ee029742a..1f54148949 100644
--- 
a/framework/widget/src/test/java/org/apache/ofbiz/widget/test/WidgetMacroLibraryTests.java
+++ 
b/framework/widget/src/test/java/org/apache/ofbiz/widget/test/WidgetMacroLibraryTests.java
@@ -33,6 +33,7 @@ import org.apache.ofbiz.base.util.HttpClientException;
 import org.apache.ofbiz.testtools.HttpsTestSupport;
 import org.apache.ofbiz.testtools.JunitJupiterTest;
 import org.apache.ofbiz.testtools.JupiterTestHelper;
+import org.apache.tika.io.TikaInputStream;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.parser.ParseContext;
 import org.apache.tika.parser.pdf.PDFParser;
@@ -194,13 +195,11 @@ public class WidgetMacroLibraryTests implements 
JupiterTestHelper {
                 http.getResponseContentType(), "Response contentType isn't 
good : " + http.getResponseContentType());
 
         String screenOutString = "";
-        try {
+        try (TikaInputStream screenTikaStream = 
TikaInputStream.get(screenInputStream)) {
             BodyContentHandler handler = new 
BodyContentHandler(Integer.MAX_VALUE);
             Metadata metadata = new Metadata();
-            new PDFParser().parse(screenInputStream, handler, metadata, new 
ParseContext());
+            new PDFParser().parse(screenTikaStream, handler, metadata, new 
ParseContext());
             screenOutString = handler.toString();
-        } finally {
-            screenInputStream.close();
         }
         //Test if a ftl macro error is present
         assertFalse(screenOutString.contains("FreeMarker template error:"),
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index ae5d61e876..23ea50a952 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -57,8 +57,8 @@ pdfbox = "3.0.8"
 shiro = "3.0.1"
 # Shared by sshd-core, sshd-sftp.
 sshd = "2.20.0"
-# Shared by tika-core, tika-parsers, tika-parser-pdf-module.
-tika = "3.3.3"
+# Shared by tika-core, tika-parser-pdf-module.
+tika = "4.1.0"
 cxf-rt-frontend-jaxrs = "4.2.4"
 # Remember to change the version number (10 now) in javadoc block if needed. 
Shared by
 # tomcat-catalina-ha, tomcat-jasper.
@@ -153,7 +153,6 @@ shiro-lang = { module = "org.apache.shiro:shiro-lang", 
version.ref = "shiro" }
 sshd-core = { module = "org.apache.sshd:sshd-core", version.ref = "sshd" }
 sshd-sftp = { module = "org.apache.sshd:sshd-sftp", version.ref = "sshd" }
 tika-core = { module = "org.apache.tika:tika-core", version.ref = "tika" }
-tika-parsers = { module = "org.apache.tika:tika-parsers", version.ref = "tika" 
}
 tika-parser-pdf-module = { module = "org.apache.tika:tika-parser-pdf-module", 
version.ref = "tika" }
 cxf-rt-frontend-jaxrs = { module = "org.apache.cxf:cxf-rt-frontend-jaxrs", 
version.ref = "cxf-rt-frontend-jaxrs" }
 tomcat-catalina-ha = { module = "org.apache.tomcat:tomcat-catalina-ha", 
version.ref = "tomcat" }
@@ -213,6 +212,6 @@ testng = { module = "org.testng:testng", version.ref = 
"testng" }
 jersey = ["jersey-container-servlet", "jersey-hk2", "jersey-media-multipart", 
"jersey-media-json-jackson"]
 swagger = ["swagger-jaxrs2-core", "swagger-jaxrs2-servlet-initializer", 
"swagger-annotations"]
 batik = ["batik-anim", "batik-util", "batik-bridge"]
-tika = ["tika-core", "tika-parsers", "tika-parser-pdf-module"]
+tika = ["tika-core", "tika-parser-pdf-module"]
 pdfbox = ["pdfbox-core", "pdfbox-io"]
 shiro = ["shiro-crypto-cipher", "shiro-crypto-core", "shiro-lang"]

Reply via email to