On 01/13/2016 07:44 AM, Wang Weijun wrote:
Hi David

On Jan 13, 2016, at 8:08 PM, David M. Lloyd <[email protected]> wrote:

On 01/12/2016 07:02 PM, Wang Weijun wrote:
A new webrev at

http://cr.openjdk.java.net/~weijun/8058778/webrev.09/

A couple of questions/comments...

+    public interface Builder
+            <S extends Certificate,T extends Builder<S,T>> {

What is the point of the "T" self-type variable?  It does not seem to be 
referenced.  Also the type parameters are not documented in the interface JavaDoc, or 
generally anywhere.

If there were a mutator defined here, it could be written as "T setSomething()" 
so that when called in a child interface it can return the child type instead the base 
type. Will add some document.

That said, I haven't applied this trick in X509Certificate.Builder, what if 
there is a 2nd-level child interface? I'll do some experiments.

In my experience, self-type parameters usually end up with trouble. It's easier/safer to just override mutators in sub-interfaces to return the more specific type.

Also in places like this....
[...]
...it's using UOE for unsupported format, which doesn't seem right.

It should be IllegalArgumentException, or a sub-type (although I cannot find 
one).

Also, it seems like you could check "type" up at the top.

I can use Class#isAssignable.


The docs don't seem to specify whether the CSR block is consumed in the event 
of an invalid type Class being passed in.

I just copied the existing spec for generateCertificate(), in fact in some 
places I haven't done s/certificate/certificate request/ yet!

The current behavior is that it will consume one ----BEGIN...END---- block 
(with optional text before the block) or one DER SEQUENCE, or undefined if no 
such data structure are found. However, I am not sure if I need to document 
that as a requirement. Do you want any guarantee?

I think it's probably a good idea to at least document what happens in the event of various errors.

It would be nice if this could be turned into some kind of generalized PEM support some day...

--
- DML

Reply via email to