rt/vm/src/main/java/org/apidesign/vm4brwsr/LdrRsrcs.java
branchclosure
changeset 1020 a6bacea2518f
parent 874 2bcbe348dbec
child 1029 b1fe994d4267
     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  }