Browse Source

Use SingletonSupplier

Issue gh-9991
pull/12976/head
Josh Cummings 3 years ago
parent
commit
88540aa52f
No known key found for this signature in database
GPG Key ID: A306A51F43B8E5A5
  1. 29
      oauth2/oauth2-jose/src/main/java/org/springframework/security/oauth2/jwt/SupplierJwtDecoder.java

29
oauth2/oauth2-jose/src/main/java/org/springframework/security/oauth2/jwt/SupplierJwtDecoder.java

@ -18,6 +18,8 @@ package org.springframework.security.oauth2.jwt; @@ -18,6 +18,8 @@ package org.springframework.security.oauth2.jwt;
import java.util.function.Supplier;
import org.springframework.util.function.SingletonSupplier;
/**
* A {@link JwtDecoder} that lazily initializes another {@link JwtDecoder}
*
@ -26,12 +28,17 @@ import java.util.function.Supplier; @@ -26,12 +28,17 @@ import java.util.function.Supplier;
*/
public final class SupplierJwtDecoder implements JwtDecoder {
private final Supplier<JwtDecoder> jwtDecoderSupplier;
private volatile JwtDecoder delegate;
private final Supplier<JwtDecoder> delegate;
public SupplierJwtDecoder(Supplier<JwtDecoder> jwtDecoderSupplier) {
this.jwtDecoderSupplier = jwtDecoderSupplier;
this.delegate = SingletonSupplier.of(() -> {
try {
return jwtDecoderSupplier.get();
}
catch (Exception ex) {
throw wrapException(ex);
}
});
}
/**
@ -39,19 +46,7 @@ public final class SupplierJwtDecoder implements JwtDecoder { @@ -39,19 +46,7 @@ public final class SupplierJwtDecoder implements JwtDecoder {
*/
@Override
public Jwt decode(String token) throws JwtException {
if (this.delegate == null) {
synchronized (this.jwtDecoderSupplier) {
if (this.delegate == null) {
try {
this.delegate = this.jwtDecoderSupplier.get();
}
catch (Exception ex) {
throw wrapException(ex);
}
}
}
}
return this.delegate.decode(token);
return this.delegate.get().decode(token);
}
private JwtDecoderInitializationException wrapException(Exception ex) {

Loading…
Cancel
Save