> On Sep 13, 2016, at 5:52 PM, Steve Drach <[email protected]> wrote:
> 
> The latest web revs.  Answers to questions in-line below:
> 
> http://cr.openjdk.java.net/~sdrach/8153654/webrev.10/
> 
> http://cr.openjdk.java.net/~sdrach/8153654/webrev.jdk/

This looks pretty good. My main comment is in VersionHelper (see below).

ClassFileReader.java

 337                     String[] msg = {"err.multirelease.option.exists", 
f.getName()};
 389                             String[] msg = 
{"err.multirelease.jar.malformed”,
 390                                     jarfile.getName(), rn
 391                             };

`msg` is not used.  These lines can be removed.

line 81-95: this wants to add to VersionHelper if it’s a versioned entry.  I 
suggest to move this to VersionHelper, something like this and replace the add 
method.

public static void addIfVersionedEntry(Path jarfile, String realEntryName, 
String className) {
    if (realEntryName.startsWith(META_INF_VERSIONS)) {
        int len = META_INF_VERSIONS.length();
        int n = realEntryName.indexOf('/', len);
        if (n > 0) {
            String version = realEntryName.substring(len, n);
            assert (Integer.parseInt(version) > 8);

            String v = versionMap.get(className);
            if (v != null && !v.equals(version)) {
                // name associated with a different ClassFile
                throw new 
MultiReleaseException("err.multirelease.version.associated", className,
                    v, version);
            }
            versionMap.put(className, version);
        } else {
            throw new MultiReleaseException("err.multirelease.jar.malformed",
                jarfile.toString(), realEntryName);
        }
    }
}

I prefer to call String::length rather than hardcoding the length.  I don’t see 
why VersionHelper caches ClassFile.  I think it can cache a map from class name 
to the version for now.  We may have to handle duplicated classes in more than 
one modular jar (it’s not exported and should be allowed).  We could file a 
separate issue to look into later.

This needs a CCC for the new --multi-release option.

Mandy

Reply via email to