From 4e3d2fa1422cbbaf212f01fb171130fb082b4d95 Mon Sep 17 00:00:00 2001 From: ahaha-vip <48004552+ahaha-vip@users.noreply.github.com> Date: Wed, 24 Mar 2021 16:46:39 +0800 Subject: [PATCH] Add a unit test in AbstractExtensionFinderTest to reproduce #428 (#430) --- .../org/pf4j/AbstractExtensionFinder.java | 9 ++++- .../org/pf4j/AbstractExtensionFinderTest.java | 40 +++++++++++++++++++ 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/pf4j/src/main/java/org/pf4j/AbstractExtensionFinder.java b/pf4j/src/main/java/org/pf4j/AbstractExtensionFinder.java index a156fab..42d59ae 100644 --- a/pf4j/src/main/java/org/pf4j/AbstractExtensionFinder.java +++ b/pf4j/src/main/java/org/pf4j/AbstractExtensionFinder.java @@ -83,7 +83,7 @@ public abstract class AbstractExtensionFinder implements ExtensionFinder, Plugin // classpath's extensions <=> pluginId = null Set classNames = findClassNames(pluginId); - if (classNames == null || classNames.isEmpty()) { + if (classNames.isEmpty()) { return result; } @@ -218,7 +218,12 @@ public abstract class AbstractExtensionFinder implements ExtensionFinder, Plugin @Override public Set findClassNames(String pluginId) { - return getEntries().get(pluginId); + Set classNames = getEntries().get(pluginId); + if (classNames == null) { + return Collections.emptySet(); + } + + return classNames; } @Override diff --git a/pf4j/src/test/java/org/pf4j/AbstractExtensionFinderTest.java b/pf4j/src/test/java/org/pf4j/AbstractExtensionFinderTest.java index 83796ab..eff6ebe 100644 --- a/pf4j/src/test/java/org/pf4j/AbstractExtensionFinderTest.java +++ b/pf4j/src/test/java/org/pf4j/AbstractExtensionFinderTest.java @@ -19,6 +19,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.io.ByteStreams; import com.google.testing.compile.Compilation; import java.util.Comparator; +import java.util.UUID; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -204,6 +205,45 @@ public class AbstractExtensionFinderTest { assertEquals(1, result.size()); } + /** + * Test of {@link org.pf4j.AbstractExtensionFinder#find(java.lang.String)}. + */ + @Test + public void testFindExtensionWrappersFromPluginId() { + ExtensionFinder instance = new AbstractExtensionFinder(pluginManager) { + + @Override + public Map> readPluginsStorages() { + Map> entries = new LinkedHashMap<>(); + + Set bucket = new HashSet<>(); + bucket.add("org.pf4j.test.TestExtension"); + bucket.add("org.pf4j.test.FailTestExtension"); + entries.put("plugin1", bucket); + bucket = new HashSet<>(); + bucket.add("org.pf4j.test.TestExtension"); + entries.put("plugin2", bucket); + + return entries; + } + + @Override + public Map> readClasspathStorages() { + return Collections.emptyMap(); + } + + }; + + List plugin1Result = instance.find("plugin1"); + assertEquals(2, plugin1Result.size()); + + List plugin2Result = instance.find("plugin2"); + assertEquals(0, plugin2Result.size()); + + List plugin3Result = instance.find(UUID.randomUUID().toString()); + assertEquals(0, plugin3Result.size()); + } + @Test public void findExtensionAnnotation() throws Exception { Compilation compilation = javac().compile(ExtensionAnnotationProcessorTest.Greeting,