package org.dcache.gplazma.loader; import org.junit.Before; import org.junit.Test; import java.util.Collections; import org.dcache.gplazma.plugins.GPlazmaPlugin; import static org.junit.Assert.assertEquals; public class XmlResourcePluginRepositoryFactoryTests { Utf8DataClassLoader _classLoader; XmlResourcePluginRepositoryFactory _factory; PluginXmlGenerator _pluginXml; @Before public void setUp() { ResourceBlockingClassLoader blockingLoader = new ResourceBlockingClassLoader(); blockingLoader.setIsBlocking( true); _classLoader = new Utf8DataClassLoader(XmlResourcePluginRepositoryFactory.RESOURCE_PATH, blockingLoader); Thread currentThread = Thread.currentThread(); currentThread.setContextClassLoader( _classLoader); _factory = new XmlResourcePluginRepositoryFactory(); _pluginXml = new PluginXmlGenerator(); } @Test public void testNoXml() { PluginRepository repository = _factory.newRepository(); assertEquals("Check number of discovered plugins",0,repository.size()); } @Test public void testSingleXmlNoPlugins() { _classLoader.addResource( _pluginXml); PluginRepository repository = _factory.newRepository(); assertEquals("Check number of discovered plugins",0,repository.size()); } @Test public void testSingleResourceWithSinglePlugin() { _pluginXml.addPlugin( Collections.singleton("foo"), DummyPlugin.class); _classLoader.addResource( _pluginXml); PluginRepository repository = _factory.newRepository(); assertEquals("Check number of discovered plugins",1,repository.size()); } @Test public void testSingleResourceWithTwoPlugins() { _pluginXml.addPlugin( Collections.singleton("foo"), DummyPlugin.class); _pluginXml.addPlugin( Collections.singleton("bar"), AnotherDummyPlugin.class); _classLoader.addResource( _pluginXml); PluginRepository repository = _factory.newRepository(); assertEquals("Check number of discovered plugins",2,repository.size()); } @Test public void testTwoResourcesWithSinglePlugin() { _pluginXml.addPlugin( Collections.singleton("foo"), DummyPlugin.class); _classLoader.addResource( _pluginXml); _pluginXml.clear(); _pluginXml.addPlugin( Collections.singleton("bar"), AnotherDummyPlugin.class); _classLoader.addResource( _pluginXml); PluginRepository repository = _factory.newRepository(); assertEquals("Check number of discovered plugins",2,repository.size()); } public static class DummyPlugin implements GPlazmaPlugin { // dummy, empty plugin } public static class AnotherDummyPlugin implements GPlazmaPlugin { // dummy, empty plugin } }