1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/LdrRsrcs.java Thu Apr 25 16:17:48 2013 +0200
1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/LdrRsrcs.java Fri Apr 26 18:48:34 2013 +0200
1.3 @@ -27,21 +27,44 @@
1.4 * @author Jaroslav Tulach <jtulach@netbeans.org>
1.5 */
1.6 final class LdrRsrcs implements Bck2Brwsr.Resources {
1.7 + private final String module;
1.8 private final ClassLoader loader;
1.9
1.10 LdrRsrcs(ClassLoader loader) {
1.11 + this(null, loader);
1.12 + }
1.13 +
1.14 + LdrRsrcs(String module, ClassLoader loader) {
1.15 + this.module = module;
1.16 this.loader = loader;
1.17 }
1.18
1.19 @Override
1.20 public InputStream get(String name) throws IOException {
1.21 - return findSource(name).openStream();
1.22 + final URL url = findSource(name);
1.23 + if (url == null) {
1.24 + return null;
1.25 + }
1.26 + if (module != null) {
1.27 + final String resourceModule = getModule(url);
1.28 + if ((resourceModule != null) && !module.equals(resourceModule)) {
1.29 + return null;
1.30 + }
1.31 + }
1.32 +
1.33 + return url.openStream();
1.34 }
1.35
1.36 - @Override
1.37 - public String getModule(String name) throws IOException {
1.38 - final URL url = findSource(name);
1.39 + private URL findSource(String name) throws IOException {
1.40 + Enumeration<URL> en = loader.getResources(name);
1.41 + URL u = null;
1.42 + while (en.hasMoreElements()) {
1.43 + u = en.nextElement();
1.44 + }
1.45 + return u;
1.46 + }
1.47
1.48 + private static String getModule(URL url) throws IOException {
1.49 if (!"jar".equalsIgnoreCase(url.getProtocol())) {
1.50 return null;
1.51 }
1.52 @@ -70,16 +93,4 @@
1.53
1.54 return moduleName;
1.55 }
1.56 -
1.57 - private URL findSource(String name) throws IOException {
1.58 - Enumeration<URL> en = loader.getResources(name);
1.59 - URL u = null;
1.60 - while (en.hasMoreElements()) {
1.61 - u = en.nextElement();
1.62 - }
1.63 - if (u == null) {
1.64 - throw new IOException("Can't find " + name);
1.65 - }
1.66 - return u;
1.67 - }
1.68 }