Author: jerome
Date: Tue Dec  6 02:51:06 2005
New Revision: 354399

URL: http://svn.apache.org/viewcvs?rev=354399&view=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=354399&r1=354398&r2=354399&view=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; 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) && 
!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;
     }
     


Reply via email to