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("'",
"'").replace(""", "\"").replace("@",
"@").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 = "<script>alert(\"XSS
vector\");</script>";
@@ -42,7 +46,7 @@ public class UtilCodecTests {
String xssVector = "<script>alert(\"XSS
vector\");</script>";
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