Revert "Remove dead exists method from AccountManager"
This reverts commit 4ae1b67220881a65fe290aa055ae9e085ad95d9e.
We actually wanted to use this method in OpenIdServiceImpl,
but a typo (or bad completion) caused us to use .equals()
instead of .exists() there.
Change-Id: I4811f5c441aaf95b3d85acbb2eb7f1d122a412db
Signed-off-by: Shawn O. Pearce <sop@google.com>
diff --git a/src/main/java/com/google/gerrit/server/account/AccountManager.java b/src/main/java/com/google/gerrit/server/account/AccountManager.java
index 99cad93..e8b47a5 100644
--- a/src/main/java/com/google/gerrit/server/account/AccountManager.java
+++ b/src/main/java/com/google/gerrit/server/account/AccountManager.java
@@ -50,6 +50,23 @@
}
/**
+ * True if user identified by this external identity string has an account.
+ */
+ public boolean exists(final String externalId) throws AccountException {
+ try {
+ final ReviewDb db = schema.open();
+ try {
+ return db.accountExternalIds().get(
+ new AccountExternalId.Key(externalId)) != null;
+ } finally {
+ db.close();
+ }
+ } catch (OrmException e) {
+ throw new AccountException("Cannot lookup account " + externalId, e);
+ }
+ }
+
+ /**
* Authenticate the user, potentially creating a new account if they are new.
*
* @param who identity of the user, with any details we received about them.
diff --git a/src/main/java/com/google/gerrit/server/openid/OpenIdServiceImpl.java b/src/main/java/com/google/gerrit/server/openid/OpenIdServiceImpl.java
index d5c6bed..f6f841b 100644
--- a/src/main/java/com/google/gerrit/server/openid/OpenIdServiceImpl.java
+++ b/src/main/java/com/google/gerrit/server/openid/OpenIdServiceImpl.java
@@ -165,10 +165,15 @@
//
return true;
- } else {
- // We might already have this account on file. Look for it.
- //
- return accountManager.equals(aReq.getIdentity());
+ }
+
+ // We might already have this account on file. Look for it.
+ //
+ try {
+ return accountManager.exists(aReq.getIdentity());
+ } catch (AccountException e) {
+ log.warn("Cannot determine if user account exists", e);
+ return true;
}
}