📄 testdefaultpluginmanager.java
字号:
}
public void testGetModuleByModuleClassOneFound() throws PluginParseException, IOException
{
List pluginLoaders = new ArrayList();
pluginLoaders.add(new SinglePluginLoader("test-tonic-plugin.xml"));
DefaultModuleDescriptorFactory moduleDescriptorFactory = new DefaultModuleDescriptorFactory();
moduleDescriptorFactory.addModuleDescriptor("animal", MockAnimalModuleDescriptor.class);
moduleDescriptorFactory.addModuleDescriptor("mineral", MockMineralModuleDescriptor.class);
PluginManager manager = new DefaultPluginManager(new MemoryPluginStateStore(), pluginLoaders, moduleDescriptorFactory, new PropertiesTonicPropertyManager());
manager.init();
Collection descriptors = manager.getEnabledModuleDescriptorsByClass(MockAnimalModuleDescriptor.class);
assertNotNull(descriptors);
assertEquals(1, descriptors.size());
ModuleDescriptor moduleDescriptor = (ModuleDescriptor) descriptors.iterator().next();
assertEquals("Bear Animal", moduleDescriptor.getName());
descriptors = manager.getEnabledModuleDescriptorsByClass(MockMineralModuleDescriptor.class);
assertNotNull(descriptors);
assertEquals(1, descriptors.size());
moduleDescriptor = (ModuleDescriptor) descriptors.iterator().next();
assertEquals("Bar", moduleDescriptor.getName());
}
public void testGetModuleByModuleClassNoneFound() throws PluginParseException, IOException
{
List pluginLoaders = new ArrayList();
pluginLoaders.add(new SinglePluginLoader("test-tonic-plugin.xml"));
DefaultModuleDescriptorFactory moduleDescriptorFactory = new DefaultModuleDescriptorFactory();
moduleDescriptorFactory.addModuleDescriptor("animal", MockAnimalModuleDescriptor.class);
moduleDescriptorFactory.addModuleDescriptor("mineral", MockMineralModuleDescriptor.class);
PluginManager manager = new DefaultPluginManager(new MemoryPluginStateStore(), pluginLoaders, moduleDescriptorFactory, new PropertiesTonicPropertyManager());
manager.init();
final Collection descriptors = manager.getEnabledModulesByClass(java.lang.String.class);
assertNotNull(descriptors);
assertTrue(descriptors.isEmpty());
}
public void testGetModuleDescriptorsByType() throws PluginParseException, IOException
{
List pluginLoaders = new ArrayList();
pluginLoaders.add(new SinglePluginLoader("test-tonic-plugin.xml"));
DefaultModuleDescriptorFactory moduleDescriptorFactory = new DefaultModuleDescriptorFactory();
moduleDescriptorFactory.addModuleDescriptor("animal", MockAnimalModuleDescriptor.class);
moduleDescriptorFactory.addModuleDescriptor("mineral", MockMineralModuleDescriptor.class);
PluginManager manager = new DefaultPluginManager(new MemoryPluginStateStore(), pluginLoaders, moduleDescriptorFactory, new PropertiesTonicPropertyManager());
manager.init();
Collection descriptors = manager.getEnabledModuleDescriptorsByType("animal");
assertNotNull(descriptors);
assertEquals(1, descriptors.size());
ModuleDescriptor moduleDescriptor = (ModuleDescriptor) descriptors.iterator().next();
assertEquals("Bear Animal", moduleDescriptor.getName());
descriptors = manager.getEnabledModuleDescriptorsByType("mineral");
assertNotNull(descriptors);
assertEquals(1, descriptors.size());
moduleDescriptor = (ModuleDescriptor) descriptors.iterator().next();
assertEquals("Bar", moduleDescriptor.getName());
try
{
manager.getEnabledModuleDescriptorsByType("foobar");
fail("Should have thrown exception.");
}
catch (IllegalArgumentException e)
{
}
}
public void testRetrievingDynamicResources() throws PluginParseException, IOException
{
createFillAndCleanTempPluginDirectory();
PluginManager manager = makeClassLoadingPluginManager();
InputStream is = manager.getDynamicResourceAsStream("tonic-plugin.xml");
assertNotNull(is);
}
public void testFindingNewPlugins() throws PluginParseException, IOException
{
createFillAndCleanTempPluginDirectory();
//delete paddington for the timebeing
File paddington = new File(pluginsTestDir, PADDINGTON_JAR);
paddington.delete();
PluginManager manager = makeClassLoadingPluginManager();
assertEquals(1, manager.getPlugins().size());
assertNotNull(manager.getPlugin("test.tonic.plugin.classloaded2"));
//restore paddington to test plugins dir
FileUtils.copyDirectory(pluginsDirectory, pluginsTestDir);
manager.scanForNewPlugins();
assertEquals(2, manager.getPlugins().size());
assertNotNull(manager.getPlugin("test.tonic.plugin.classloaded2"));
assertNotNull(manager.getPlugin("test.tonic.plugin.classloaded"));
manager.scanForNewPlugins();
assertEquals(2, manager.getPlugins().size());
assertNotNull(manager.getPlugin("test.tonic.plugin.classloaded2"));
assertNotNull(manager.getPlugin("test.tonic.plugin.classloaded"));
}
private PluginManager makeClassLoadingPluginManager() throws PluginParseException, IOException
{
List pluginLoaders = new ArrayList();
classLoadingPluginLoader = new ClassLoadingPluginLoader(pluginsTestDir, null, "tonic-plugin.xml");
pluginLoaders.add(classLoadingPluginLoader);
DefaultModuleDescriptorFactory moduleDescriptorFactory = new DefaultModuleDescriptorFactory();
moduleDescriptorFactory.addModuleDescriptor("animal", MockAnimalModuleDescriptor.class);
PluginManager manager = new DefaultPluginManager(new MemoryPluginStateStore(), pluginLoaders, moduleDescriptorFactory, new PropertiesTonicPropertyManager());
manager.init();
return manager;
}
public void testRemovingPlugins() throws PluginException, IOException
{
createFillAndCleanTempPluginDirectory();
PluginManager manager = makeClassLoadingPluginManager();
assertEquals(2, manager.getPlugins().size());
manager.uninstall(manager.getPlugin("test.tonic.plugin.classloaded"));
assertEquals(1, manager.getPlugins().size());
assertNull(manager.getPlugin("test.tonic.plugin.classloaded"));
assertEquals("Found unexpected files after removing plugin: " + Arrays.asList(pluginsTestDir.list()), 1, pluginsTestDir.listFiles().length);
}
public void testNonRemovablePlugins() throws PluginParseException, IOException
{
List pluginLoaders = new ArrayList();
pluginLoaders.add(new SinglePluginLoader("test-tonic-plugin.xml"));
DefaultModuleDescriptorFactory moduleDescriptorFactory = new DefaultModuleDescriptorFactory();
moduleDescriptorFactory.addModuleDescriptor("animal", MockAnimalModuleDescriptor.class);
moduleDescriptorFactory.addModuleDescriptor("mineral", MockMineralModuleDescriptor.class);
PluginManager manager = new DefaultPluginManager(new MemoryPluginStateStore(), pluginLoaders, moduleDescriptorFactory, new PropertiesTonicPropertyManager());
manager.init();
Plugin plugin = manager.getPlugin("test.tonic.plugin");
assertFalse(plugin.isUninstallable());
assertFalse(plugin.isResourceLoading());
assertNull(plugin.getResourceAsStream("anything"));
try
{
manager.uninstall(plugin);
fail("Where was the exception?");
}
catch (PluginException p)
{
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -