[freenet-cvs] r11284 - trunk/freenet/src/freenet/plugin

toad at freenetproject.org toad at freenetproject.org
Thu Dec 7 19:25:19 UTC 2006


Author: toad
Date: 2006-12-07 19:25:18 +0000 (Thu, 07 Dec 2006)
New Revision: 11284

Modified:
   trunk/freenet/src/freenet/plugin/PluginManager.java
Log:
Plugins: (plugin/)
Catch Throwable loading plugin.
Don't queue starting plugin until it's been added.
Don't write freenet.ini until plugin has been loaded.
Logging.

Modified: trunk/freenet/src/freenet/plugin/PluginManager.java
===================================================================
--- trunk/freenet/src/freenet/plugin/PluginManager.java	2006-12-07 19:23:31 UTC (rev 11283)
+++ trunk/freenet/src/freenet/plugin/PluginManager.java	2006-12-07 19:25:18 UTC (rev 11284)
@@ -69,6 +69,8 @@
 						optionValue.append(StringArrOption.encode(plugin.getClass().getName()));
 					}
 				}
+				if(Logger.shouldLog(Logger.MINOR, this))
+					Logger.minor(this, "Plugin list: "+optionValue.toString());
 				return optionValue.toString();
 			};
 
@@ -95,7 +97,8 @@
 				String pluginName = StringArrOption.decode(loadedPluginNames[pluginIndex]);
 				try {
 					addPlugin(pluginName, false);
-				} catch (IllegalArgumentException iae1) {
+				} catch (Throwable t) {
+					Logger.error(this, "Failed to load plugin "+pluginName+" : "+t, t);
 				}
 			}
 		}
@@ -135,12 +138,17 @@
 	 * @param pluginName
 	 *            The name of the plugin
 	 */
-	public void addPlugin(String pluginName, boolean store) throws IllegalArgumentException {
+	public void addPlugin(String pluginName, final boolean store) throws IllegalArgumentException {
+		if(Logger.shouldLog(Logger.MINOR, this)) 
+			Logger.minor(this, "Loading plugin "+pluginName+(store?"" : " (don't store afterwards)"));
 		final Plugin newPlugin = createPlugin(pluginName);
 		if (newPlugin == null) {
 			throw new IllegalArgumentException();
 		}
 		newPlugin.setPluginManager(this);
+		synchronized (syncObject) {
+			plugins.add(newPlugin);
+		}
 		node.ps.queueTimedJob(new Runnable() {
 			public void run() {
 				try{
@@ -148,14 +156,11 @@
 						Thread.sleep(1000);
 				}catch (InterruptedException e) {}
 				newPlugin.startPlugin();
+				if(store)
+					node.clientCore.storeConfig();
 			}
 		}, 0);
 		
-		synchronized (syncObject) {
-			plugins.add(newPlugin);
-		}
-		if(store)
-			node.clientCore.storeConfig();
 	}
 
 	/**




More information about the cvs mailing list