Interface AccountCache

  • All Known Implementing Classes:
    AccountCacheImpl

    public interface AccountCache
    Caches important (but small) account state to avoid database hits.
    • Method Detail

      • get

        Optional<AccountState> get​(Account.Id accountId)
        Returns an AccountState instance for the given account ID. If not cached yet the account is loaded. Returns Optional.empty() if the account is missing.
        Parameters:
        accountId - ID of the account that should be retrieved
        Returns:
        AccountState instance for the given account ID, if no account with this ID exists Optional.empty() is returned
      • get

        Map<Account.Id,​AccountState> get​(Set<Account.Id> accountIds)
        Returns a Map of Account.Id to AccountState for the given account IDs. If not cached yet the accounts are loaded. If an account can't be loaded (e.g. because it is missing), the entry will be missing from the result.

        Loads accounts in parallel if applicable.

        Parameters:
        accountIds - IDs of the account that should be retrieved
        Returns:
        Map of Account.Id to AccountState instances for the given account IDs, if an account can't be loaded (e.g. because it is missing), the entry will be missing from the result
      • getEvenIfMissing

        AccountState getEvenIfMissing​(Account.Id accountId)
        Returns an AccountState instance for the given account ID. If not cached yet the account is loaded. Returns an empty AccountState instance to represent a missing account.

        This method should only be used in exceptional cases where it is required to get an account state even if the account is missing. Callers should leave a comment with the method invocation explaining why this method is used. Most callers of AccountCache should use get(Account.Id) instead and handle the missing account case explicitly.

        Parameters:
        accountId - ID of the account that should be retrieved
        Returns:
        AccountState instance for the given account ID, if no account with this ID exists an empty AccountState instance is returned to represent the missing account
      • getByUsername

        Optional<AccountState> getByUsername​(String username)
        Returns an AccountState instance for the given username.

        This method first loads the external ID for the username and then uses the account ID of the external ID to lookup the account from the cache.

        Parameters:
        username - username of the account that should be retrieved
        Returns:
        AccountState instance for the given username, if no account with this username exists or if loading the external ID fails Optional.empty() is returned