diff options
Diffstat (limited to 'java/src/Ice/PluginManagerI.java')
-rw-r--r-- | java/src/Ice/PluginManagerI.java | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/java/src/Ice/PluginManagerI.java b/java/src/Ice/PluginManagerI.java index f76789f4a21..2c5e33bfb63 100644 --- a/java/src/Ice/PluginManagerI.java +++ b/java/src/Ice/PluginManagerI.java @@ -19,12 +19,12 @@ public final class PluginManagerI implements PluginManager if(_initialized) { InitializationException ex = new InitializationException(); - ex.reason = "plugins already initialized"; + ex.reason = "plug-ins already initialized"; throw ex; } // - // Invoke initialize() on the plugins, in the order they were loaded. + // Invoke initialize() on the plug-ins, in the order they were loaded. // java.util.List<Plugin> initializedPlugins = new java.util.ArrayList<Plugin>(); try @@ -40,7 +40,7 @@ public final class PluginManagerI implements PluginManager catch(RuntimeException ex) { // - // Destroy the plugins that have been successfully initialized, in the + // Destroy the plug-ins that have been successfully initialized, in the // reverse order. // java.util.ListIterator<Plugin> i = initializedPlugins.listIterator(initializedPlugins.size()); @@ -104,11 +104,24 @@ public final class PluginManagerI implements PluginManager { if(_communicator != null) { - java.util.Iterator<Plugin> i = _plugins.values().iterator(); - while(i.hasNext()) + if(_initialized) { - Plugin p = i.next(); - p.destroy(); + java.util.Iterator<java.util.Map.Entry<String, Plugin> > i = _plugins.entrySet().iterator(); + java.util.Map.Entry<String, Plugin> entry; + while(i.hasNext()) + { + entry = i.next(); + try + { + Plugin p = entry.getValue(); + p.destroy(); + } + catch(RuntimeException ex) + { + Ice.Util.getProcessLogger().warning("unexpected exception raised by plug-in '" + entry.getKey() + "' destruction.\n"); + Ice.Util.getProcessLogger().warning("exception: " + ex.toString()); + } + } } _communicator = null; @@ -135,8 +148,8 @@ public final class PluginManagerI implements PluginManager // Ice.Plugin.name[.<language>]=entry_point [args] // // If the Ice.PluginLoadOrder property is defined, load the - // specified plugins in the specified order, then load any - // remaining plugins. + // specified plug-ins in the specified order, then load any + // remaining plug-ins. // final String prefix = "Ice.Plugin."; Properties properties = _communicator.getProperties(); @@ -148,7 +161,7 @@ public final class PluginManagerI implements PluginManager if(_plugins.containsKey(loadOrder[i])) { PluginInitializationException ex = new PluginInitializationException(); - ex.reason = "plugin `" + loadOrder[i] + "' already loaded"; + ex.reason = "plug-in `" + loadOrder[i] + "' already loaded"; throw ex; } @@ -173,13 +186,13 @@ public final class PluginManagerI implements PluginManager else { PluginInitializationException ex = new PluginInitializationException(); - ex.reason = "plugin `" + loadOrder[i] + "' not defined"; + ex.reason = "plug-in `" + loadOrder[i] + "' not defined"; throw ex; } } // - // Load any remaining plugins that weren't specified in PluginLoadOrder. + // Load any remaining plug-ins that weren't specified in PluginLoadOrder. // while(!plugins.isEmpty()) { @@ -240,7 +253,7 @@ public final class PluginManagerI implements PluginManager // // An application can set Ice.InitPlugins=0 if it wants to postpone // initialization until after it has interacted directly with the - // plugins. + // plug-ins. // if(properties.getPropertyAsIntWithDefault("Ice.InitPlugins", 1) > 0) { |