launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/BaseHTTPLauncher.java
changeset 1916 a9d37af23a00
parent 1908 4f4554f69892
child 1921 aed8434561fc
     1.1 --- a/launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/BaseHTTPLauncher.java	Fri Mar 25 11:12:16 2016 +0100
     1.2 +++ b/launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/BaseHTTPLauncher.java	Mon Mar 28 06:34:38 2016 +0200
     1.3 @@ -37,6 +37,7 @@
     1.4  import java.util.ArrayList;
     1.5  import java.util.Arrays;
     1.6  import java.util.Enumeration;
     1.7 +import java.util.HashMap;
     1.8  import java.util.HashSet;
     1.9  import java.util.LinkedHashSet;
    1.10  import java.util.List;
    1.11 @@ -649,6 +650,7 @@
    1.12  
    1.13          Object compileJar(URL jarURL) throws IOException {
    1.14              List<String[]> libraries = new ArrayList<String[]>();
    1.15 +            Map<String,Object[]> osgiJars = new HashMap<String, Object[]>();
    1.16              for (ClassLoader loader : loaders) {
    1.17                  Enumeration<URL> en = loader.getResources("META-INF/MANIFEST.MF");
    1.18                  while (en.hasMoreElements()) {
    1.19 @@ -662,13 +664,26 @@
    1.20                          final String g = attr.getValue("Bck2BrwsrGroupId");
    1.21                          final String v = attr.getValue("Bck2BrwsrVersion");
    1.22                          final String d = attr.getValue("Bck2BrwsrDebug");
    1.23 +                        final String n = attr.getValue("Bck2BrwsrName");
    1.24  
    1.25                          if (g != null && a != null && v != null && "true".equals(d)) {
    1.26                              libraries.add(new String[] {
    1.27 -                                a, g, v, key
    1.28 +                                a, g, v, key, n
    1.29                              });
    1.30                          }
    1.31                      }
    1.32 +                    final Attributes main = mf.getMainAttributes();
    1.33 +                    String symbol = main.getValue("Bundle-SymbolicName");
    1.34 +                    String version;
    1.35 +                    if (symbol == null) {
    1.36 +                        symbol = main.getValue("OpenIDE-Module-Name");
    1.37 +                        version = main.getValue("OpenIDE-Module-SpecificationVersion");
    1.38 +                    } else {
    1.39 +                        version = main.getValue("Bundle-Version");
    1.40 +                    }
    1.41 +                    if (symbol != null) {
    1.42 +                        osgiJars.put(symbol, new Object[] { e, version });
    1.43 +                    }
    1.44                  }
    1.45              }
    1.46              URL precompiled = null;
    1.47 @@ -693,6 +708,16 @@
    1.48                      }
    1.49                  }
    1.50              }
    1.51 +            if (precompiled == null) {
    1.52 +                for (ClassLoader loader : loaders) {
    1.53 +                    for (String[] lib : libraries) {
    1.54 +                        Object[] urlVersion = osgiJars.get(lib[4]);
    1.55 +                        if (urlVersion != null && urlVersion[1].toString().startsWith(lib[2])) {
    1.56 +                            precompiled = loader.getResource(lib[3]);
    1.57 +                        }
    1.58 +                    }
    1.59 +                }
    1.60 +            }
    1.61              Object ret = BaseHTTPLauncher.this.compileJar(jarURL, precompiled);
    1.62              ignore.add(jarURL);
    1.63              return ret;