]> source.dussan.org Git - pf4j.git/commitdiff
Add a unit test in AbstractExtensionFinderTest to reproduce #428 (#430)
authorahaha-vip <48004552+ahaha-vip@users.noreply.github.com>
Wed, 24 Mar 2021 08:46:39 +0000 (16:46 +0800)
committerGitHub <noreply@github.com>
Wed, 24 Mar 2021 08:46:39 +0000 (10:46 +0200)
pf4j/src/main/java/org/pf4j/AbstractExtensionFinder.java
pf4j/src/test/java/org/pf4j/AbstractExtensionFinderTest.java

index a156fab02872d9383373667c7ecaf6ed7a5d0e26..42d59ae52ce090b7af4a81e792b32498d41f5668 100644 (file)
@@ -83,7 +83,7 @@ public abstract class AbstractExtensionFinder implements ExtensionFinder, Plugin
 
         // classpath's extensions <=> pluginId = null
         Set<String> 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<String> findClassNames(String pluginId) {
-        return getEntries().get(pluginId);
+        Set<String> classNames = getEntries().get(pluginId);
+        if (classNames == null) {
+            return Collections.emptySet();
+        }
+
+        return classNames;
     }
 
     @Override
index 83796ab742bfc12bdb3635dc12bcbad4b9e61e16..eff6ebef2ca7f3492ea3912b84d628af6bcb8891 100644 (file)
@@ -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<String, Set<String>> readPluginsStorages() {
+                Map<String, Set<String>> entries = new LinkedHashMap<>();
+
+                Set<String> 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<String, Set<String>> readClasspathStorages() {
+                return Collections.emptyMap();
+            }
+
+        };
+
+        List<ExtensionWrapper> plugin1Result = instance.find("plugin1");
+        assertEquals(2, plugin1Result.size());
+
+        List<ExtensionWrapper> plugin2Result = instance.find("plugin2");
+        assertEquals(0, plugin2Result.size());
+
+        List<ExtensionWrapper> plugin3Result = instance.find(UUID.randomUUID().toString());
+        assertEquals(0, plugin3Result.size());
+    }
+
     @Test
     public void findExtensionAnnotation() throws Exception {
         Compilation compilation = javac().compile(ExtensionAnnotationProcessorTest.Greeting,