1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/LdrRsrcs.java Fri Mar 22 14:46:10 2013 +0100
1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/LdrRsrcs.java Thu Apr 25 16:17:48 2013 +0200
1.3 @@ -35,6 +35,43 @@
1.4
1.5 @Override
1.6 public InputStream get(String name) throws IOException {
1.7 + return findSource(name).openStream();
1.8 + }
1.9 +
1.10 + @Override
1.11 + public String getModule(String name) throws IOException {
1.12 + final URL url = findSource(name);
1.13 +
1.14 + if (!"jar".equalsIgnoreCase(url.getProtocol())) {
1.15 + return null;
1.16 + }
1.17 +
1.18 + final String fullPathString = url.getPath();
1.19 + final int sepIndex = fullPathString.indexOf('!');
1.20 + final String jarPathString =
1.21 + (sepIndex != -1) ? fullPathString.substring(0, sepIndex)
1.22 + : fullPathString;
1.23 + if (!jarPathString.endsWith(".jar")) {
1.24 + return null;
1.25 + }
1.26 +
1.27 + String moduleName =
1.28 + jarPathString.substring(
1.29 + jarPathString.lastIndexOf('/') + 1,
1.30 + jarPathString.length() - 4);
1.31 + if (moduleName.endsWith("-SNAPSHOT")) {
1.32 + moduleName = moduleName.substring(
1.33 + 0, moduleName.length() - 9);
1.34 + }
1.35 + final int dashIndex = moduleName.lastIndexOf('-');
1.36 + if (dashIndex != -1) {
1.37 + moduleName = moduleName.substring(0, dashIndex);
1.38 + }
1.39 +
1.40 + return moduleName;
1.41 + }
1.42 +
1.43 + private URL findSource(String name) throws IOException {
1.44 Enumeration<URL> en = loader.getResources(name);
1.45 URL u = null;
1.46 while (en.hasMoreElements()) {
1.47 @@ -43,6 +80,6 @@
1.48 if (u == null) {
1.49 throw new IOException("Can't find " + name);
1.50 }
1.51 - return u.openStream();
1.52 + return u;
1.53 }
1.54 }