RFR: JDK-8284688 Minor cleanup could be done in java.security.jgss [v4]

Mark Powers duke at openjdk.java.net
Thu May 5 20:28:57 UTC 2022


On Tue, 3 May 2022 01:19:20 GMT, Weijun Wang <weijun at openjdk.org> wrote:

>> Mark Powers has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 11 commits:
>> 
>>  - sixth iteration
>>  - Merge
>>  - fifth iteration
>>  - Merge
>>  - fourth iteration
>>  - third iteration
>>  - Merge
>>  - Merge
>>  - Merge
>>  - second iteration
>>  - ... and 1 more: https://git.openjdk.java.net/jdk/compare/64225e19...5ce46ffb
>
> src/java.security.jgss/share/classes/org/ietf/jgss/GSSException.java line 333:
> 
>> 331:     public String getMajorString() {
>> 332: 
>> 333:         return Objects.requireNonNullElseGet(majorString, () -> messages[major - 1]);
> 
> Isn't this too fancy? Inside JDK this method is only used once in `java.time`. The method name has a `requireNonNull` inside so my understanding is that the object is mostly not null and the else case is just a fallback (maybe in an exceptional case?) At least in this class, most `GSSExceptions` are created without a major string.

It's been around since JDK 9. I like the functionality, but I hate the name. It returns the first argument if non-null, otherwise it runs the lambda expression. I'll keep the change if you don't mind - one less thing for IntelliJ to nag about.

Thanks for taking time to review this!
I've accepted two of your suggestions and will be pushing an update shortly.

> src/java.security.jgss/share/classes/sun/security/jgss/GSSHeader.java line 267:
> 
>> 265:                 throw new IOException("DerInputStream.getLength(): lengthTag="
>> 266:                                       + tmp + ", "
>> 267:                                       + "too big.");
> 
> Combine the 2 lines above.

Fixed.

> src/java.security.jgss/share/classes/sun/security/jgss/krb5/SubjectComber.java line 154:
> 
>> 152:                     while (iterator.hasNext()) {
>> 153:                         Object obj = iterator.next();
>> 154:                         if (!(obj instanceof @SuppressWarnings("unchecked")KerberosTicket ticket)) {
> 
> Does not look fluent to me. Maybe add a new line after the annotation?

Added a new line.

> src/java.security.jgss/share/classes/sun/security/jgss/spnego/SpNegoContext.java line 876:
> 
>> 874: 
>> 875:         // pass token
>> 876:         tok = Objects.requireNonNullElseGet(token, () -> new byte[0]);
> 
> Is this how `requireNonNullElseGet` is meant to be used?

I think so - return the token, or if the token is null, return an empty byte array.

-------------

PR: https://git.openjdk.java.net/jdk/pull/7746



More information about the security-dev mailing list