You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ma...@apache.org on 2022/03/31 05:49:53 UTC
[logging-log4j2] 03/07: Make JmxRuntimeInputArgumentsLookup a lazy singleton
This is an automated email from the ASF dual-hosted git repository.
mattsicker pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit 4419e66408cc1cb965a2df02fcbf75eb4f5c5e38
Author: Matt Sicker <ma...@apache.org>
AuthorDate: Wed Mar 30 21:53:15 2022 -0500
Make JmxRuntimeInputArgumentsLookup a lazy singleton
Signed-off-by: Matt Sicker <ma...@apache.org>
---
.../core/lookup/MainInputArgumentsJmxLookupTest.java | 6 +++---
.../core/lookup/JmxRuntimeInputArgumentsLookup.java | 20 +++++++++++++-------
2 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsJmxLookupTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsJmxLookupTest.java
index a3106a1..16b1a31 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsJmxLookupTest.java
+++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsJmxLookupTest.java
@@ -18,7 +18,7 @@ package org.apache.logging.log4j.core.lookup;
import org.junit.jupiter.api.Test;
-import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.assertNull;
/**
* Tests {@link JmxRuntimeInputArgumentsLookup} from the command line, not a JUnit test.
@@ -35,14 +35,14 @@ public class MainInputArgumentsJmxLookupTest {
@Test
public void testMap() {
- final JmxRuntimeInputArgumentsLookup lookup = JmxRuntimeInputArgumentsLookup.JMX_SINGLETON;
+ final JmxRuntimeInputArgumentsLookup lookup = JmxRuntimeInputArgumentsLookup.getInstance();
assertNull(lookup.lookup(null));
assertNull(lookup.lookup("X"));
assertNull(lookup.lookup("foo.txt"));
}
public void callFromMain() {
- final JmxRuntimeInputArgumentsLookup lookup = JmxRuntimeInputArgumentsLookup.JMX_SINGLETON;
+ final JmxRuntimeInputArgumentsLookup lookup = JmxRuntimeInputArgumentsLookup.getInstance();
assertNull(lookup.lookup(null));
assertNull(lookup.lookup("X"));
// Eclipse adds -Dfile.encoding=Cp1252
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JmxRuntimeInputArgumentsLookup.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JmxRuntimeInputArgumentsLookup.java
index 2e3c5b0..3e90516 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JmxRuntimeInputArgumentsLookup.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JmxRuntimeInputArgumentsLookup.java
@@ -16,12 +16,15 @@
*/
package org.apache.logging.log4j.core.lookup;
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.plugins.Plugin;
+import org.apache.logging.log4j.plugins.PluginFactory;
+import org.apache.logging.log4j.util.LazyValue;
+
import java.lang.management.ManagementFactory;
import java.util.List;
import java.util.Map;
-
-import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.plugins.Plugin;
+import java.util.function.Supplier;
/**
* Maps JVM input arguments (but not main arguments) using JMX to acquire JVM arguments.
@@ -32,12 +35,15 @@ import org.apache.logging.log4j.plugins.Plugin;
@Plugin(name = "jvmrunargs", category = StrLookup.CATEGORY)
public class JmxRuntimeInputArgumentsLookup extends MapLookup {
- static {
+ private static final Supplier<JmxRuntimeInputArgumentsLookup> INSTANCE = LazyValue.from(() -> {
final List<String> argsList = ManagementFactory.getRuntimeMXBean().getInputArguments();
- JMX_SINGLETON = new JmxRuntimeInputArgumentsLookup(MapLookup.toMap(argsList));
- }
+ return new JmxRuntimeInputArgumentsLookup(MapLookup.toMap(argsList));
+ });
- public static final JmxRuntimeInputArgumentsLookup JMX_SINGLETON;
+ @PluginFactory
+ public static JmxRuntimeInputArgumentsLookup getInstance() {
+ return INSTANCE.get();
+ }
/**
* Constructor when used directly as a plugin.