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"]