aboutsummaryrefslogtreecommitdiffstats
path: root/pf4j/src/test
diff options
context:
space:
mode:
authorAjith Kumar <ajithalbus@gmail.com>2020-10-20 14:36:15 +0530
committerGitHub <noreply@github.com>2020-10-20 12:06:15 +0300
commitc2d9998350b3a15ff7678c9053bca434463cf915 (patch)
tree13fe764a13aaaf8d78fb7f037157687e7df6d8d1 /pf4j/src/test
parent0d586c805ee882a2a80244ee83b941528a38e268 (diff)
downloadpf4j-c2d9998350b3a15ff7678c9053bca434463cf915.tar.gz
pf4j-c2d9998350b3a15ff7678c9053bca434463cf915.zip
Bucketed caching in SingletonExtensionFactory (#402)
Diffstat (limited to 'pf4j/src/test')
-rw-r--r--pf4j/src/test/java/org/pf4j/SingletonExtensionFactoryTest.java40
1 files changed, 40 insertions, 0 deletions
diff --git a/pf4j/src/test/java/org/pf4j/SingletonExtensionFactoryTest.java b/pf4j/src/test/java/org/pf4j/SingletonExtensionFactoryTest.java
index 80e7ab0..ac8a3c5 100644
--- a/pf4j/src/test/java/org/pf4j/SingletonExtensionFactoryTest.java
+++ b/pf4j/src/test/java/org/pf4j/SingletonExtensionFactoryTest.java
@@ -19,11 +19,17 @@ import org.junit.jupiter.api.Test;
import org.pf4j.plugin.FailTestExtension;
import org.pf4j.plugin.TestExtension;
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+
import static org.junit.jupiter.api.Assertions.assertNotSame;
import static org.junit.jupiter.api.Assertions.assertSame;
/**
* @author Decebal Suiu
+ * @author Ajith Kumar
*/
public class SingletonExtensionFactoryTest {
@@ -43,4 +49,38 @@ public class SingletonExtensionFactoryTest {
assertNotSame(extensionOne, extensionTwo);
}
+ @Test
+ @SuppressWarnings("unchecked")
+ public void createNewEachTimeFromDifferentClassLoaders() throws Exception {
+ ExtensionFactory extensionFactory = new SingletonExtensionFactory();
+
+ // Get classpath locations
+ URL[] classpathReferences = getClasspathReferences();
+
+ // Create different classloaders for the classpath references and load classes respectively
+ ClassLoader klassLoaderOne = new URLClassLoader(classpathReferences, null);
+ Class klassOne = klassLoaderOne.loadClass(TestExtension.class.getName());
+ ClassLoader klassLoaderTwo = new URLClassLoader(classpathReferences, null);
+ Class klassTwo = klassLoaderTwo.loadClass(TestExtension.class.getName());
+
+ // create instances
+ Object instanceOne = extensionFactory.create(klassOne);
+ Object instanceTwo = extensionFactory.create(klassTwo);
+
+ // assert that instances not same
+ assertNotSame(instanceOne, instanceTwo);
+ }
+
+ private URL[] getClasspathReferences() throws MalformedURLException {
+ String classpathProperty = System.getProperty("java.class.path");
+
+ String[] classpaths = classpathProperty.split(":");
+ URL[] uris = new URL[classpaths.length];
+
+ for (int index = 0; index < classpaths.length; index++) {
+ uris[index] = new File(classpaths[index]).toURI().toURL();
+ }
+ return uris;
+ }
+
}