From c0031b05ff904a7d087bfedc224b87345e393b1e Mon Sep 17 00:00:00 2001 From: hanna Date: Thu, 13 Jan 2011 20:58:28 +0000 Subject: [PATCH] Stamp out lazy loading in the PluginManager. This is an attempt to stamp out the non-deterministic VariantEvalIntegrationTest errors we've been seeing. git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@4995 348d0f76-0448-11de-a6fe-93d51630548a --- .../utils/classloader/PluginManager.java | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/java/src/org/broadinstitute/sting/utils/classloader/PluginManager.java b/java/src/org/broadinstitute/sting/utils/classloader/PluginManager.java index c34f3c75d..25c1c76a2 100644 --- a/java/src/org/broadinstitute/sting/utils/classloader/PluginManager.java +++ b/java/src/org/broadinstitute/sting/utils/classloader/PluginManager.java @@ -74,10 +74,10 @@ public class PluginManager { /** * Plugins stored based on their name. */ - private SortedMap> pluginsByName = null; + private final SortedMap> pluginsByName; - private List> plugins; - private List> interfaces; + private final List> plugins; + private final List> interfaces; /** * Create a new plugin manager. @@ -138,6 +138,12 @@ public class PluginManager { else interfaces.add(type); } + + pluginsByName = new TreeMap>(); + for (Class pluginClass : plugins) { + String pluginName = getName(pluginClass); + pluginsByName.put(pluginName, pluginClass); + } } /** @@ -161,16 +167,8 @@ public class PluginManager { } } - protected SortedMap> getPluginsByName() { - if (pluginsByName == null) { - SortedMap> newPlugins = new TreeMap>(); - for (Class pluginClass : plugins) { - String pluginName = getName(pluginClass); - newPlugins.put(pluginName, pluginClass); - } - pluginsByName = newPlugins; - } - return pluginsByName; + protected Map> getPluginsByName() { + return Collections.unmodifiableMap(pluginsByName); } /** @@ -180,7 +178,7 @@ public class PluginManager { * @return True if the plugin exists, false otherwise. */ public boolean exists(String pluginName) { - return getPluginsByName().containsKey(pluginName); + return pluginsByName.containsKey(pluginName); } /** @@ -190,7 +188,7 @@ public class PluginManager { * @return True if the plugin exists, false otherwise. */ public boolean exists(Class plugin) { - return getPluginsByName().containsValue(plugin); + return pluginsByName.containsValue(plugin); } /** @@ -231,7 +229,7 @@ public class PluginManager { * @return The plugin object if found; null otherwise. */ public PluginType createByName(String pluginName) { - Class plugin = getPluginsByName().get(pluginName); + Class plugin = pluginsByName.get(pluginName); if( plugin == null ) throw new UserException(String.format("Could not find %s with name: %s", pluginCategory,pluginName)); try {