code: @Override
      protected final Principal getPrincipal(final Credentials credentials) {
          try {
              Optional<Principal> principalOptional = cache.get(credentials.getApiKey(), new Callable<Optional<Principal>>() {
                  public Optional<Principal> call() throws Exception {
                      return Optional.fromNullable(loadPrincipal(credentials));
                  }
              });
              return principalOptional.orNull();
          } catch (ExecutionException e) {
              LOG.warn("Exception when loading the cache for credentials with API key " + credentials.getApiKey());
              return null;
          }
      }
docs: If the Principal for this Credentials is already cached, return it.  Otherwise call {@link #loadPrincipal} and cache the results.