Merge "When resolving an account by ID check that it actually exists"

This commit is contained in:
Shawn Pearce
2013-03-13 03:52:07 +00:00
committed by Gerrit Code Review

View File

@@ -71,11 +71,21 @@ public class AccountResolver {
public Set<Account.Id> findAll(String nameOrEmail) throws OrmException {
Matcher m = Pattern.compile("^.* \\(([1-9][0-9]*)\\)$").matcher(nameOrEmail);
if (m.matches()) {
return Collections.singleton(Account.Id.parse(m.group(1)));
Account.Id id = Account.Id.parse(m.group(1));
if (exists(id)) {
return Collections.singleton(id);
} else {
return Collections.emptySet();
}
}
if (nameOrEmail.matches("^[1-9][0-9]*$")) {
return Collections.singleton(Account.Id.parse(nameOrEmail));
Account.Id id = Account.Id.parse(nameOrEmail);
if (exists(id)) {
return Collections.singleton(id);
} else {
return Collections.emptySet();
}
}
if (nameOrEmail.matches(Account.USER_NAME_PATTERN)) {
@@ -88,6 +98,10 @@ public class AccountResolver {
return findAllByNameOrEmail(nameOrEmail);
}
private boolean exists(Account.Id id) throws OrmException {
return schema.get().accounts().get(id) != null;
}
/**
* Locate exactly one account matching the name or name/email string.
*