You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rg...@apache.org on 2019/03/19 00:05:39 UTC
[logging-log4j2] branch release-2.x updated: [LOG4J2-2561] JEP223
version detection fix for JDK 9 and up (release-2.x)
This is an automated email from the ASF dual-hosted git repository.
rgoers pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
The following commit(s) were added to refs/heads/release-2.x by this push:
new 5df95c9 [LOG4J2-2561] JEP223 version detection fix for JDK 9 and up (release-2.x)
5df95c9 is described below
commit 5df95c91d7a034c67aa019c1c7652550996dc73d
Author: ulrichenslin <ul...@gmail.com>
AuthorDate: Mon Mar 18 22:10:12 2019 +0200
[LOG4J2-2561] JEP223 version detection fix for JDK 9 and up (release-2.x)
---
.../java/org/apache/logging/log4j/util/Constants.java | 5 ++++-
.../org/apache/logging/log4j/util/ConstantsTest.java | 17 +++++++++++++++++
.../logging/log4j/core/layout/AbstractStringLayout.java | 9 +--------
3 files changed, 22 insertions(+), 9 deletions(-)
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/Constants.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/Constants.java
index c0d18d7..13f20a8 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/Constants.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/Constants.java
@@ -89,7 +89,10 @@ public final class Constants {
}
private static int getMajorVersion() {
- final String version = System.getProperty("java.version");
+ return getMajorVersion(System.getProperty("java.version"));
+ }
+
+ static int getMajorVersion(final String version) {
final String[] parts = version.split("-|\\.");
boolean isJEP223;
try {
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/util/ConstantsTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/util/ConstantsTest.java
new file mode 100644
index 0000000..34d056a
--- /dev/null
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/util/ConstantsTest.java
@@ -0,0 +1,17 @@
+package org.apache.logging.log4j.util;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+public class ConstantsTest {
+
+ @Test
+ public void testJdkVersionDetection() {
+ assertEquals(1, Constants.getMajorVersion("1.1.2"));
+ assertEquals(8, Constants.getMajorVersion("1.8.2"));
+ assertEquals(9, Constants.getMajorVersion("9.1.1"));
+ assertEquals(11, Constants.getMajorVersion("11.1.1"));
+ }
+
+}
\ No newline at end of file
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractStringLayout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractStringLayout.java
index d8403b6..3b9eb61 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractStringLayout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractStringLayout.java
@@ -131,14 +131,7 @@ public abstract class AbstractStringLayout extends AbstractLayout<String> implem
// LOG4J2-1151: If the built-in JDK 8 encoders are available we should use them.
private static boolean isPreJava8() {
- final String version = System.getProperty("java.version");
- final String[] parts = version.split("\\.");
- try {
- final int major = Integer.parseInt(parts[1]);
- return major < 8;
- } catch (final Exception ex) {
- return true;
- }
+ return org.apache.logging.log4j.util.Constants.JAVA_MAJOR_VERSION < 8;
}
private static int size(final String property, final int defaultValue) {