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;