@Override public AccessToken getAccessToken() throws IOException { if (!isAuthEnabled()) { return null; } if (accessToken == null || isTokenExpired()) { long requestTime = System.currentTimeMillis(); accessToken = fetchAccessToken(); expirationTime = requestTime + TimeUnit.SECONDS.toMillis(accessToken.getExpiresIn()) - SPARE_TIME_IN_MILLIS; LOG.debug("Received the access token successfully. Expiration date is {}.", new Date(expirationTime)); } return accessToken; }