diff options
Diffstat (limited to 'pf4j')
-rw-r--r-- | pf4j/src/main/java/org/pf4j/AbstractExtensionFinder.java | 9 | ||||
-rw-r--r-- | pf4j/src/test/java/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<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 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<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, |