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) {