Skip to content

Commit f5ee4cd

Browse files
committed
- Removed AeadResult.Builder as there was only ever a single OutputStream argument. Because there was not multiple parameters, it didn't make sense to have a builder.
- Suppressed compiler 'unused' checks for Supplier/Factory classes used by `io.jsonwebtoken.security.Suppliers`
1 parent b16d415 commit f5ee4cd

12 files changed

+23
-47
lines changed

api/src/main/java/io/jsonwebtoken/security/AeadResult.java

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -51,24 +51,6 @@ public interface AeadResult extends DigestSupplier, IvSupplier {
5151
*/
5252
AeadResult setIv(byte[] iv);
5353

54-
/**
55-
* A builder for creating new {@link AeadResult} instances.
56-
*
57-
* @since JJWT_RELEASE_VERSION
58-
*/
59-
interface Builder extends io.jsonwebtoken.lang.Builder<AeadResult> {
60-
61-
/**
62-
* Sets the {@code OutputStream} the AeadAlgorithm will use to write the resulting ciphertext during
63-
* encryption or plaintext during decryption.
64-
*
65-
* @param out the {@code OutputStream} the AeadAlgorithm will use to write the resulting ciphertext during
66-
* encryption or plaintext during decryption.
67-
* @return the builder for instance chaining.
68-
*/
69-
Builder out(OutputStream out);
70-
}
71-
7254
/**
7355
* Returns a new {@link AeadResult} with the specified {@link OutputStream} that will be used to write the
7456
* resulting ciphertext during encryption or plaintext during decryption.
@@ -77,8 +59,8 @@ interface Builder extends io.jsonwebtoken.lang.Builder<AeadResult> {
7759
* resulting ciphertext during encryption or plaintext during decryption.
7860
* @since JJWT_RELEASE_VERSION
7961
*/
80-
static AeadResult of(OutputStream out) {
81-
return Suppliers.AEAD_RESULT_BUILDER.get().out(out).build();
62+
static AeadResult with(OutputStream out) {
63+
return Suppliers.AEAD_RESULT_FACTORY.apply(out);
8264
}
8365

8466
}

api/src/main/java/io/jsonwebtoken/security/Suppliers.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import io.jsonwebtoken.lang.Classes;
44

5+
import java.io.OutputStream;
6+
import java.util.function.Function;
57
import java.util.function.Supplier;
68

79
/**
@@ -38,7 +40,6 @@ private Suppliers() { // for coverage
3840
static final Supplier<DecryptAeadRequest.Builder> DECRYPT_AEAD_REQUEST_BUILDER =
3941
Classes.newInstance("io.jsonwebtoken.impl.security.DefaultDecryptAeadRequest$Builder$Supplier");
4042

41-
static final Supplier<AeadResult.Builder> AEAD_RESULT_BUILDER =
42-
Classes.newInstance("io.jsonwebtoken.impl.security.DefaultAeadResult$Builder$Supplier");
43-
43+
static final Function<OutputStream, AeadResult> AEAD_RESULT_FACTORY =
44+
Classes.newInstance("io.jsonwebtoken.impl.security.DefaultAeadResult$Factory");
4445
}

impl/src/main/java/io/jsonwebtoken/impl/DefaultJwtBuilder.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -677,7 +677,7 @@ private String encrypt(final Payload content, final Key key, final Provider keyP
677677
//only expose (mutable) JweHeader functionality to KeyAlgorithm instances, not the full headerBuilder
678678
// (which exposes this JwtBuilder and shouldn't be referenced by KeyAlgorithms):
679679
JweHeader delegate = new DefaultMutableJweHeader(this.headerBuilder);
680-
KeyRequest<Key> keyRequest = KeyRequest.<Key>builder()
680+
KeyRequest<Key> keyRequest = KeyRequest.builder()
681681
.provider(keyProvider).random(this.secureRandom)
682682
.payload(key).header(delegate).encryptionAlgorithm(enc)
683683
.build();
@@ -706,12 +706,12 @@ private String encrypt(final Payload content, final Key key, final Provider keyP
706706

707707
// During encryption, the configured Provider applies to the KeyAlgorithm, not the AeadAlgorithm, mostly
708708
// because all JVMs support the standard AeadAlgorithms (especially with BouncyCastle in the classpath).
709-
// As such, the provider here is intentionally omitted (null):
709+
// As such, the provider here is intentionally omitted when building the AeadRequest:
710710
// TODO: add encProvider(Provider) builder method that applies to this request only?
711711
ByteArrayOutputStream ciphertextOut = new ByteArrayOutputStream(8192);
712712
AeadRequest req = AeadRequest.builder().random(secureRandom) // no .provider call, see message above
713713
.payload(plaintext).key(cek).associatedData(aad).build();
714-
AeadResult res = AeadResult.of(ciphertextOut);
714+
AeadResult res = AeadResult.with(ciphertextOut);
715715
encrypt(req, res);
716716

717717
byte[] iv = Assert.notEmpty(res.getIv(), "Encryption result must have a non-empty initialization vector.");

impl/src/main/java/io/jsonwebtoken/impl/security/DefaultAeadRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public M associatedData(InputStream aad) {
6868
}
6969
}
7070

71-
@SuppressWarnings("unused") // used via reflection in Jwts.ENC
71+
@SuppressWarnings("unused") // instantiated via reflection in io.jsonwebtoken.security.Suppliers
7272
public static class Builder extends AbstractAeadRequestParams<AeadRequest.Builder>
7373
implements AeadRequest.Builder {
7474

impl/src/main/java/io/jsonwebtoken/impl/security/DefaultAeadResult.java

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import io.jsonwebtoken.security.IvSupplier;
2222

2323
import java.io.OutputStream;
24+
import java.util.function.Function;
2425

2526
public class DefaultAeadResult implements AeadResult, DigestSupplier, IvSupplier {
2627

@@ -59,26 +60,11 @@ public byte[] getIv() {
5960
return this.iv;
6061
}
6162

62-
public static class Builder implements AeadResult.Builder {
63-
64-
private OutputStream out;
65-
63+
@SuppressWarnings("unused") // instantiated via reflection in io.jsonwebtoken.security.Suppliers
64+
public static class Factory implements Function<OutputStream, AeadResult> {
6665
@Override
67-
public AeadResult.Builder out(OutputStream out) {
68-
this.out = out;
69-
return this;
70-
}
71-
72-
@Override
73-
public AeadResult build() {
74-
return new DefaultAeadResult(this.out); // constructor validates out != null
75-
}
76-
77-
public static class Supplier implements java.util.function.Supplier<AeadResult.Builder> {
78-
@Override
79-
public AeadResult.Builder get() {
80-
return new Builder();
81-
}
66+
public AeadResult apply(OutputStream out) {
67+
return new DefaultAeadResult(out);
8268
}
8369
}
8470
}

impl/src/main/java/io/jsonwebtoken/impl/security/DefaultDecryptAeadRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public byte[] getDigest() {
3939
return this.TAG;
4040
}
4141

42-
@SuppressWarnings("unused") // used via reflection in Jwts.ENC
42+
@SuppressWarnings("unused") // instantiated via reflection in io.jsonwebtoken.security.Suppliers
4343
public static class Builder extends AbstractAeadRequestParams<DecryptAeadRequest.Builder>
4444
implements DecryptAeadRequest.Builder {
4545

impl/src/main/java/io/jsonwebtoken/impl/security/DefaultDecryptionKeyRequest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ public K getKey() {
4444
return this.decryptionKey;
4545
}
4646

47+
@SuppressWarnings("unused") // instantiated via reflection in io.jsonwebtoken.security.Suppliers
4748
public static class Builder<K extends Key> extends AbstractKeyRequestParams<byte[], DecryptionKeyRequest.Builder<K>>
4849
implements DecryptionKeyRequest.Builder<K> {
4950

impl/src/main/java/io/jsonwebtoken/impl/security/DefaultKeyRequest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ public M header(JweHeader header) {
6464
}
6565
}
6666

67+
@SuppressWarnings("unused") // instantiated via reflection in io.jsonwebtoken.security.Suppliers
6768
public static class Builder<K extends Key> extends AbstractKeyRequestParams<K, KeyRequest.Builder<K>>
6869
implements KeyRequest.Builder<K> {
6970

impl/src/main/java/io/jsonwebtoken/impl/security/DefaultRequest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ public M random(SecureRandom random) {
7272
}
7373
}
7474

75+
@SuppressWarnings("unused") // instantiated via reflection in io.jsonwebtoken.security.Suppliers
7576
public static class Builder<T> extends AbstractRequestParams<T, Request.Builder<T>> implements Request.Builder<T> {
7677

7778
@Override

impl/src/main/java/io/jsonwebtoken/impl/security/DefaultSecureRequest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ public M key(K key) {
4848
}
4949
}
5050

51+
@SuppressWarnings("unused") // instantiated via reflection in io.jsonwebtoken.security.Suppliers
5152
public static class Builder<T, K extends Key> extends AbstractSecureRequestParams<T, K, SecureRequest.Builder<T, K>>
5253
implements SecureRequest.Builder<T, K> {
5354

0 commit comments

Comments
 (0)