> On 7 Jul 2016, at 22:32, Steve Drach <steve.dr...@oracle.com> wrote:
> 
> Hi,
> 
> Please review the following:
> 
> webrev: http://cr.openjdk.java.net/~sdrach/8158295/webrev.01/ 
> <http://cr.openjdk.java.net/~sdrach/8158295/webrev.01/>
> issue: https://bugs.openjdk.java.net/browse/JDK-8158295 
> <https://bugs.openjdk.java.net/browse/JDK-8158295>
> 
> This changeset adds a multi-release jar validator to jar tool.  After the jar 
> tool builds a multi-release jar, the potential resultant jar file is passed 
> to the validator to assure that the jar file meets the minimal standards of a 
> multi-release jar, in particular that versioned classes have the same api as 
> base classes they override.  There are other checks, for example warning if 
> two classes are identical.  If the jar file is invalid, it is not kept, so 
> —create will not produce a jar file and —update will keep the input jar file.
> 

jar/Main.java

 284             // This code would be repeated in the create and update 
sections.
 285             // In order not to do that, it's here as a consumer.
 286             Consumer<File> validateAndClose = tmpfile -> {
Why does it need to be Consumer rather than just a method?

Then i think you don’t need to rethow, but you can still keep the try block and 
use finally for File.deleteIfExist since it will not complain for the case 
where you move.


 558             int i1 = s1.indexOf('/', n);
 559             int i2 = s1.indexOf('/', n);
 560             if (i1 == -1) throw new NumberFormatException(s1);
 561             if (i2 == -2) throw new NumberFormatException(s2);

I think you are trying to reject entries directly under the versioned area so 
it’s not about numbers (same in the validator, so there is some redundancy?).


 588             AtomicBoolean validHolder = new AtomicBoolean();
 589             validHolder.set(valid);

Pass valid to the constructor


Validator/FingerPrint.java

It would be useful to have some comments on what is checked in terms of API 
compatibility. e.g. describe what FingerPrint collects and how Validator uses 
it.


FingerPrint.java

 205         private final Map<String,Field> fields = new HashMap<>();
 206         private final Map<String,Method> methods = new HashMap<>();

Not sure you need to use a Map, why not use a Set?

Change Method to be literally a representation of a single method rather than a 
consolidation that is lossy for the set of exceptions.

Paul.

Reply via email to