Author: jerome
Date: Tue Dec 6 02:45:13 2005
New Revision: 354398
URL: http://svn.apache.org/viewcvs?rev=354398&view=rev
Log:
Improvements in plugin circular dependencies detection
Modified:
lucene/nutch/trunk/src/java/org/apache/nutch/plugin/PluginRepository.java
Modified:
lucene/nutch/trunk/src/java/org/apache/nutch/plugin/PluginRepository.java
URL:
http://svn.apache.org/viewcvs/lucene/nutch/trunk/src/java/org/apache/nutch/plugin/PluginRepository.java?rev=354398&r1=354397&r2=354398&view=diff
==============================================================================
--- lucene/nutch/trunk/src/java/org/apache/nutch/plugin/PluginRepository.java
(original)
+++ lucene/nutch/trunk/src/java/org/apache/nutch/plugin/PluginRepository.java
Tue Dec 6 02:45:13 2005
@@ -116,13 +116,20 @@
}
private void getPluginCheckedDependencies(PluginDescriptor plugin,
- Map plugins, Map dependencies)
+ Map plugins,
+ Map dependencies,
+ Map branch)
throws MissingDependencyException,
CircularDependencyException {
if (dependencies == null) { dependencies = new HashMap(); }
+ if (branch == null) { branch = new HashMap(); }
+ branch.put(plugin.getPluginId(), plugin);
+ // Get the plugin dependencies
String[] ids = plugin.getDependencies();
+
+ // Otherwise, checks each dependency
for (int i=0; i<ids.length; i++) {
String id = ids[i];
PluginDescriptor dependency = (PluginDescriptor) plugins.get(id);
@@ -131,15 +138,17 @@
"Missing dependency " + id +
" for plugin " + plugin.getPluginId());
}
- if (dependencies.containsKey(id)) {
+ if (branch.containsKey(id)) {
throw new CircularDependencyException(
"Circular dependency detected " + id +
" for plugin " + plugin.getPluginId());
}
dependencies.put(id, dependency);
getPluginCheckedDependencies((PluginDescriptor) plugins.get(id),
- plugins, dependencies);
+ plugins, dependencies, branch);
}
+
+ branch.remove(plugin.getPluginId());
}
private Map getPluginCheckedDependencies(PluginDescriptor plugin,
@@ -147,7 +156,8 @@
throws MissingDependencyException,
CircularDependencyException {
Map dependencies = new HashMap();
- getPluginCheckedDependencies(plugin, plugins, dependencies);
+ Map branch = new HashMap();
+ getPluginCheckedDependencies(plugin, plugins, dependencies, branch);
return dependencies;
}