class AuditWhitelistManager {

    @VisibleForTesting
    void dispatchOperation(WhitelistOperation whitelistOperation, AuthenticatedUser performer, RoleResource role, Map.Entry<String, String> optionEntry)
    {
        if (whitelistOperation == WhitelistOperation.GRANT)
        {
            addToWhitelist(performer, role, optionEntry);
        }
        else if (whitelistOperation == WhitelistOperation.REVOKE)
        {
            removeFromWhitelist(performer, role, optionEntry);
        }
        else if (whitelistOperation == WhitelistOperation.DROP_LEGACY)
        {
            dropRoleOption(performer, role, optionEntry);
        }
        else
        {
            throw new InvalidRequestException(String.format("Illegal whitelist option [%s]", whitelistOperation));
        }
    }

      AuditWhitelistManager();
    @VisibleForTesting  AuditWhitelistManager(WhitelistDataAccess whitelistDataAccess);

}