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; }