launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/fximpl/JVMBridge.java
changeset 1282 8d29792a09c6
parent 1233 43fba26ba0c0
child 1418 b8ff900a542d
     1.1 --- a/launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/fximpl/JVMBridge.java	Wed Jun 26 20:27:06 2013 +0200
     1.2 +++ b/launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/fximpl/JVMBridge.java	Thu Sep 12 14:15:47 2013 +0200
     1.3 @@ -39,6 +39,7 @@
     1.4  public final class JVMBridge {
     1.5      private final WebEngine engine;
     1.6      private final ClassLoader cl;
     1.7 +    private final WebPresenter presenter;
     1.8      
     1.9      private static ClassLoader[] ldrs;
    1.10      private static ChangeListener<Void> onBck2BrwsrLoad;
    1.11 @@ -46,8 +47,8 @@
    1.12      JVMBridge(WebEngine eng) {
    1.13          this.engine = eng;
    1.14          final ClassLoader p = JVMBridge.class.getClassLoader().getParent();
    1.15 -        WebClassLoader wcl = new WebClassLoader();
    1.16 -        this.cl = FnUtils.newLoader(wcl, wcl, p);
    1.17 +        this.presenter = new WebPresenter();
    1.18 +        this.cl = FnUtils.newLoader(presenter, presenter, p);
    1.19      }
    1.20          
    1.21      public static void registerClassLoaders(ClassLoader[] loaders) {
    1.22 @@ -69,10 +70,11 @@
    1.23      }
    1.24      
    1.25      public Class<?> loadClass(String name) throws ClassNotFoundException {
    1.26 +        FnUtils.currentPresenter(presenter);
    1.27          return Class.forName(name, true, cl);
    1.28      }
    1.29      
    1.30 -    private final class WebClassLoader implements FindResources, Fn.Presenter {
    1.31 +    private final class WebPresenter implements FindResources, Fn.Presenter {
    1.32          @Override
    1.33          public void findResources(String name, Collection<? super URL> results, boolean oneIsEnough) {
    1.34              if (ldrs != null) for (ClassLoader l : ldrs) {
    1.35 @@ -99,7 +101,7 @@
    1.36              sb.append("})()");
    1.37              
    1.38              JSObject x = (JSObject) engine.executeScript(sb.toString());
    1.39 -            return new JSFn(x);
    1.40 +            return new JSFn(this, x);
    1.41          }
    1.42  
    1.43          @Override
    1.44 @@ -125,10 +127,11 @@
    1.45      private static final class JSFn extends Fn {
    1.46          private final JSObject fn;
    1.47  
    1.48 -        public JSFn(JSObject fn) {
    1.49 +        private JSFn(WebPresenter cl, JSObject fn) {
    1.50 +            super(cl);
    1.51              this.fn = fn;
    1.52          }
    1.53 -        
    1.54 +
    1.55          @Override
    1.56          public Object invoke(Object thiz, Object... args) throws Exception {
    1.57              try {