boot/src/main/java/org/netbeans/html/boot/impl/FnContext.java
changeset 884 af690d50d7d6
parent 838 bdc3d696dd4a
child 895 5ef42b69c1c6
     1.1 --- a/boot/src/main/java/org/netbeans/html/boot/impl/FnContext.java	Tue Aug 26 18:13:30 2014 +0200
     1.2 +++ b/boot/src/main/java/org/netbeans/html/boot/impl/FnContext.java	Sat Nov 29 22:25:40 2014 +0100
     1.3 @@ -45,8 +45,10 @@
     1.4  import java.io.Closeable;
     1.5  import java.io.Flushable;
     1.6  import java.io.IOException;
     1.7 +import java.util.logging.Level;
     1.8  import java.util.logging.Logger;
     1.9  import org.netbeans.html.boot.spi.Fn;
    1.10 +import org.objectweb.asm.Opcodes;
    1.11  
    1.12  /**
    1.13   *
    1.14 @@ -60,6 +62,33 @@
    1.15          DUMMY.prev = DUMMY;
    1.16      }
    1.17  
    1.18 +    public static boolean isJavaScriptCapable(ClassLoader l) {
    1.19 +        if (l instanceof JsClassLoader) {
    1.20 +            return true;
    1.21 +        }
    1.22 +        if (l.getResource("META-INF/net.java.html.js.classes") != null) {
    1.23 +            return false;
    1.24 +        }
    1.25 +        return true;
    1.26 +    }
    1.27 +
    1.28 +    public static boolean isAsmPresent() {
    1.29 +        Throwable t;
    1.30 +        try {
    1.31 +            Class.forName(Opcodes.class.getName());
    1.32 +            return true;
    1.33 +        } catch (LinkageError ex) {
    1.34 +            t = ex;
    1.35 +        } catch (ClassNotFoundException ex) {
    1.36 +            t = ex;
    1.37 +        }
    1.38 +        LOG.log(Level.SEVERE, "When using @JavaScriptBody methods, one needs to either:");
    1.39 +        LOG.log(Level.SEVERE, " - include asm-5.0.jar on runtime classpath");
    1.40 +        LOG.log(Level.SEVERE, " - post process classes, see http://bits.netbeans.org/html+java/dev/net/java/html/js/package-summary.html#post-process");
    1.41 +        LOG.log(Level.SEVERE, "Cannot initialize asm-5.0.jar!", t);
    1.42 +        return false;
    1.43 +    }
    1.44 +
    1.45      private Object prev;
    1.46      private final Fn.Presenter current;
    1.47      private FnContext(Fn.Presenter prevP, Fn.Presenter newP) {