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();
        }


Reply via email to