launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/fximpl/JVMBridge.java
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Sun, 28 Apr 2013 17:42:49 +0200
branchmodel
changeset 1041 f18b7262fe91
child 1174 f78cdceed17b
permissions -rw-r--r--
FX launcher can start tests
     1 /**
     2  * Back 2 Browser Bytecode Translator
     3  * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
     4  *
     5  * This program is free software: you can redistribute it and/or modify
     6  * it under the terms of the GNU General Public License as published by
     7  * the Free Software Foundation, version 2 of the License.
     8  *
     9  * This program is distributed in the hope that it will be useful,
    10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    12  * GNU General Public License for more details.
    13  *
    14  * You should have received a copy of the GNU General Public License
    15  * along with this program. Look for COPYING file in the top folder.
    16  * If not, see http://opensource.org/licenses/GPL-2.0.
    17  */
    18 package org.apidesign.bck2brwsr.launcher.fximpl;
    19 
    20 import java.util.TooManyListenersException;
    21 import javafx.beans.value.ChangeListener;
    22 
    23 /**
    24  *
    25  * @author Jaroslav Tulach <jtulach@netbeans.org>
    26  */
    27 public final class JVMBridge {
    28     private static ClassLoader[] ldrs;
    29     private static ChangeListener<Void> onBck2BrwsrLoad;
    30         
    31     public static void registerClassLoaders(ClassLoader[] loaders) {
    32         ldrs = loaders.clone();
    33     }
    34     
    35     public static void addBck2BrwsrLoad(ChangeListener<Void> l) throws TooManyListenersException {
    36         if (onBck2BrwsrLoad != null) {
    37             throw new TooManyListenersException();
    38         }
    39         onBck2BrwsrLoad = l;
    40     }
    41 
    42     public static void onBck2BrwsrLoad() {
    43         ChangeListener<Void> l = onBck2BrwsrLoad;
    44         if (l != null) {
    45             l.changed(null, null, null);
    46         }
    47     }
    48     
    49     public Class<?> loadClass(String name) throws ClassNotFoundException {
    50         System.err.println("trying to load " + name);
    51         ClassNotFoundException ex = null;
    52         if (ldrs != null) for (ClassLoader l : ldrs) {
    53             try {
    54                 return Class.forName(name, true, l);
    55             } catch (ClassNotFoundException ex2) {
    56                 ex = ex2;
    57             }
    58         }
    59         if (ex == null) {
    60             ex = new ClassNotFoundException("No loaders");
    61         }
    62         throw ex;
    63     }
    64 }