This is an automated email from the ASF dual-hosted git repository.
jacopoc pushed a commit to branch release24.09
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
The following commit(s) were added to refs/heads/release24.09 by this push:
new 0bcdef8b79 Backport to release24.09 commit
5c66eaa681ad0ac7fec5410b764463e651cac300
0bcdef8b79 is described below
commit 0bcdef8b7942fb0ec9bb98250a4fa9aa0c37372e
Author: Jacopo Cappellato <[email protected]>
AuthorDate: Thu Nov 20 12:08:44 2025 +0100
Backport to release24.09 commit 5c66eaa681ad0ac7fec5410b764463e651cac300
Improved: Refactor readHtmlDocument in UelFunctions to obtain an
instance of org.w3c.dom.Document using the standard javax.xml.parsers.*
APIs instead of org.cyberneko.html.
Removing the Cyberneko dependency allows us to drop the Maven repository
https://repository.ow2.org/nexus/content/repositories/public/, which is
offline at the time of this commit (due to a license issue) and was
causing OFBiz builds to fail. This repository has also had issues in the
recent past, as reported in
https://issues.apache.org/jira/browse/OFBIZ-13206.
---
build.gradle | 4 ----
dependencies.gradle | 1 -
.../org/apache/ofbiz/base/util/string/UelFunctions.java | 13 +++++++------
3 files changed, 7 insertions(+), 11 deletions(-)
diff --git a/build.gradle b/build.gradle
index 033ac80377..b4815d5de5 100644
--- a/build.gradle
+++ b/build.gradle
@@ -153,10 +153,6 @@ allprojects {
maven {
url 'https://clojars.org/repo'
}
- maven {
- // org.cyberneko.html.parsers (used by UELFunctions, was in esapi
before 2.3)
- url "https://repository.ow2.org/nexus/content/repositories/public/"
- }
}
}
diff --git a/dependencies.gradle b/dependencies.gradle
index 5266a9c4d6..d60fc1f7c5 100644
--- a/dependencies.gradle
+++ b/dependencies.gradle
@@ -74,7 +74,6 @@ dependencies {
implementation 'org.freemarker:freemarker:2.3.34' // Remember to change
the version number in FreeMarkerWorker class when upgrading. See OFBIZ-10019 if
>= 2.4
implementation 'org.owasp.esapi:esapi:2.5.3.1'
- implementation 'org.cyberneko:html:1.9.8'
implementation 'org.springframework:spring-test:5.3.29' // 6.1.4 does not
compile
implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.2'
implementation 'oro:oro:2.0.8'
diff --git
a/framework/base/src/main/java/org/apache/ofbiz/base/util/string/UelFunctions.java
b/framework/base/src/main/java/org/apache/ofbiz/base/util/string/UelFunctions.java
index 0089d7848e..520f911b3b 100644
---
a/framework/base/src/main/java/org/apache/ofbiz/base/util/string/UelFunctions.java
+++
b/framework/base/src/main/java/org/apache/ofbiz/base/util/string/UelFunctions.java
@@ -36,6 +36,8 @@ import java.util.Map;
import java.util.TimeZone;
import javax.el.FunctionMapper;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
@@ -49,7 +51,6 @@ import org.apache.ofbiz.base.util.UtilDateTime;
import org.apache.ofbiz.base.util.UtilProperties;
import org.apache.ofbiz.base.util.UtilXml;
import org.apache.ofbiz.widget.renderer.ScreenRenderer;
-import org.cyberneko.html.parsers.DOMParser;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.xml.sax.SAXException;
@@ -365,14 +366,14 @@ public class UelFunctions {
try {
URL url = FlexibleLocation.resolveLocation(str);
if (url != null) {
- DOMParser parser = new DOMParser();
- parser.setFeature("http://xml.org/sax/features/namespaces",
false);
- parser.parse(url.toExternalForm());
- document = parser.getDocument();
+ DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder = factory.newDocumentBuilder();
+ document = builder.parse(url.openStream());
+ document.getDocumentElement().normalize();
} else {
Debug.logError("Unable to locate HTML document " + str,
MODULE);
}
- } catch (IOException | SAXException e) {
+ } catch (IOException | ParserConfigurationException | SAXException e) {
Debug.logError(e, "Error while reading HTML document " + str,
MODULE);
}
return document;