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); - } - -}
