This is an automated email from the ASF dual-hosted git repository. vy pushed a commit to branch 2.x-java-17 in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit 4c2c17e89e96401590b9ace8dbce9dc354413e1b Author: Volkan Yazıcı <[email protected]> AuthorDate: Thu Nov 30 14:07:24 2023 +0100 Remove `final` from `CLOCK` of `AsyncLogger` and `Log4jLogEvent` This is necessary for Java 12+ compatibility. --- .../java/org/apache/logging/log4j/core/util/ClockFactoryTest.java | 5 ----- .../main/java/org/apache/logging/log4j/core/async/AsyncLogger.java | 3 ++- .../main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java | 3 ++- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/util/ClockFactoryTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/util/ClockFactoryTest.java index 0cd0ae257b..aa3771c140 100644 --- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/util/ClockFactoryTest.java +++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/util/ClockFactoryTest.java @@ -24,11 +24,7 @@ import org.apache.logging.log4j.core.async.AsyncLogger; import org.apache.logging.log4j.core.impl.Log4jLogEvent; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.condition.EnabledOnJre; -import org.junit.jupiter.api.condition.JRE; -// as of Java 12, final fields can no longer be overwritten via reflection -@EnabledOnJre({JRE.JAVA_8, JRE.JAVA_9, JRE.JAVA_10, JRE.JAVA_11}) public class ClockFactoryTest { public static void resetClocks() throws IllegalAccessException { @@ -39,7 +35,6 @@ public class ClockFactoryTest { public static void resetClock(final Class<?> clazz) throws IllegalAccessException { System.clearProperty(ClockFactory.PROPERTY_NAME); final Field field = FieldUtils.getField(clazz, "CLOCK", true); - FieldUtils.removeFinalModifier(field); FieldUtils.writeStaticField(field, ClockFactory.getClock(), false); } diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java index 1151a0a1dc..d60d4ecb13 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java @@ -69,7 +69,8 @@ public class AsyncLogger extends Logger implements EventTranslatorVararg<RingBuf // immediate inlining instead of waiting until they are designated "hot enough". private static final StatusLogger LOGGER = StatusLogger.getLogger(); - private static final Clock CLOCK = ClockFactory.getClock(); // not reconfigurable + @SuppressWarnings("FieldMayBeFinal") // enable mutation for tests + private static Clock CLOCK = ClockFactory.getClock(); // not reconfigurable private static final ContextDataInjector CONTEXT_DATA_INJECTOR = ContextDataInjectorFactory.createInjector(); private static final ThreadNameCachingStrategy THREAD_NAME_CACHING_STRATEGY = ThreadNameCachingStrategy.create(); diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java index 2e3ec3e451..beaccf37e0 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java @@ -55,7 +55,8 @@ import org.apache.logging.log4j.util.Strings; public class Log4jLogEvent implements LogEvent { private static final long serialVersionUID = -8393305700508709443L; - private static final Clock CLOCK = ClockFactory.getClock(); + @SuppressWarnings("FieldMayBeFinal") // enable mutation for tests + private static Clock CLOCK = ClockFactory.getClock(); private static volatile NanoClock nanoClock = new DummyNanoClock(); private static final ContextDataInjector CONTEXT_DATA_INJECTOR = ContextDataInjectorFactory.createInjector();
