📄 classpathpluginloader.java
字号:
package com.opensymphony.tonic.loaders;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.util.*;
import java.net.URL;
import java.io.IOException;
import com.opensymphony.tonic.*;
import com.opensymphony.tonic.util.ClassLoaderUtils;
public class ClassPathPluginLoader implements PluginLoader
{
private static Log log = LogFactory.getLog(ClassPathPluginLoader.class);
List plugins;
String fileNameToLoad;
public ClassPathPluginLoader(PluginManager pluginManager)
{
this(pluginManager, pluginManager.getProperty(PluginManager.PROP_DEFAULT_FILENAME));
}
public ClassPathPluginLoader(PluginManager pluginManager, String fileNameToLoad)
{
this.fileNameToLoad = fileNameToLoad;
}
private void loadClassPathPlugins(ModuleDescriptorFactory moduleDescriptorFactory) throws PluginParseException {
URL url = null;
final Enumeration pluginDescriptorFiles;
plugins = new ArrayList();
try
{
pluginDescriptorFiles = ClassLoaderUtils.getResources(fileNameToLoad, this.getClass());
}
catch (IOException e)
{
log.error("Could not load classpath plugins: " + e, e);
return;
}
while (pluginDescriptorFiles.hasMoreElements())
{
url = (URL) pluginDescriptorFiles.nextElement();
try
{
SinglePluginLoader loader = new SinglePluginLoader(url.openConnection().getInputStream());
plugins.addAll(loader.loadAllPlugins(moduleDescriptorFactory));
}
catch (IOException e)
{
log.error("IOException parsing inputstream for : " + url, e);
}
}
}
public Collection loadAllPlugins(ModuleDescriptorFactory moduleDescriptorFactory) throws PluginParseException
{
if (plugins == null)
{
loadClassPathPlugins(moduleDescriptorFactory);
}
return plugins;
}
public boolean supportsRemoval()
{
return false;
}
public boolean supportsAddition()
{
return false;
}
public Collection removeMissingPlugins()
{
throw new UnsupportedOperationException("This PluginLoader does not support removal.");
}
public Collection addFoundPlugins(ModuleDescriptorFactory moduleDescriptorFactory)
{
throw new UnsupportedOperationException("This PluginLoader does not support addition.");
}
public void removePlugin(Plugin plugin) throws PluginException
{
throw new PluginException("This PluginLoader does not support removal.");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -