summaryrefslogtreecommitdiff
path: root/java/src/Ice/PluginManagerI.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/Ice/PluginManagerI.java')
-rw-r--r--java/src/Ice/PluginManagerI.java39
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)
{