@Override public CompletableFuture<String> getUsernameFromToken(AccessToken accessToken) throws InvalidAccessToken { Preconditions.checkNotNull(accessToken); synchronized (tokensExpirationDates) { return CompletableFuture.completedFuture( Optional.ofNullable(tokensExpirationDates.get(accessToken)) .<CompletionException>orElseThrow(() -> new CompletionException(new InvalidAccessToken(accessToken)))); } }