Author: toad
Date: 2007-09-08 16:03:36 +0000 (Sat, 08 Sep 2007)
New Revision: 15050
Modified:
trunk/freenet/src/freenet/pluginmanager/PluginHandler.java
trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
trunk/freenet/src/freenet/pluginmanager/PluginManager.java
Log:
Move unregister into PluginInfoWrapper
Modified: trunk/freenet/src/freenet/pluginmanager/PluginHandler.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/PluginHandler.java 2007-09-08
15:58:42 UTC (rev 15049)
+++ trunk/freenet/src/freenet/pluginmanager/PluginHandler.java 2007-09-08
16:03:36 UTC (rev 15050)
@@ -81,7 +81,7 @@
System.err.println("Caught Throwable
while running plugin: "+t);
t.printStackTrace();
}
- pm.unregisterPlugin(pi); // If not already
unregistered
+ pi.unregister(pm); // If not already
unregistered
if(!(plugin instanceof FredPluginThreadless))
pm.removePlugin(pi);
} else {
Modified: trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
2007-09-08 15:58:42 UTC (rev 15049)
+++ trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
2007-09-08 16:03:36 UTC (rev 15050)
@@ -22,6 +22,7 @@
private String filename;
private HashSet toadletLinks=new HashSet();
private boolean stopping = false;
+ private boolean unregistered = false;
//public String
public PluginInfoWrapper(FredPlugin plug, String filename) {
@@ -93,7 +94,7 @@
* or else a value in milliseconds.
**/
public void stopPlugin(PluginManager manager, int maxWaitTime) {
- manager.unregisterPlugin(this);
+ unregister(manager);
plug.terminate();
stopping = true;
if(thread != null) {
@@ -118,6 +119,17 @@
}
}
+ /**
+ * Unregister the plugin from any user interface or other callbacks it
may be
+ * registered with. Call this before manager.removePlugin(): the plugin
becomes
+ * unvisitable immediately, but it may take time for it to shut down
completely.
+ */
+ void unregister(PluginManager manager) {
+ if(unregistered) return;
+ unregistered = true;
+ manager.unregisterPluginToadlet(this);
+ }
+
public boolean isPproxyPlugin() {
return isPproxyPlugin;
}
Modified: trunk/freenet/src/freenet/pluginmanager/PluginManager.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/PluginManager.java 2007-09-08
15:58:42 UTC (rev 15049)
+++ trunk/freenet/src/freenet/pluginmanager/PluginManager.java 2007-09-08
16:03:36 UTC (rev 15050)
@@ -177,12 +177,7 @@
core.storeConfig();
}
- /**
- * Unregister a plugin from any user interface or other callbacks it
may be
- * registered with. Call this before removePlugin(): the plugin becomes
- * unvisitable immediately, but it may take time for it to shut down
completely.
- */
- public void unregisterPlugin(PluginInfoWrapper pi) {
+ public void unregisterPluginToadlet(PluginInfoWrapper pi) {
synchronized (toadletList) {
try {
toadletList.remove(pi.getPluginClassName());
@@ -192,7 +187,6 @@
Logger.error(this, "removing Plugin", ex);
}
}
- core.storeConfig();
}
public void addToadletSymlinks(PluginInfoWrapper pi) {