diff --git a/src/main/java/com/twilio/auth_strategy/BasicAuthStrategy.java b/src/main/java/com/twilio/auth_strategy/BasicAuthStrategy.java index 3ea088b75..569811bfe 100644 --- a/src/main/java/com/twilio/auth_strategy/BasicAuthStrategy.java +++ b/src/main/java/com/twilio/auth_strategy/BasicAuthStrategy.java @@ -4,6 +4,7 @@ import java.nio.charset.StandardCharsets; import java.util.Base64; +import java.util.Objects; public class BasicAuthStrategy extends AuthStrategy { private String username; @@ -26,4 +27,18 @@ public String getAuthString() { public boolean requiresAuthentication() { return true; } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + BasicAuthStrategy that = (BasicAuthStrategy) o; + return Objects.equals(username, that.username) && + Objects.equals(password, that.password); + } + + @Override + public int hashCode() { + return Objects.hash(username, password); + } } diff --git a/src/main/java/com/twilio/auth_strategy/TokenAuthStrategy.java b/src/main/java/com/twilio/auth_strategy/TokenAuthStrategy.java index 70df111f2..d6a9146cd 100644 --- a/src/main/java/com/twilio/auth_strategy/TokenAuthStrategy.java +++ b/src/main/java/com/twilio/auth_strategy/TokenAuthStrategy.java @@ -8,6 +8,7 @@ import org.slf4j.LoggerFactory; import java.util.Date; +import java.util.Objects; public class TokenAuthStrategy extends AuthStrategy { private String token; @@ -35,13 +36,25 @@ public void fetchToken() { synchronized (TokenAuthStrategy.class){ if (this.token == null || this.token.isEmpty() || isTokenExpired(this.token)) { logger.info("Fetching new token for Apis"); - System.out.println("Fetching new token for Apis"); this.token = tokenManager.fetchAccessToken(); } } } } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + TokenAuthStrategy that = (TokenAuthStrategy) o; + return Objects.equals(token, that.token) && + Objects.equals(tokenManager, that.tokenManager); + } + @Override + public int hashCode() { + return Objects.hash(token, tokenManager); + } + public boolean isTokenExpired(final String token) { DecodedJWT jwt = JWT.decode(token); Date expiresAt = jwt.getExpiresAt(); diff --git a/src/main/java/com/twilio/http/TwilioRestClient.java b/src/main/java/com/twilio/http/TwilioRestClient.java index a5acb7700..612e9f61e 100644 --- a/src/main/java/com/twilio/http/TwilioRestClient.java +++ b/src/main/java/com/twilio/http/TwilioRestClient.java @@ -88,8 +88,6 @@ public Response request(final Request request) { if(response != null) { int statusCode = response.getStatusCode(); if (statusCode == HTTP_STATUS_CODE_UNAUTHORIZED && authStrategy != null && EnumConstants.AuthType.TOKEN.equals(authStrategy.getAuthType())) { - ((TokenAuthStrategy)authStrategy).fetchToken(); - request.setAuth(authStrategy); // Retry only once response = httpClient.reliableRequest(request); }