diff options
author | Morten Tokle <morten.tokle@gmail.com> | 2020-11-10 11:58:36 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-10 11:58:36 +0100 |
commit | 2f85ccf289e957a0d798ae61994ffd3f21bc1e11 (patch) | |
tree | f5b79a7e9cd374759f5d35d2a5c00d0371746963 /vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts | |
parent | 4f05c4affb9290018ca00abe7ce21ecc365f1135 (diff) |
Revert "Revert "Report metrics on athenz client errors""
Diffstat (limited to 'vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts')
-rw-r--r-- | vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/DefaultZtsClient.java | 58 |
1 files changed, 39 insertions, 19 deletions
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/DefaultZtsClient.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/DefaultZtsClient.java index c05213c8008..28119dc1f5a 100644 --- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/DefaultZtsClient.java +++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/DefaultZtsClient.java @@ -37,6 +37,7 @@ import java.security.KeyPair; import java.security.cert.X509Certificate; import java.time.Duration; import java.util.List; +import java.util.Objects; import java.util.Optional; import java.util.function.Supplier; import java.util.stream.Collectors; @@ -52,25 +53,8 @@ import static java.util.stream.Collectors.toList; public class DefaultZtsClient extends ClientBase implements ZtsClient { private final URI ztsUrl; - - public DefaultZtsClient(URI ztsUrl, SSLContext sslContext) { - this(ztsUrl, sslContext, null); - } - - public DefaultZtsClient(URI ztsUrl, SSLContext sslContext, HostnameVerifier hostnameVerifier) { - this(ztsUrl, () -> sslContext, hostnameVerifier); - } - - public DefaultZtsClient(URI ztsUrl, ServiceIdentityProvider identityProvider) { - this(ztsUrl, identityProvider::getIdentitySslContext, null); - } - - public DefaultZtsClient(URI ztsUrl, ServiceIdentityProvider identityProvider, HostnameVerifier hostnameVerifier) { - this(ztsUrl, identityProvider::getIdentitySslContext, hostnameVerifier); - } - - private DefaultZtsClient(URI ztsUrl, Supplier<SSLContext> sslContextSupplier, HostnameVerifier hostnameVerifier) { - super("vespa-zts-client", sslContextSupplier, ZtsClientException::new, hostnameVerifier); + protected DefaultZtsClient(URI ztsUrl, Supplier<SSLContext> sslContextSupplier, HostnameVerifier hostnameVerifier, ErrorHandler errorHandler) { + super("vespa-zts-client", sslContextSupplier, ZtsClientException::new, hostnameVerifier, errorHandler); this.ztsUrl = addTrailingSlash(ztsUrl); } @@ -239,5 +223,41 @@ public class DefaultZtsClient extends ClientBase implements ZtsClient { else return URI.create(ztsUrl.toString() + '/'); } + public static class Builder { + private URI ztsUrl; + private ClientBase.ErrorHandler errorHandler = ErrorHandler.empty(); + private HostnameVerifier hostnameVerifier = null; + private Supplier<SSLContext> sslContextSupplier = null; + + public Builder(URI ztsUrl) { + this.ztsUrl = ztsUrl; + } + public Builder withErrorHandler(ClientBase.ErrorHandler errorHandler) { + this.errorHandler = errorHandler; + return this; + } + + public Builder withHostnameVerifier(HostnameVerifier hostnameVerifier) { + this.hostnameVerifier = hostnameVerifier; + return this; + } + + public Builder withSslContext(SSLContext sslContext) { + this.sslContextSupplier = () -> sslContext; + return this; + } + + public Builder withIdentityProvider(ServiceIdentityProvider identityProvider) { + this.sslContextSupplier = identityProvider::getIdentitySslContext; + return this; + } + + public DefaultZtsClient build() { + if (Objects.isNull(sslContextSupplier)) { + throw new IllegalArgumentException("No ssl context or identity provider available to set up zts client"); + } + return new DefaultZtsClient(ztsUrl, sslContextSupplier, hostnameVerifier, errorHandler); + } + } } |