Author: toad
Date: 2006-08-10 17:06:48 +0000 (Thu, 10 Aug 2006)
New Revision: 10024
Added:
trunk/freenet/src/freenet/node/useralerts/SimpleUserAlert.java
Modified:
trunk/freenet/src/freenet/pluginmanager/PluginManager.java
Log:
If we can't load a plugin, ask the user to upgrade the JVM.
Add SimpleUserAlert for such instances.
Added: trunk/freenet/src/freenet/node/useralerts/SimpleUserAlert.java
===================================================================
--- trunk/freenet/src/freenet/node/useralerts/SimpleUserAlert.java
2006-08-10 16:42:03 UTC (rev 10023)
+++ trunk/freenet/src/freenet/node/useralerts/SimpleUserAlert.java
2006-08-10 17:06:48 UTC (rev 10024)
@@ -0,0 +1,55 @@
+package freenet.node.useralerts;
+
+import freenet.support.HTMLNode;
+
+public class SimpleUserAlert implements UserAlert {
+
+ final boolean canDismiss;
+ final String title;
+ final String text;
+ final short type;
+
+ public SimpleUserAlert(boolean canDismiss, String title, String text,
short type) {
+ this.canDismiss = canDismiss;
+ this.title = title;
+ this.text = text;
+ this.type = type;
+ }
+
+ public boolean userCanDismiss() {
+ return canDismiss;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ public HTMLNode getHTMLText() {
+ return new HTMLNode("div", text);
+ }
+
+ public short getPriorityClass() {
+ return type;
+ }
+
+ public boolean isValid() {
+ return true;
+ }
+
+ public void isValid(boolean validity) {
+ // Do nothing
+ }
+
+ public String dismissButtonText() {
+ return "Hide";
+ }
+
+ public boolean shouldUnregisterOnDismiss() {
+ return true;
+ }
+
+}
Modified: trunk/freenet/src/freenet/pluginmanager/PluginManager.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/PluginManager.java 2006-08-10
16:42:03 UTC (rev 10023)
+++ trunk/freenet/src/freenet/pluginmanager/PluginManager.java 2006-08-10
17:06:48 UTC (rev 10024)
@@ -21,6 +21,9 @@
import freenet.config.StringArrOption;
import freenet.config.SubConfig;
import freenet.node.Node;
+import freenet.node.useralerts.SimpleUserAlert;
+import freenet.node.useralerts.UserAlert;
+import freenet.support.HTMLNode;
import freenet.support.Logger;
public class PluginManager {
@@ -119,6 +122,18 @@
Logger.normal(this, "Plugin loaded: " + filename);
} catch (PluginNotFoundException e) {
Logger.normal(this, "Loading plugin failed (" +
filename + ")", e);
+ } catch (UnsupportedClassVersionError e) {
+ Logger.error(this, "Could not load plugin "+filename+"
: "+e, e);
+ System.err.println("Could not load plugin "+filename+"
: "+e);
+ e.printStackTrace();
+ String jvmVersion =
System.getProperty("java.vm.version");
+ if(jvmVersion.startsWith("1.4.") ||
jvmVersion.equals("1.4")) {
+ System.err.println("Plugin "+filename+" appears
to require a later JVM");
+ Logger.error(this, "Plugin "+filename+" appears
to require a later JVM");
+ node.alerts.register(new SimpleUserAlert(true,
"Later JVM required by plugin "+filename,
+ "The plugin "+filename+" seems
to require a later JVM. Please install at least Sun java 1.5, or remove the
plugin.",
+ UserAlert.ERROR));
+ }
}
saveConfig();
}