在URLNormalizers构造函数中,
this.extensionPoint =PluginRepository.get(conf).getExtensionPoint(
看1下PluginRepository.get函数:
public static synchronizedPluginRepository get(Configuration conf) {
PluginRepository result = CACHE.get(conf);
if (result ==null) {
result = newPluginRepository(conf);
CACHE.put(conf,result);
}
returnresult;
}
publicPluginRepository(Configuration conf)throwsRuntimeException {
fActivatedPlugins =newHashMap<String, Plugin>();
fExtensionPoints =newHashMap<String, ExtensionPoint>();
this.conf =conf;
this.auto =conf.getBoolean("plugin.auto-activation",true);
String[] pluginFolders = conf.getStrings("plugin.folders");
PluginManifestParsermanifestParser = new PluginManifestParser(conf,
this);
Map<String, PluginDescriptor>allPlugins = manifestParser
.parsePluginFolder(pluginFolders);
Pattern excludes = Pattern.compile(conf.get("plugin.excludes",""));
Pattern includes = Pattern.compile(conf.get("plugin.includes",""));
Map<String, PluginDescriptor>filteredPlugins = filter(excludes,
includes, allPlugins);
fRegisteredPlugins =getDependencyCheckedPlugins(filteredPlugins,
this.auto ?allPlugins : filteredPlugins);
installExtensionPoints(fRegisteredPlugins);
try {
installExtensions(fRegisteredPlugins);
} catch(PluginRuntimeException e) {
LOG.fatal(e.toString());
thrownewRuntimeException(e.getMessage());
}
displayStatus();
}
<property>
<name>plugin.folders</name>
<value>plugins</value>
</property>
2. plugin.auto-activation:
<property>
<name>plugin.auto-activation</name>
<value>true</value>
</property>
3. plugin.includes:
<property>