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

ashishvijaywargiya 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 6103826dc5 Since Release24.09 still runs on Java 17, we've rolled 
trunk's compile target back to Java 17 while keeping it tested on Java 21 too.
6103826dc5 is described below

commit 6103826dc59a03a0954ec6c42b758ef1a5758e84
Author: Ashish Vijaywargiya <[email protected]>
AuthorDate: Thu Jul 16 15:26:54 2026 +0530

    Since Release24.09 still runs on Java 17, we've rolled trunk's compile 
target back to Java 17 while keeping it tested on Java 21 too.
    
    Since Release24.09 still runs on Java 17, we've rolled trunk's compile 
target back to Java 17 while keeping it tested on Java 21 too.
    
    Summary:
    
    1) build.gradle and gradle.yml now target Java 17 again (bytecode, javadoc, 
CI). Please refer how I have used metrix support in gradle.yml file.
    
    2) CI now runs a JDK matrix (17 and 21) on every push/PR, skipping 21 for 
release* branches.
    
    3) Reverted Java 19+ only calls (Locale.of, Thread.threadId) back to their 
pre-19 equivalents across 16 files, since JDK 17 doesn't have them.
    
    4) Confirmed those older calls are only "deprecated," not "removed," so 
they're safe on both JDK versions.
    
    5) Cleaned up all resulting compiler warnings with narrowly-scoped 
@SuppressWarnings("deprecation").
    
    6) Also caught and reverted two committed secret values in 
security.properties back to blank.
    
    7) Ran the full unit test suite (423 tests) on both JDK 17 and JDK 21 — 0 
warnings, 0 failures on both.
---
 .github/workflows/gradle.yml                        | 13 +++++++++++--
 .../workeffort/workeffort/WorkEffortServices.java   |  1 +
 build.gradle                                        | 21 +++++++++++++++++++--
 dependencies.gradle                                 |  2 +-
 .../java/org/apache/ofbiz/base/util/UtilCodec.java  | 13 ++++++++-----
 .../java/org/apache/ofbiz/base/util/UtilMisc.java   |  1 +
 .../java/org/apache/ofbiz/base/util/UtilNumber.java |  6 ++++--
 .../org/apache/ofbiz/base/util/UtilProperties.java  |  1 +
 .../java/org/apache/ofbiz/base/util/UtilXml.java    |  3 ++-
 .../org/apache/ofbiz/base/util/UtilCodecTests.java  | 10 +++++++---
 .../apache/ofbiz/base/util/UtilPropertiesTests.java |  1 +
 .../java/org/apache/ofbiz/common/CommonEvents.java  |  2 +-
 .../org/apache/ofbiz/entity/jdbc/SQLProcessor.java  |  1 +
 .../ofbiz/entity/transaction/TransactionUtil.java   |  4 ++++
 .../apache/ofbiz/entity/util/EntityDataLoader.java  | 12 ++++++------
 .../entityext/data/EntityDataLoadContainer.java     |  8 ++++----
 .../java/org/apache/ofbiz/base/start/Config.java    |  1 +
 .../apache/ofbiz/testtools/EntityXmlAssertTest.java |  1 +
 .../org/apache/ofbiz/webapp/control/JWTManager.java |  4 ++--
 .../ofbiz/webapp/ftl/OfbizCurrencyTransform.java    |  1 +
 .../ofbiz/webapp/ftl/OfbizNumberTransform.java      |  1 +
 .../org/apache/ofbiz/webtools/WebToolsServices.java |  4 ++--
 .../macro/RenderableFtlFormElementsBuilderTest.java |  3 ++-
 gradle.properties                                   |  6 +++---
 24 files changed, 85 insertions(+), 35 deletions(-)

diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml
index 56915a8e27..35f52b9bbb 100644
--- a/.github/workflows/gradle.yml
+++ b/.github/workflows/gradle.yml
@@ -30,6 +30,15 @@ permissions:
 
 jobs:
   build:
+    # trunk builds sourceCompatibility/targetCompatibility 17 bytecode (see 
build.gradle),
+    # but is matrix-tested on both the JDK 17 runtime it targets and the JDK 
21 runtime
+    # it may adopt later. release* branches stay JDK 17 only until they make 
that same move,
+    # since trunk fixes must stay backportable to them.
+    if: ${{ !(matrix.java == 21 && ((github.event_name == 'push' && 
startsWith(github.ref_name, 'release')) || (github.event_name == 'pull_request' 
&& startsWith(github.base_ref, 'release')))) }}
+    strategy:
+      fail-fast: false
+      matrix:
+        java: [ 17, 21 ]
 
     runs-on: ubuntu-latest
 
@@ -40,10 +49,10 @@ jobs:
     - name: Check out OFBiz sources
       uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
 
-    - name: Set up JDK 17
+    - name: Set up JDK ${{ matrix.java }}
       uses: actions/setup-java@0f481fcb613427c0f801b606911222b5b6f3083a # 
v5.5.0
       with:
-        java-version: 17
+        java-version: ${{ matrix.java }}
         distribution: temurin
         cache: 'gradle'
 
diff --git 
a/applications/workeffort/src/main/java/org/apache/ofbiz/workeffort/workeffort/WorkEffortServices.java
 
b/applications/workeffort/src/main/java/org/apache/ofbiz/workeffort/workeffort/WorkEffortServices.java
index 5fff1f7307..9f65de4f2e 100644
--- 
a/applications/workeffort/src/main/java/org/apache/ofbiz/workeffort/workeffort/WorkEffortServices.java
+++ 
b/applications/workeffort/src/main/java/org/apache/ofbiz/workeffort/workeffort/WorkEffortServices.java
@@ -953,6 +953,7 @@ public class WorkEffortServices {
                 }
                 continue;
             }
+            @SuppressWarnings("deprecation")
             Locale locale = reminder.getString("localeId") == null ? 
Locale.getDefault() : new Locale(reminder.getString("localeId"));
             TimeZone timeZone = reminder.getString("timeZoneId") == null ? 
TimeZone.getDefault()
                     : TimeZone.getTimeZone(reminder.getString("timeZoneId"));
diff --git a/build.gradle b/build.gradle
index 7c0d72f6b2..dde39621c9 100644
--- a/build.gradle
+++ b/build.gradle
@@ -120,9 +120,16 @@ application {
     mainClass = 'org.apache.ofbiz.base.start.Start'
     applicationDefaultJvmArgs = project.hasProperty('jvmArgs')
             ? jvmArgs.tokenize()
-            : ['-Xms128M','-Xmx1024M',
+            : ['-Xms128M', '-Xmx1024M',
             
'-Djdk.serialFilter=maxarray=100000;maxdepth=20;maxrefs=1000;maxbytes=500000', 
// OFBIZ-12592 and OFBIZ-12716
-            '--add-opens=java.base/java.util=ALL-UNNAMED' // OFBIZ-12726
+            // Required for embedded Tomcat 10.1 and libraries (Groovy 5, 
Spring 6) under Java 17+ strong encapsulation
+            '--add-opens=java.base/java.lang=ALL-UNNAMED',
+            '--add-opens=java.base/java.io=ALL-UNNAMED',
+            '--add-opens=java.base/java.util=ALL-UNNAMED',         // 
OFBIZ-12726
+            '--add-opens=java.base/java.util.concurrent=ALL-UNNAMED',
+            '--add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED',
+            // Allow libraries using the stable Foreign Function & Memory API 
(Apache SSHD, Tika)
+            '--enable-native-access=ALL-UNNAMED',
             ]
 }
 
@@ -163,6 +170,12 @@ tasks.withType(JavaCompile) {
         options.compilerArgs << '-Xlint:all'
         // Exclude varargs warnings which are not silenced by @SafeVarargs.
         options.compilerArgs << '-Xlint:-varargs'
+        // this-escape lint was introduced in JDK 21's javac and is an invalid 
flag on JDK 17,
+        // so only pass it when compiling with a JDK that recognizes it.
+        if (JavaVersion.current().isCompatibleWith(JavaVersion.VERSION_21)) {
+            // Exclude this-escape warnings pending proper refactoring of 
widget/service classes.
+            options.compilerArgs << '-Xlint:-this-escape'
+        }
     }
 }
 
@@ -363,6 +376,10 @@ tasks.eclipse.dependsOn(cleanEclipse)
 test {
     useJUnitPlatform()
     jvmArgs "-javaagent:${classpath.find { it.name.contains('jmockit') 
}.absolutePath}"
+    // Required for JMockit instrumentation, Mockito, and Spring Test under 
Java 21
+    jvmArgs '--add-opens=java.base/java.lang=ALL-UNNAMED'
+    jvmArgs '--add-opens=java.base/java.lang.reflect=ALL-UNNAMED'
+    jvmArgs '--enable-native-access=ALL-UNNAMED'
     testLogging {
         events "passed", "skipped", "failed"
     }
diff --git a/dependencies.gradle b/dependencies.gradle
index ab8ef10dba..03303d97ae 100644
--- a/dependencies.gradle
+++ b/dependencies.gradle
@@ -110,7 +110,7 @@ dependencies {
     runtimeOnly 'org.apache.geronimo.specs:geronimo-jaxrpc_1.1_spec:2.1'
     runtimeOnly 'org.apache.logging.log4j:log4j-1.2-api:2.25.4' // for 
external jars using the old log4j1.2: routes logging to log4j 2
     runtimeOnly 'org.apache.logging.log4j:log4j-jul:2.25.4' // for external 
jars using the java.util.logging: routes logging to log4j 2
-    runtimeOnly 'org.apache.logging.log4j:log4j-slf4j-impl:2.25.4' // for 
external jars using slf4j: routes logging to log4j 2
+    runtimeOnly 'org.apache.logging.log4j:log4j-slf4j2-impl:2.25.4' // for 
external jars using slf4j 2.x: routes logging to log4j 2
     runtimeOnly 'org.apache.logging.log4j:log4j-web:2.25.4' //???
     runtimeOnly 'org.apache.logging.log4j:log4j-jcl:2.25.4' // need to 
constrain to version to avoid classpath conflict (ReflectionUtil)
 
diff --git 
a/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilCodec.java 
b/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilCodec.java
index cf07507adf..2f37c0ddeb 100644
--- a/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilCodec.java
+++ b/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilCodec.java
@@ -53,6 +53,9 @@ import org.owasp.html.TagBalancingHtmlStreamEventReceiver;
 @SuppressWarnings("rawtypes")
 public class UtilCodec {
     private static final String MODULE = UtilCodec.class.getName();
+    // sentinel locale used because labels are not available in the 
testClasses Gradle task
+    @SuppressWarnings("deprecation")
+    private static final Locale TEST_LOCALE = new Locale("test");
     private static final HtmlEncoder HTML_ENCODER = new HtmlEncoder();
     private static final XmlEncoder XML_ENCODER = new XmlEncoder();
     private static final StringEncoder STRING_ENCODER = new StringEncoder();
@@ -435,7 +438,7 @@ public class UtilCodec {
             Debug.logError("Canonicalization (format consistency, character 
escaping that is mixed or double, etc) "
                     + "error for attribute named [" + valueName + "], String 
[" + value + "]: " + e.toString(), MODULE);
             String issueMsg = null;
-            if (locale.equals(new Locale("test"))) { // labels are not 
available in testClasses Gradle task
+            if (locale.equals(TEST_LOCALE)) {
                 issueMsg = "In field [" + valueName + "] found character 
escaping (mixed or double) "
                         + "that is not allowed or other format consistency 
error: ";
             } else {
@@ -448,7 +451,7 @@ public class UtilCodec {
         // check for "<", ">"
         if (value.indexOf("<") >= 0 || value.indexOf(">") >= 0) {
             String issueMsg = null;
-            if (locale.equals(new Locale("test"))) { // labels are not 
available in testClasses Gradle task
+            if (locale.equals(TEST_LOCALE)) {
                 issueMsg = "In field [" + valueName + "] less-than (<) and 
greater-than (>) symbols are not allowed.";
             } else {
                 issueMsg = UtilProperties.getMessage("SecurityUiLabels", 
"PolicyNoneLess-thanGreater-than",
@@ -463,7 +466,7 @@ public class UtilCodec {
         if (JS_EVENT_LIST.stream().anyMatch(s -> 
s.toLowerCase(Locale.ROOT).contains(onEventLower))
                 || value.contains("seekSegmentTime")) {
             String issueMsg = null;
-            if (locale.equals(new Locale("test"))) { // labels are not 
available in testClasses Gradle task
+            if (locale.equals(TEST_LOCALE)) {
                 issueMsg = "In field [" + valueName + "] Javascript events are 
not allowed.";
             } else {
                 issueMsg = UtilProperties.getMessage("SecurityUiLabels", 
"PolicyNoneJsEvents",
@@ -501,7 +504,7 @@ public class UtilCodec {
         PolicyFactory policy = null;
         try {
             Class<?> customPolicyClass = null;
-            if (locale.equals(new Locale("test"))) { // labels are not 
available in testClasses Gradle task
+            if (locale.equals(TEST_LOCALE)) {
                 customPolicyClass = 
Class.forName("org.apache.ofbiz.base.html.CustomSafePolicy");
             } else {
                 customPolicyClass = 
Class.forName(UtilProperties.getPropertyValue("owasp", 
"sanitizer.custom.safe.policy.class"));
@@ -566,7 +569,7 @@ public class UtilCodec {
             // Maybe later we will figure out that some more HTML entities 
will need to be added to here, see OFBIZ-12691
             if (filtered != null && !value.replace("&#39;", 
"'").replace("&#34;", "\"").replace("&#64;", 
"@").equals(unescapeEcmaScriptAndHtml4)) {
                 String issueMsg = null;
-                if (locale.equals(new Locale("test"))) { // labels are not 
available in testClasses Gradle task
+                if (locale.equals(TEST_LOCALE)) {
                     issueMsg = "In field [" + valueName + "] by our input 
policy, your input has not been accepted "
                             + "for security reason. Please check and modify 
accordingly, thanks.";
                 } else {
diff --git 
a/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilMisc.java 
b/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilMisc.java
index 30fbcb3bd2..c5caccf742 100644
--- a/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilMisc.java
+++ b/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilMisc.java
@@ -550,6 +550,7 @@ public final class UtilMisc {
      * @param localeString The locale string (en_US)
      * @return Locale The new Locale object or null if no valid locale can be 
interpreted
      */
+    @SuppressWarnings("deprecation")
     public static Locale parseLocale(String localeString) {
         if (UtilValidate.isEmpty(localeString)) {
             return null;
diff --git 
a/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilNumber.java 
b/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilNumber.java
index 659a507a22..dbd21ff664 100644
--- a/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilNumber.java
+++ b/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilNumber.java
@@ -172,8 +172,10 @@ public final class UtilNumber {
     static {
         rbnfRuleSets = new HashMap<>();
         rbnfRuleSets.put(Locale.US, RULE_SET_EN_US);
-        rbnfRuleSets.put(new Locale("th"), RULE_SET_TH_TH);
-        rbnfRuleSets.put(new Locale("en", "IN"), RULE_SET_EN_IN);
+        @SuppressWarnings("deprecation") Locale thLocale = new Locale("th");
+        @SuppressWarnings("deprecation") Locale enInLocale = new Locale("en", 
"IN");
+        rbnfRuleSets.put(thLocale, RULE_SET_TH_TH);
+        rbnfRuleSets.put(enInLocale, RULE_SET_EN_IN);
     }
 
     private UtilNumber() { }
diff --git 
a/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilProperties.java 
b/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilProperties.java
index ce9b63e742..5b3239e31e 100644
--- 
a/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilProperties.java
+++ 
b/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilProperties.java
@@ -751,6 +751,7 @@ public final class UtilProperties implements Serializable {
      * a list containing <code>en_US</code> and <code>en</code>.
      * @return A list of candidate locales.
      */
+    @SuppressWarnings("deprecation")
     public static List<Locale> localeToCandidateList(Locale locale) {
         List<Locale> localeList = new LinkedList<>();
         localeList.add(locale);
diff --git 
a/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilXml.java 
b/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilXml.java
index 8fff8b7727..1c8777d115 100644
--- a/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilXml.java
+++ b/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilXml.java
@@ -29,6 +29,7 @@ import java.io.OutputStream;
 import java.io.Reader;
 import java.io.StringWriter;
 import java.io.Writer;
+import java.net.URI;
 import java.net.URL;
 import java.net.URLConnection;
 import java.util.LinkedList;
@@ -417,7 +418,7 @@ public final class UtilXml {
                 innerUrlStr = innerUrlStr.substring(0, bangIdx);
             }
             try {
-                urlHost = new URL(innerUrlStr).getHost();
+                urlHost = URI.create(innerUrlStr).toURL().getHost();
             } catch (java.net.MalformedURLException e) {
                 throw new IOException("Cannot determine host from jar URL: " + 
url);
             }
diff --git 
a/framework/base/src/test/java/org/apache/ofbiz/base/util/UtilCodecTests.java 
b/framework/base/src/test/java/org/apache/ofbiz/base/util/UtilCodecTests.java
index fd36a1cfc2..9e1ef14377 100644
--- 
a/framework/base/src/test/java/org/apache/ofbiz/base/util/UtilCodecTests.java
+++ 
b/framework/base/src/test/java/org/apache/ofbiz/base/util/UtilCodecTests.java
@@ -30,6 +30,10 @@ import org.junit.jupiter.api.Test;
 
 public class UtilCodecTests {
 
+    // sentinel locale used because labels are not available in the 
testClasses Gradle task
+    @SuppressWarnings("deprecation")
+    private static final Locale TEST_LOCALE = new Locale("test");
+
     @Test
     public void canonicalizeRevealsEscapedXSS() {
         String xssVector = "&lt;script&gtalert(\"XSS 
vector\");&lt;/script&gt;";
@@ -42,7 +46,7 @@ public class UtilCodecTests {
         String xssVector = "&lt;script&gtalert(\"XSS 
vector\");&lt;/script&gt;";
         List<String> errorList = new ArrayList<>();
         String canonicalizedXssVector = 
UtilCodec.checkStringForHtmlStrictNone("fieldName", xssVector, errorList,
-                new Locale("test")); // labels are not available in 
testClasses Gradle task
+                TEST_LOCALE);
         assertEquals("<script>alert(\"XSS vector\");</script>", 
canonicalizedXssVector);
         assertEquals(1, errorList.size());
         assertEquals("In field [fieldName] less-than (<) and greater-than (>) 
symbols are not allowed.",
@@ -91,7 +95,7 @@ public class UtilCodecTests {
             String... wantedMessages) {
         List<String> gottenMessages = new ArrayList<>();
         assertEquals(fixed, UtilCodec.checkStringForHtmlStrictNone(label, 
input, gottenMessages,
-                new Locale("test")), label); // labels are not available in 
testClasses Gradle task
+                TEST_LOCALE), label);
         assertEquals(Arrays.asList(wantedMessages), gottenMessages, label);
     }
 
@@ -100,7 +104,7 @@ public class UtilCodecTests {
         String xssVector = "<script>alert('XSS vector');</script>";
         List<String> errorList = new ArrayList<>();
         String canonicalizedXssVector = 
UtilCodec.checkStringForHtmlSafe("fieldName", xssVector, errorList,
-                new Locale("test"), true); // labels are not available in 
testClasses Gradle task
+                TEST_LOCALE, true);
         assertEquals("<script>alert('XSS vector');</script>", 
canonicalizedXssVector);
         assertEquals(1, errorList.size());
         assertEquals("In field [fieldName] by our input policy, your input has 
not been accepted for security reason. "
diff --git 
a/framework/base/src/test/java/org/apache/ofbiz/base/util/UtilPropertiesTests.java
 
b/framework/base/src/test/java/org/apache/ofbiz/base/util/UtilPropertiesTests.java
index c009cde2f7..0006b01060 100644
--- 
a/framework/base/src/test/java/org/apache/ofbiz/base/util/UtilPropertiesTests.java
+++ 
b/framework/base/src/test/java/org/apache/ofbiz/base/util/UtilPropertiesTests.java
@@ -35,6 +35,7 @@ public class UtilPropertiesTests {
 
     private static final String COUNTRY = "AU";
     private static final String LANGUAGE = "en";
+    @SuppressWarnings("deprecation")
     private final Locale locale = new Locale(LANGUAGE, COUNTRY);
 
     /**
diff --git 
a/framework/common/src/main/java/org/apache/ofbiz/common/CommonEvents.java 
b/framework/common/src/main/java/org/apache/ofbiz/common/CommonEvents.java
index c653128b57..79605ffe3c 100644
--- a/framework/common/src/main/java/org/apache/ofbiz/common/CommonEvents.java
+++ b/framework/common/src/main/java/org/apache/ofbiz/common/CommonEvents.java
@@ -442,7 +442,7 @@ public class CommonEvents {
                     String cmd = (String) 
FlexibleStringExpander.getInstance(cmdTemplate).expand(sourceMap);
                     // run command
                     Debug.logInfo("Run command: " + cmd, MODULE);
-                    Process process = Runtime.getRuntime().exec(cmd);
+                    Process process = Runtime.getRuntime().exec(new 
String[]{cmd});
                     // print result
                     BufferedReader reader = new BufferedReader(new 
InputStreamReader(process.getInputStream()));
                     String line = "";
diff --git 
a/framework/entity/src/main/java/org/apache/ofbiz/entity/jdbc/SQLProcessor.java 
b/framework/entity/src/main/java/org/apache/ofbiz/entity/jdbc/SQLProcessor.java
index d3afd8d326..17ca5c4b25 100644
--- 
a/framework/entity/src/main/java/org/apache/ofbiz/entity/jdbc/SQLProcessor.java
+++ 
b/framework/entity/src/main/java/org/apache/ofbiz/entity/jdbc/SQLProcessor.java
@@ -847,6 +847,7 @@ public class SQLProcessor implements AutoCloseable {
         }
     }
 
+    @SuppressWarnings("deprecation")
     private void checkLockWaitInfo(Exception sqle) {
         String eMsg = sqle.getMessage();
 
diff --git 
a/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/TransactionUtil.java
 
b/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/TransactionUtil.java
index 7515c2f713..626648668b 100644
--- 
a/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/TransactionUtil.java
+++ 
b/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/TransactionUtil.java
@@ -650,6 +650,7 @@ public final class TransactionUtil implements Status {
     // =======================================
     // TRANSACTION BEGIN STACK
     // =======================================
+    @SuppressWarnings("deprecation")
     private static void pushTransactionBeginStackSave(Exception e) {
         // use the ThreadLocal one because it is more reliable than the all 
threads Map
         List<Exception> el = transactionBeginStackSave.get();
@@ -670,6 +671,7 @@ public final class TransactionUtil implements Status {
         }
     }
 
+    @SuppressWarnings("deprecation")
     private static Exception popTransactionBeginStackSave() {
         if (Debug.infoOn()) {
             // do the unofficial all threads Map one first, and don't do a 
real return
@@ -741,6 +743,7 @@ public final class TransactionUtil implements Status {
         setTransactionBeginStack(e);
     }
 
+    @SuppressWarnings("deprecation")
     private static void setTransactionBeginStack(Exception newExc) {
         if (transactionBeginStack.get() != null) {
             Exception e = transactionBeginStack.get();
@@ -756,6 +759,7 @@ public final class TransactionUtil implements Status {
         }
     }
 
+    @SuppressWarnings("deprecation")
     private static Exception clearTransactionBeginStack() {
         if (Debug.infoOn()) {
             Long curThreadId = Thread.currentThread().getId();
diff --git 
a/framework/entity/src/main/java/org/apache/ofbiz/entity/util/EntityDataLoader.java
 
b/framework/entity/src/main/java/org/apache/ofbiz/entity/util/EntityDataLoader.java
index 31c42c319a..5899465593 100644
--- 
a/framework/entity/src/main/java/org/apache/ofbiz/entity/util/EntityDataLoader.java
+++ 
b/framework/entity/src/main/java/org/apache/ofbiz/entity/util/EntityDataLoader.java
@@ -225,23 +225,23 @@ public class EntityDataLoader {
         return getUrlByComponentList(helperName, components, readerNames);
     }
 
-    public static int loadData(URL dataUrl, String helperName, Delegator 
delegator, List<Object> errorMessages) throws GenericEntityException {
+    public static long loadData(URL dataUrl, String helperName, Delegator 
delegator, List<Object> errorMessages) throws GenericEntityException {
         return loadData(dataUrl, helperName, delegator, errorMessages, -1);
     }
 
-    public static int loadData(URL dataUrl, String helperName, Delegator 
delegator, List<Object> errorMessages, int txTimeout)
+    public static long loadData(URL dataUrl, String helperName, Delegator 
delegator, List<Object> errorMessages, int txTimeout)
             throws GenericEntityException {
         return loadData(dataUrl, helperName, delegator, errorMessages, 
txTimeout, false, false, false);
     }
 
-    public static int loadData(URL dataUrl, String helperName, Delegator 
delegator, List<Object> errorMessages, int txTimeout, boolean dummyFks,
+    public static long loadData(URL dataUrl, String helperName, Delegator 
delegator, List<Object> errorMessages, int txTimeout, boolean dummyFks,
                                boolean maintainTxs, boolean tryInsert) throws 
GenericEntityException {
         return loadData(dataUrl, helperName, delegator, errorMessages, 
txTimeout, false, false, false, true);
     }
 
-    public static int loadData(URL dataUrl, String helperName, Delegator 
delegator, List<Object> errorMessages, int txTimeout, boolean dummyFks,
+    public static long loadData(URL dataUrl, String helperName, Delegator 
delegator, List<Object> errorMessages, int txTimeout, boolean dummyFks,
                                boolean maintainTxs, boolean tryInsert, boolean 
continueOnFail) throws GenericEntityException {
-        int rowsChanged = 0;
+        long rowsChanged = 0;
 
         if (dataUrl == null) {
             String errMsg = "Cannot load data, dataUrl was null";
@@ -264,7 +264,7 @@ public class EntityDataLoader {
             reader.setCreateDummyFks(dummyFks);
             reader.setMaintainTxStamps(maintainTxs);
             reader.setContinueOnFail(continueOnFail);
-            rowsChanged += (int) reader.parse(dataUrl);
+            rowsChanged += reader.parse(dataUrl);
         } catch (IOException | SAXException e) {
             String xmlError = "[loadData]: Error loading XML Resource \"" + 
dataUrl.toExternalForm() + "\"; Error was: " + e.getMessage();
             errorMessages.add(xmlError);
diff --git 
a/framework/entityext/src/main/java/org/apache/ofbiz/entityext/data/EntityDataLoadContainer.java
 
b/framework/entityext/src/main/java/org/apache/ofbiz/entityext/data/EntityDataLoadContainer.java
index e740865ecd..975fe8c23b 100644
--- 
a/framework/entityext/src/main/java/org/apache/ofbiz/entityext/data/EntityDataLoadContainer.java
+++ 
b/framework/entityext/src/main/java/org/apache/ofbiz/entityext/data/EntityDataLoadContainer.java
@@ -423,13 +423,13 @@ public class EntityDataLoadContainer implements Container 
{
         List<URL> urlList = prepareDataUrls(delegator, baseDelegator, 
allComponents, helperInfo, loadDataProps);
         List<String> infoMessages = new ArrayList<>();
         List<Object> errorMessages = new ArrayList<>();
-        int totalRowsChanged = 0;
+        long totalRowsChanged = 0;
 
         logDataLoadingPlan(urlList, delegator.getDelegatorName());
 
         for (URL dataUrl: urlList) {
             try {
-                int rowsChanged = EntityDataLoader.loadData(dataUrl, 
helperInfo.getHelperBaseName(),
+                long rowsChanged = EntityDataLoader.loadData(dataUrl, 
helperInfo.getHelperBaseName(),
                         delegator, errorMessages, txTimeout, useDummyFks, 
maintainTxs, tryInserts, continueOnFail);
                 totalRowsChanged += rowsChanged;
                 infoMessages.add(createDataLoadMessage(dataUrl, rowsChanged, 
totalRowsChanged));
@@ -570,7 +570,7 @@ public class EntityDataLoadContainer implements Container {
         }
     }
 
-    private static String createDataLoadMessage(URL dataUrl, int rowsChanged, 
int totalRowsChanged) {
+    private static String createDataLoadMessage(URL dataUrl, long rowsChanged, 
long totalRowsChanged) {
         NumberFormat formatter = NumberFormat.getIntegerInstance();
         formatter.setMinimumIntegerDigits(5);
         formatter.setGroupingUsed(false);
@@ -580,7 +580,7 @@ public class EntityDataLoadContainer implements Container {
     }
 
     private static void logDataLoadingResults(List<String> infoMessages,
-            List<Object> errorMessages, int totalRowsChanged) {
+            List<Object> errorMessages, long totalRowsChanged) {
 
         if (UtilValidate.isNotEmpty(infoMessages)) {
             Debug.logImportant("=-=-=-=-=-=-= Here is a summary of the data 
load:", MODULE);
diff --git 
a/framework/start/src/main/java/org/apache/ofbiz/base/start/Config.java 
b/framework/start/src/main/java/org/apache/ofbiz/base/start/Config.java
index 315b4ae0f7..b6e5f89380 100644
--- a/framework/start/src/main/java/org/apache/ofbiz/base/start/Config.java
+++ b/framework/start/src/main/java/org/apache/ofbiz/base/start/Config.java
@@ -183,6 +183,7 @@ public final class Config {
         }
     }
 
+    @SuppressWarnings("deprecation")
     private static Locale getDefaultLocale(Properties props, String 
defaultLocale) {
         String localeString = getProperty(props, "ofbiz.locale.default", 
defaultLocale);
         String locales[] = localeString.split("_");
diff --git 
a/framework/testtools/src/main/java/org/apache/ofbiz/testtools/EntityXmlAssertTest.java
 
b/framework/testtools/src/main/java/org/apache/ofbiz/testtools/EntityXmlAssertTest.java
index a7f4e036d6..f750969cdc 100644
--- 
a/framework/testtools/src/main/java/org/apache/ofbiz/testtools/EntityXmlAssertTest.java
+++ 
b/framework/testtools/src/main/java/org/apache/ofbiz/testtools/EntityXmlAssertTest.java
@@ -53,6 +53,7 @@ public class EntityXmlAssertTest extends OFBizTestCase {
     }
 
     @Override
+    @SuppressWarnings("lossy-conversions")
     public int countTestCases() {
         int testCaseCount = 0;
         try {
diff --git 
a/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/JWTManager.java
 
b/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/JWTManager.java
index 123d9584dd..08ed1cf196 100644
--- 
a/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/JWTManager.java
+++ 
b/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/JWTManager.java
@@ -19,7 +19,7 @@
 package org.apache.ofbiz.webapp.control;
 
 import java.net.MalformedURLException;
-import java.net.URL;
+import java.net.URI;
 import java.security.interfaces.RSAPublicKey;
 import java.sql.Timestamp;
 import java.util.Calendar;
@@ -83,7 +83,7 @@ public class JWTManager {
                 if (localRef == null) {
                     String issuer = 
EntityUtilProperties.getPropertyValue("security", "security.token.issuer", "", 
delegator);
                     String jwksUrl = issuer + "/protocol/openid-connect/certs";
-                    localRef = new JwkProviderBuilder(new URL(jwksUrl))
+                    localRef = new 
JwkProviderBuilder(URI.create(jwksUrl).toURL())
                             .cached(10, 24, TimeUnit.HOURS)   // cache up to 
10 keys for 24h
                             .rateLimited(10, 1, TimeUnit.MINUTES) // prevent 
frequent fetches
                             .build();
diff --git 
a/framework/webapp/src/main/java/org/apache/ofbiz/webapp/ftl/OfbizCurrencyTransform.java
 
b/framework/webapp/src/main/java/org/apache/ofbiz/webapp/ftl/OfbizCurrencyTransform.java
index 480555cd9c..5b2a17f7dc 100644
--- 
a/framework/webapp/src/main/java/org/apache/ofbiz/webapp/ftl/OfbizCurrencyTransform.java
+++ 
b/framework/webapp/src/main/java/org/apache/ofbiz/webapp/ftl/OfbizCurrencyTransform.java
@@ -174,6 +174,7 @@ public class OfbizCurrencyTransform implements 
TemplateTransformModel {
             }
 
             @Override
+            @SuppressWarnings("deprecation")
             public void close() throws IOException {
                 try {
                     if (Debug.verboseOn()) {
diff --git 
a/framework/webapp/src/main/java/org/apache/ofbiz/webapp/ftl/OfbizNumberTransform.java
 
b/framework/webapp/src/main/java/org/apache/ofbiz/webapp/ftl/OfbizNumberTransform.java
index 38372e435c..74a96d667f 100644
--- 
a/framework/webapp/src/main/java/org/apache/ofbiz/webapp/ftl/OfbizNumberTransform.java
+++ 
b/framework/webapp/src/main/java/org/apache/ofbiz/webapp/ftl/OfbizNumberTransform.java
@@ -116,6 +116,7 @@ public class OfbizNumberTransform implements 
TemplateTransformModel {
             }
 
             @Override
+            @SuppressWarnings("deprecation")
             public void close() throws IOException {
                 try {
                     if (Debug.verboseOn()) {
diff --git 
a/framework/webtools/src/main/java/org/apache/ofbiz/webtools/WebToolsServices.java
 
b/framework/webtools/src/main/java/org/apache/ofbiz/webtools/WebToolsServices.java
index 6f9fda106a..9f3de0db26 100644
--- 
a/framework/webtools/src/main/java/org/apache/ofbiz/webtools/WebToolsServices.java
+++ 
b/framework/webtools/src/main/java/org/apache/ofbiz/webtools/WebToolsServices.java
@@ -414,7 +414,7 @@ public class WebToolsServices {
 
         List<Object> errorMessages = new LinkedList<>();
         List<String> infoMessages = new LinkedList<>();
-        int totalRowsChanged = 0;
+        long totalRowsChanged = 0;
         if (UtilValidate.isNotEmpty(urlList)) {
             messages.add("=-=-=-=-=-=-= Doing a data " + (checkDataOnly ? 
"check" : "load") + " with the following files:");
             for (URL dataUrl : urlList) {
@@ -425,7 +425,7 @@ public class WebToolsServices {
 
             for (URL dataUrl : urlList) {
                 try {
-                    int rowsChanged = 0;
+                    long rowsChanged = 0;
                     if (checkDataOnly) {
                         try {
                             errorMessages.add("Checking data in [" + 
dataUrl.toExternalForm() + "]");
diff --git 
a/framework/widget/src/test/java/org/apache/ofbiz/widget/renderer/macro/RenderableFtlFormElementsBuilderTest.java
 
b/framework/widget/src/test/java/org/apache/ofbiz/widget/renderer/macro/RenderableFtlFormElementsBuilderTest.java
index b8f7193b9e..25452442d0 100644
--- 
a/framework/widget/src/test/java/org/apache/ofbiz/widget/renderer/macro/RenderableFtlFormElementsBuilderTest.java
+++ 
b/framework/widget/src/test/java/org/apache/ofbiz/widget/renderer/macro/RenderableFtlFormElementsBuilderTest.java
@@ -613,7 +613,8 @@ public class RenderableFtlFormElementsBuilderTest {
         };
 
         final Map<String, Object> context = new HashMap<>();
-        context.put("locale", new Locale("fr"));
+        @SuppressWarnings("deprecation") Locale locale = new Locale("fr");
+        context.put("locale", locale);
 
         final RenderableFtl renderableFtl = 
renderableFtlFormElementsBuilder.dateRangePicker(context, dateRangePickerField);
         assertThat(renderableFtl, 
MacroCallMatcher.hasName("renderDateRangePicker"));
diff --git a/gradle.properties b/gradle.properties
index 0b89105a14..c005081ab4 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -18,9 +18,9 @@
 ###############################################################################
 
 org.gradle.console=plain
-# If you experience heap memory problems during the Gradle build, for example
-# building with integrated plugins, the following setting might help
-#org.gradle.jvmargs=-Xms128m -Xmx1024m -XX:+CMSClassUnloadingEnabled
+# JVM args for the Gradle daemon process (not the OFBiz JVM ? those are in 
build.gradle applicationDefaultJvmArgs).
+# Increase Xmx if you experience heap memory problems during the Gradle build 
(e.g. with integrated plugins).
+org.gradle.jvmargs=-Xms256m -Xmx2g -XX:+HeapDumpOnOutOfMemoryError 
-Dfile.encoding=UTF-8
 
 # Uncomment to disable source line numbers in log output (e.g. for production).
 #systemProp.ofbiz.env=prod


Reply via email to