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 266481da7f496464f247de565fdb26ca1735e10d
Author: Matt Sicker <[email protected]>
AuthorDate: Wed Mar 30 00:15:55 2022 -0500

    Refactor remaining use of PluginUtil
    
    Signed-off-by: Matt Sicker <[email protected]>
---
 .../validators/RequiredValidatorTest.java          | 22 ++---
 .../validators/ValidHostValidatorTest.java         | 22 +++--
 .../validators/ValidPortValidatorTest.java         | 24 +++---
 .../ValidatingPluginWithFailoverTest.java          | 18 ++--
 .../ValidatingPluginWithGenericBuilderTest.java    | 23 ++----
 ...ngPluginWithGenericSubclassFoo1BuilderTest.java | 21 ++---
 .../ValidatingPluginWithTypedBuilderTest.java      | 21 ++---
 .../logging/log4j/plugins/util/PluginUtil.java     | 96 ----------------------
 8 files changed, 65 insertions(+), 182 deletions(-)

diff --git 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/RequiredValidatorTest.java
 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/RequiredValidatorTest.java
index 53be7b9..68f5137 100644
--- 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/RequiredValidatorTest.java
+++ 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/RequiredValidatorTest.java
@@ -16,12 +16,15 @@
  */
 package org.apache.logging.log4j.core.config.plugins.validation.validators;
 
+import org.apache.logging.log4j.plugins.Named;
 import org.apache.logging.log4j.plugins.Node;
 import org.apache.logging.log4j.plugins.di.DI;
+import org.apache.logging.log4j.plugins.di.Injector;
+import org.apache.logging.log4j.plugins.di.Key;
 import org.apache.logging.log4j.plugins.di.Keys;
 import org.apache.logging.log4j.plugins.test.validation.ValidatingPlugin;
+import org.apache.logging.log4j.plugins.util.PluginManager;
 import org.apache.logging.log4j.plugins.util.PluginType;
-import org.apache.logging.log4j.plugins.util.PluginUtil;
 import org.apache.logging.log4j.test.junit.StatusLoggerLevel;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -33,30 +36,27 @@ import static org.junit.jupiter.api.Assertions.*;
 @StatusLoggerLevel("OFF")
 public class RequiredValidatorTest {
 
+    private final Injector injector = 
DI.createInjector().registerBinding(Keys.SUBSTITUTOR_KEY, Function::identity);
     private Node node;
 
-    @SuppressWarnings("unchecked")
     @BeforeEach
     public void setUp() throws Exception {
-        PluginType<ValidatingPlugin> plugin = (PluginType<ValidatingPlugin>) 
PluginUtil.collectPluginsByCategory("Test").get("validator");
-        assertNotNull(plugin, "Rebuild this module to make sure annotation 
processing kicks in.");
-        node = new Node(null, "Validator", plugin);
+        final PluginManager pluginManager = injector.getInstance(new 
@Named("Test") Key<>() {});
+        final PluginType<?> pluginType = 
pluginManager.getPluginType("Validator");
+        assertNotNull(pluginType, "Rebuild this module to make sure annotation 
processing kicks in.");
+        node = new Node(null, "Validator", pluginType);
     }
 
     @Test
     public void testNullDefaultValue() throws Exception {
-        final ValidatingPlugin validatingPlugin = DI.createInjector()
-                .registerBinding(Keys.SUBSTITUTOR_KEY, Function::identity)
-                .configure(node);
+        final ValidatingPlugin validatingPlugin = injector.configure(node);
         assertNull(validatingPlugin);
     }
 
     @Test
     public void testNonNullValue() throws Exception {
         node.getAttributes().put("name", "foo");
-        final ValidatingPlugin validatingPlugin = DI.createInjector()
-                .registerBinding(Keys.SUBSTITUTOR_KEY, Function::identity)
-                .configure(node);
+        final ValidatingPlugin validatingPlugin = injector.configure(node);
         assertEquals("foo", validatingPlugin.getName());
     }
 }
diff --git 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidHostValidatorTest.java
 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidHostValidatorTest.java
index 6f119d5..3b152f1 100644
--- 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidHostValidatorTest.java
+++ 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidHostValidatorTest.java
@@ -16,12 +16,15 @@
  */
 package org.apache.logging.log4j.core.config.plugins.validation.validators;
 
+import org.apache.logging.log4j.plugins.Named;
 import org.apache.logging.log4j.plugins.Node;
 import org.apache.logging.log4j.plugins.di.DI;
+import org.apache.logging.log4j.plugins.di.Injector;
+import org.apache.logging.log4j.plugins.di.Key;
 import org.apache.logging.log4j.plugins.di.Keys;
 import org.apache.logging.log4j.plugins.test.validation.HostAndPort;
+import org.apache.logging.log4j.plugins.util.PluginManager;
 import org.apache.logging.log4j.plugins.util.PluginType;
-import org.apache.logging.log4j.plugins.util.PluginUtil;
 import org.apache.logging.log4j.test.junit.StatusLoggerLevel;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -33,27 +36,27 @@ import static org.junit.jupiter.api.Assertions.*;
 @StatusLoggerLevel("OFF")
 public class ValidHostValidatorTest {
 
-    private PluginType<HostAndPort> plugin;
+    private final Injector injector = 
DI.createInjector().registerBinding(Keys.SUBSTITUTOR_KEY, Function::identity);
     private Node node;
 
-    @SuppressWarnings("unchecked")
     @BeforeEach
     public void setUp() throws Exception {
-        plugin = (PluginType<HostAndPort>) 
PluginUtil.collectPluginsByCategory("Test").get("hostandport");
+        final PluginManager pluginManager = injector.getInstance(new 
@Named("Test") Key<>() {});
+        PluginType<?> plugin = pluginManager.getPluginType("HostAndPort");
         assertNotNull(plugin, "Rebuild this module to ensure annotation 
processing has been done.");
         node = new Node(null, "HostAndPort", plugin);
     }
 
     @Test
     public void testNullHost() throws Exception {
-        assertNull(buildPlugin());
+        assertNull(injector.configure(node));
     }
 
     @Test
     public void testInvalidIpAddress() throws Exception {
         node.getAttributes().put("host", "256.256.256.256");
         node.getAttributes().put("port", "1");
-        final HostAndPort plugin = buildPlugin();
+        final HostAndPort plugin = injector.configure(node);
         assertNull(plugin, "Expected null, but got: " + plugin);
     }
 
@@ -61,14 +64,9 @@ public class ValidHostValidatorTest {
     public void testLocalhost() throws Exception {
         node.getAttributes().put("host", "localhost");
         node.getAttributes().put("port", "1");
-        final HostAndPort hostAndPort = buildPlugin();
+        final HostAndPort hostAndPort = injector.configure(node);
         assertNotNull(hostAndPort);
         assertTrue(hostAndPort.isValid());
     }
 
-    private HostAndPort buildPlugin() {
-        return DI.createInjector()
-                .registerBinding(Keys.SUBSTITUTOR_KEY, Function::identity)
-                .configure(node);
-    }
 }
diff --git 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidPortValidatorTest.java
 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidPortValidatorTest.java
index 180e3af..3df06e9 100644
--- 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidPortValidatorTest.java
+++ 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidPortValidatorTest.java
@@ -16,12 +16,14 @@
  */
 package org.apache.logging.log4j.core.config.plugins.validation.validators;
 
+import org.apache.logging.log4j.plugins.Named;
 import org.apache.logging.log4j.plugins.Node;
 import org.apache.logging.log4j.plugins.di.DI;
+import org.apache.logging.log4j.plugins.di.Injector;
+import org.apache.logging.log4j.plugins.di.Key;
 import org.apache.logging.log4j.plugins.di.Keys;
-import org.apache.logging.log4j.plugins.test.validation.HostAndPort;
+import org.apache.logging.log4j.plugins.util.PluginManager;
 import org.apache.logging.log4j.plugins.util.PluginType;
-import org.apache.logging.log4j.plugins.util.PluginUtil;
 import org.apache.logging.log4j.test.junit.StatusLoggerLevel;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -33,13 +35,13 @@ import static org.junit.jupiter.api.Assertions.assertNull;
 
 @StatusLoggerLevel("OFF")
 public class ValidPortValidatorTest {
-    private PluginType<HostAndPort> plugin;
+    private final Injector injector = 
DI.createInjector().registerBinding(Keys.SUBSTITUTOR_KEY, Function::identity);
     private Node node;
 
-    @SuppressWarnings("unchecked")
     @BeforeEach
     public void setUp() throws Exception {
-        plugin = (PluginType<HostAndPort>) 
PluginUtil.collectPluginsByCategory("Test").get("hostandport");
+        final PluginManager pluginManager = injector.getInstance(new 
@Named("Test") Key<>() {});
+        PluginType<?> plugin = pluginManager.getPluginType("HostAndPort");
         assertNotNull(plugin, "Rebuild this module to ensure annotation 
processing has been done.");
         node = new Node(null, "HostAndPort", plugin);
         node.getAttributes().put("host", "localhost");
@@ -48,25 +50,19 @@ public class ValidPortValidatorTest {
     @Test
     public void testNegativePort() throws Exception {
         node.getAttributes().put("port", "-1");
-        assertNull(buildPlugin());
+        assertNull(injector.configure(node));
     }
 
     @Test
     public void testValidPort() throws Exception {
         node.getAttributes().put("port", "10");
-        assertNotNull(buildPlugin());
+        assertNotNull(injector.configure(node));
     }
 
     @Test
     public void testInvalidPort() throws Exception {
         node.getAttributes().put("port", "1234567890");
-        assertNull(buildPlugin());
-    }
-
-    private HostAndPort buildPlugin() {
-        return DI.createInjector()
-                .registerBinding(Keys.SUBSTITUTOR_KEY, Function::identity)
-                .configure(node);
+        assertNull(injector.configure(node));
     }
 
 }
diff --git 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithFailoverTest.java
 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithFailoverTest.java
index abe025f..a619c01 100644
--- 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithFailoverTest.java
+++ 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithFailoverTest.java
@@ -28,8 +28,8 @@ import org.apache.logging.log4j.plugins.di.DI;
 import org.apache.logging.log4j.plugins.di.Injector;
 import org.apache.logging.log4j.plugins.di.Key;
 import org.apache.logging.log4j.plugins.di.Keys;
+import org.apache.logging.log4j.plugins.util.PluginManager;
 import org.apache.logging.log4j.plugins.util.PluginType;
-import org.apache.logging.log4j.plugins.util.PluginUtil;
 import org.apache.logging.log4j.status.StatusData;
 import org.apache.logging.log4j.status.StatusListener;
 import org.apache.logging.log4j.status.StatusLogger;
@@ -37,8 +37,6 @@ import org.apache.logging.log4j.test.junit.StatusLoggerLevel;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import java.util.Locale;
-import java.util.Map;
 import java.util.function.Function;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -48,19 +46,19 @@ import static org.mockito.Mockito.*;
 @StatusLoggerLevel("OFF")
 public class ValidatingPluginWithFailoverTest {
 
+    private final Injector injector = 
DI.createInjector().registerBinding(Keys.SUBSTITUTOR_KEY, Function::identity);
     private Node node;
 
-    @SuppressWarnings("unchecked")
     @BeforeEach
     public void setUp() throws Exception {
-        final Map<String, PluginType<?>> plugins = 
PluginUtil.collectPluginsByCategory(Core.CATEGORY_NAME);
-        PluginType<FailoverAppender> plugin = (PluginType<FailoverAppender>) 
plugins.get("Failover".toLowerCase(Locale.ROOT));
+        final PluginManager pluginManager = 
injector.getInstance(Core.PLUGIN_MANAGER_KEY);
+        PluginType<?> plugin = pluginManager.getPluginType("Failover");
         assertNotNull(plugin, "Rebuild this module to make sure annotation 
processing kicks in.");
 
         AppenderRef appenderRef = AppenderRef.createAppenderRef("List", 
Level.ALL, null);
         node = new Node(null, "failover", plugin);
-        Node failoversNode = new Node(node, "Failovers", 
plugins.get("Failovers".toLowerCase(Locale.ROOT)));
-        Node appenderRefNode  = new Node(failoversNode, "appenderRef", 
plugins.get("appenderRef".toLowerCase(Locale.ROOT)));
+        Node failoversNode = new Node(node, "Failovers", 
pluginManager.getPluginType("Failovers"));
+        Node appenderRefNode  = new Node(failoversNode, "appenderRef", 
pluginManager.getPluginType("appenderRef"));
         appenderRefNode.getAttributes().put("ref", "file");
         appenderRefNode.setObject(appenderRef);
         failoversNode.getChildren().add(appenderRefNode);
@@ -74,9 +72,7 @@ public class ValidatingPluginWithFailoverTest {
     public void testDoesNotLog_NoParameterThatMatchesElement_message() {
         final StatusListener listener = mock(StatusListener.class);
         when(listener.getStatusLevel()).thenReturn(Level.WARN);
-        final Injector injector = DI.createInjector()
-                .registerBinding(Keys.SUBSTITUTOR_KEY, Function::identity)
-                .registerBinding(Key.forClass(Configuration.class), 
NullConfiguration::new);
+        injector.registerBinding(Key.forClass(Configuration.class), 
NullConfiguration::new);
         final StatusLogger logger = StatusLogger.getLogger();
         logger.trace("Initializing");
         logger.registerListener(listener);
diff --git 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithGenericBuilderTest.java
 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithGenericBuilderTest.java
index d824e83..bf5fc57 100644
--- 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithGenericBuilderTest.java
+++ 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithGenericBuilderTest.java
@@ -16,18 +16,18 @@
  */
 package org.apache.logging.log4j.core.config.plugins.validation.validators;
 
+import org.apache.logging.log4j.plugins.Named;
 import org.apache.logging.log4j.plugins.Node;
 import org.apache.logging.log4j.plugins.di.DI;
+import org.apache.logging.log4j.plugins.di.Injector;
+import org.apache.logging.log4j.plugins.di.Key;
 import org.apache.logging.log4j.plugins.di.Keys;
 import 
org.apache.logging.log4j.plugins.test.validation.ValidatingPluginWithGenericBuilder;
-import org.apache.logging.log4j.plugins.util.PluginType;
-import org.apache.logging.log4j.plugins.util.PluginUtil;
+import org.apache.logging.log4j.plugins.util.PluginManager;
 import org.apache.logging.log4j.test.junit.StatusLoggerLevel;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import java.util.Locale;
-import java.util.Map;
 import java.util.function.Function;
 
 import static org.junit.jupiter.api.Assertions.*;
@@ -35,32 +35,27 @@ import static org.junit.jupiter.api.Assertions.*;
 @StatusLoggerLevel("OFF")
 public class ValidatingPluginWithGenericBuilderTest {
 
+    private final Injector injector = 
DI.createInjector().registerBinding(Keys.SUBSTITUTOR_KEY, Function::identity);
     private Node node;
 
-    @SuppressWarnings("unchecked")
     @BeforeEach
     public void setUp() throws Exception {
-        final Map<String, PluginType<?>> plugins = 
PluginUtil.collectPluginsByCategory("Test");
-        final var plugin = (PluginType<ValidatingPluginWithGenericBuilder>)
-                
plugins.get("ValidatingPluginWithGenericBuilder".toLowerCase(Locale.ROOT));
+        final PluginManager pluginManager = injector.getInstance(new 
@Named("Test") Key<>() {});
+        final var plugin = 
pluginManager.getPluginType("ValidatingPluginWithGenericBuilder");
         assertNotNull(plugin, "Rebuild this module to make sure annotation 
processing kicks in.");
         node = new Node(null, "Validator", plugin);
     }
 
     @Test
     public void testNullDefaultValue() throws Exception {
-        final ValidatingPluginWithGenericBuilder validatingPlugin = 
DI.createInjector()
-                .registerBinding(Keys.SUBSTITUTOR_KEY, Function::identity)
-                .configure(node);
+        final ValidatingPluginWithGenericBuilder validatingPlugin = 
injector.configure(node);
         assertNull(validatingPlugin);
     }
 
     @Test
     public void testNonNullValue() throws Exception {
         node.getAttributes().put("name", "foo");
-        final ValidatingPluginWithGenericBuilder validatingPlugin = 
DI.createInjector()
-                .registerBinding(Keys.SUBSTITUTOR_KEY, Function::identity)
-                .configure(node);
+        final ValidatingPluginWithGenericBuilder validatingPlugin = 
injector.configure(node);
         assertNotNull(validatingPlugin);
         assertEquals("foo", validatingPlugin.getName());
     }
diff --git 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithGenericSubclassFoo1BuilderTest.java
 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithGenericSubclassFoo1BuilderTest.java
index 0cd50ce..313ea56 100644
--- 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithGenericSubclassFoo1BuilderTest.java
+++ 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithGenericSubclassFoo1BuilderTest.java
@@ -16,17 +16,18 @@
  */
 package org.apache.logging.log4j.core.config.plugins.validation.validators;
 
+import org.apache.logging.log4j.plugins.Named;
 import org.apache.logging.log4j.plugins.Node;
 import org.apache.logging.log4j.plugins.di.DI;
+import org.apache.logging.log4j.plugins.di.Injector;
+import org.apache.logging.log4j.plugins.di.Key;
 import org.apache.logging.log4j.plugins.di.Keys;
 import 
org.apache.logging.log4j.plugins.test.validation.PluginWithGenericSubclassFoo1Builder;
-import org.apache.logging.log4j.plugins.util.PluginType;
-import org.apache.logging.log4j.plugins.util.PluginUtil;
+import org.apache.logging.log4j.plugins.util.PluginManager;
 import org.apache.logging.log4j.test.junit.StatusLoggerLevel;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import java.util.Locale;
 import java.util.function.Function;
 
 import static org.junit.jupiter.api.Assertions.*;
@@ -34,22 +35,20 @@ import static org.junit.jupiter.api.Assertions.*;
 @StatusLoggerLevel("OFF")
 public class ValidatingPluginWithGenericSubclassFoo1BuilderTest {
 
+    private final Injector injector = 
DI.createInjector().registerBinding(Keys.SUBSTITUTOR_KEY, Function::identity);
     private Node node;
 
-    @SuppressWarnings("unchecked")
     @BeforeEach
     public void setUp() throws Exception {
-        final var plugin = (PluginType<PluginWithGenericSubclassFoo1Builder>) 
PluginUtil.collectPluginsByCategory("Test")
-                
.get("PluginWithGenericSubclassFoo1Builder".toLowerCase(Locale.ROOT));
+        final PluginManager pluginManager = injector.getInstance(new 
@Named("Test") Key<>() {});
+        final var plugin = 
pluginManager.getPluginType("PluginWithGenericSubclassFoo1Builder");
         assertNotNull(plugin, "Rebuild this module to make sure annotation 
processing kicks in.");
         node = new Node(null, "Validator", plugin);
     }
 
     @Test
     public void testNullDefaultValue() throws Exception {
-        final PluginWithGenericSubclassFoo1Builder validatingPlugin = 
DI.createInjector()
-                .registerBinding(Keys.SUBSTITUTOR_KEY, Function::identity)
-                .configure(node);
+        final PluginWithGenericSubclassFoo1Builder validatingPlugin = 
injector.configure(node);
         assertNull(validatingPlugin);
     }
 
@@ -57,9 +56,7 @@ public class 
ValidatingPluginWithGenericSubclassFoo1BuilderTest {
     public void testNonNullValue() throws Exception {
         node.getAttributes().put("thing", "thing1");
         node.getAttributes().put("foo1", "foo1");
-        final PluginWithGenericSubclassFoo1Builder validatingPlugin = 
DI.createInjector()
-                .registerBinding(Keys.SUBSTITUTOR_KEY, Function::identity)
-                .configure(node);
+        final PluginWithGenericSubclassFoo1Builder validatingPlugin = 
injector.configure(node);
         assertNotNull(validatingPlugin);
         assertEquals("thing1", validatingPlugin.getThing());
         assertEquals("foo1", validatingPlugin.getFoo1());
diff --git 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithTypedBuilderTest.java
 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithTypedBuilderTest.java
index afdea47..6e284c7 100644
--- 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithTypedBuilderTest.java
+++ 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithTypedBuilderTest.java
@@ -16,17 +16,18 @@
  */
 package org.apache.logging.log4j.core.config.plugins.validation.validators;
 
+import org.apache.logging.log4j.plugins.Named;
 import org.apache.logging.log4j.plugins.Node;
 import org.apache.logging.log4j.plugins.di.DI;
+import org.apache.logging.log4j.plugins.di.Injector;
+import org.apache.logging.log4j.plugins.di.Key;
 import org.apache.logging.log4j.plugins.di.Keys;
 import 
org.apache.logging.log4j.plugins.test.validation.ValidatingPluginWithTypedBuilder;
-import org.apache.logging.log4j.plugins.util.PluginType;
-import org.apache.logging.log4j.plugins.util.PluginUtil;
+import org.apache.logging.log4j.plugins.util.PluginManager;
 import org.apache.logging.log4j.test.junit.StatusLoggerLevel;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import java.util.Locale;
 import java.util.function.Function;
 
 import static org.junit.jupiter.api.Assertions.*;
@@ -34,31 +35,27 @@ import static org.junit.jupiter.api.Assertions.*;
 @StatusLoggerLevel("OFF")
 public class ValidatingPluginWithTypedBuilderTest {
 
+    private final Injector injector = 
DI.createInjector().registerBinding(Keys.SUBSTITUTOR_KEY, Function::identity);
     private Node node;
 
-    @SuppressWarnings("unchecked")
     @BeforeEach
     public void setUp() throws Exception {
-        final var plugin = (PluginType<ValidatingPluginWithTypedBuilder>) 
PluginUtil.collectPluginsByCategory("Test")
-                
.get("ValidatingPluginWithTypedBuilder".toLowerCase(Locale.ROOT));
+        final PluginManager pluginManager = injector.getInstance(new 
@Named("Test") Key<>() {});
+        final var plugin = 
pluginManager.getPluginType("ValidatingPluginWithTypedBuilder");
         assertNotNull(plugin, "Rebuild this module to make sure annotation 
processing kicks in.");
         node = new Node(null, "Validator", plugin);
     }
 
     @Test
     public void testNullDefaultValue() throws Exception {
-        final ValidatingPluginWithTypedBuilder validatingPlugin = 
DI.createInjector()
-                .registerBinding(Keys.SUBSTITUTOR_KEY, Function::identity)
-                .configure(node);
+        final ValidatingPluginWithTypedBuilder validatingPlugin = 
injector.configure(node);
         assertNull(validatingPlugin);
     }
 
     @Test
     public void testNonNullValue() throws Exception {
         node.getAttributes().put("name", "foo");
-        final ValidatingPluginWithTypedBuilder validatingPlugin = 
DI.createInjector()
-                .registerBinding(Keys.SUBSTITUTOR_KEY, Function::identity)
-                .configure(node);
+        final ValidatingPluginWithTypedBuilder validatingPlugin = 
injector.configure(node);
         assertNotNull(validatingPlugin);
         assertEquals("foo", validatingPlugin.getName());
     }
diff --git 
a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/util/PluginUtil.java
 
b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/util/PluginUtil.java
deleted file mode 100644
index feb7deb..0000000
--- 
a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/util/PluginUtil.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache license, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the license for the specific language governing permissions and
- * limitations under the license.
- */
-package org.apache.logging.log4j.plugins.util;
-
-import org.apache.logging.log4j.plugins.PluginFactory;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-
-/**
- * {@link org.apache.logging.log4j.plugins.Plugin} utilities.
- *
- * @see PluginManager
- */
-public final class PluginUtil {
-
-    private PluginUtil() {}
-
-    /**
-     * Shortcut for collecting plugins matching with the given {@code 
category}.
-     */
-    public static Map<String, PluginType<?>> collectPluginsByCategory(final 
String category) {
-        Objects.requireNonNull(category, "category");
-        return collectPluginsByCategoryAndPackage(category, 
Collections.emptyList());
-    }
-
-    /**
-     * Short for collecting plugins matching with the given {@code category} 
in provided {@code packages}.
-     */
-    public static Map<String, PluginType<?>> 
collectPluginsByCategoryAndPackage(
-            final String category,
-            final List<String> packages) {
-        Objects.requireNonNull(category, "category");
-        Objects.requireNonNull(packages, "packages");
-        final PluginManager pluginManager = new PluginManager(category);
-        pluginManager.collectPlugins(packages);
-        return pluginManager.getPlugins();
-    }
-
-    /**
-     * Instantiates the given plugin using its no-arg {@link 
PluginFactory}-annotated static method.
-     * @throws IllegalStateException if instantiation fails
-     */
-    public static <V> V instantiatePlugin(Class<V> pluginClass) {
-        Objects.requireNonNull(pluginClass, "pluginClass");
-        final Method pluginFactoryMethod = 
findPluginFactoryMethod(pluginClass);
-        try {
-            @SuppressWarnings("unchecked")
-            final V instance = (V) pluginFactoryMethod.invoke(null);
-            return instance;
-        } catch (IllegalAccessException | InvocationTargetException error) {
-            final String message = String.format(
-                    "failed to instantiate plugin of type %s using the factory 
method %s",
-                    pluginClass, pluginFactoryMethod);
-            throw new IllegalStateException(message, error);
-        }
-    }
-
-    /**
-     * Finds the {@link PluginFactory}-annotated static method of the given 
class.
-     * @throws IllegalStateException if no such method could be found
-     */
-    public static Method findPluginFactoryMethod(final Class<?> pluginClass) {
-        Objects.requireNonNull(pluginClass, "pluginClass");
-        for (final Method method : pluginClass.getDeclaredMethods()) {
-            final boolean methodAnnotated = 
method.isAnnotationPresent(PluginFactory.class);
-            if (methodAnnotated) {
-                final boolean methodStatic = 
Modifier.isStatic(method.getModifiers());
-                if (methodStatic) {
-                    return method;
-                }
-            }
-        }
-        throw new IllegalStateException("no factory method found for class " + 
pluginClass);
-    }
-
-}

Reply via email to