Author: jerome
Date: Tue Dec 6 02:51:06 2005
New Revision: 354399
URL: http://svn.apache.org/viewcvs?rev=354399view=rev
Log:
Merge from trunk 354397:354398 - Improvements in plugin circular dependencies
detection
Modified:
lucene/nutch/branches/mapred/src/java/org/apache/nutch/plugin/PluginRepository.java
Modified:
lucene/nutch/branches/mapred/src/java/org/apache/nutch/plugin/PluginRepository.java
URL:
http://svn.apache.org/viewcvs/lucene/nutch/branches/mapred/src/java/org/apache/nutch/plugin/PluginRepository.java?rev=354399r1=354398r2=354399view=diff
==
---
lucene/nutch/branches/mapred/src/java/org/apache/nutch/plugin/PluginRepository.java
(original)
+++
lucene/nutch/branches/mapred/src/java/org/apache/nutch/plugin/PluginRepository.java
Tue Dec 6 02:51:06 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; iids.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)
!id.equals(nutch-extensionpoints)) {
+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;
}