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;
     }
   }