diff --git a/gerrit-acceptance-framework/src/test/java/com/google/gerrit/acceptance/InProcessProtocol.java b/gerrit-acceptance-framework/src/test/java/com/google/gerrit/acceptance/InProcessProtocol.java index a7ad5603b8..c16eed7b1a 100644 --- a/gerrit-acceptance-framework/src/test/java/com/google/gerrit/acceptance/InProcessProtocol.java +++ b/gerrit-acceptance-framework/src/test/java/com/google/gerrit/acceptance/InProcessProtocol.java @@ -326,8 +326,7 @@ class InProcessProtocol extends TestProtocol { throw new ServiceNotAuthorizedException(); } - IdentifiedUser user = (IdentifiedUser) ctl.getUser(); - rp.setRefLogIdent(user.newRefLogIdent()); + rp.setRefLogIdent(ctl.getUser().asIdentifiedUser().newRefLogIdent()); rp.setTimeout(config.getTimeout()); rp.setMaxObjectSizeLimit(config.getMaxObjectSizeLimit()); diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/AccountIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/AccountIT.java index 555ecb1adf..45e5c22569 100644 --- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/AccountIT.java +++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/AccountIT.java @@ -41,7 +41,6 @@ import com.google.gerrit.gpg.testutil.TestKey; import com.google.gerrit.gpg.testutil.TestKeys; import com.google.gerrit.reviewdb.client.Account; import com.google.gerrit.reviewdb.client.AccountExternalId; -import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.config.AllUsersName; import com.google.gerrit.testutil.ConfigSuite; import com.google.inject.Inject; @@ -375,8 +374,7 @@ public class AccountIT extends AbstractDaemonTest { } // Check raw external IDs. - Account.Id currAccountId = - ((IdentifiedUser) atrScope.get().getUser()).getAccountId(); + Account.Id currAccountId = atrScope.get().getUser().getAccountId(); assertThat( GpgKeys.getGpgExtIds(db, currAccountId) .transform(new Function() { diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/GetUserFilter.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/GetUserFilter.java index 94b8f2925c..019efb47a4 100644 --- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/GetUserFilter.java +++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/GetUserFilter.java @@ -72,7 +72,7 @@ public class GetUserFilter implements Filter { throws IOException, ServletException { CurrentUser user = userProvider.get(); if (user != null && user.isIdentifiedUser()) { - IdentifiedUser who = (IdentifiedUser) user; + IdentifiedUser who = user.asIdentifiedUser(); if (who.getUserName() != null && !who.getUserName().isEmpty()) { req.setAttribute(REQ_ATTR_KEY, who.getUserName()); } else { diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/GitOverHttpServlet.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/GitOverHttpServlet.java index 705abe1dbf..89d62dd08a 100644 --- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/GitOverHttpServlet.java +++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/GitOverHttpServlet.java @@ -297,7 +297,7 @@ public class GitOverHttpServlet extends GitServlet { throw new ServiceNotAuthorizedException(); } - final IdentifiedUser user = (IdentifiedUser) pc.getUser(); + final IdentifiedUser user = pc.getUser().asIdentifiedUser(); final ReceiveCommits rc = factory.create(pc, db).getReceiveCommits(); ReceivePack rp = rc.getReceivePack(); rp.setRefLogIdent(user.newRefLogIdent()); @@ -373,8 +373,7 @@ public class GitOverHttpServlet extends GitServlet { } AdvertisedObjectsCacheKey cacheKey = AdvertisedObjectsCacheKey.create( - ((IdentifiedUser) pc.getUser()).getAccountId(), - projectName); + pc.getUser().getAccountId(), projectName); if (isGet) { cache.invalidate(cacheKey); diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/gitweb/GitwebServlet.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/gitweb/GitwebServlet.java index c4fe1a462e..9a85562618 100644 --- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/gitweb/GitwebServlet.java +++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/gitweb/GitwebServlet.java @@ -552,7 +552,7 @@ class GitwebServlet extends HttpServlet { String remoteUser = null; if (project.getUser().isIdentifiedUser()) { - final IdentifiedUser u = (IdentifiedUser) project.getUser(); + final IdentifiedUser u = project.getUser().asIdentifiedUser(); final String user = u.getUserName(); env.set("GERRIT_USER_NAME", user); if (user != null && !user.isEmpty()) { diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/raw/HostPageServlet.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/raw/HostPageServlet.java index aa7c8c8b13..c1a113fa2f 100644 --- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/raw/HostPageServlet.java +++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/raw/HostPageServlet.java @@ -31,7 +31,6 @@ import com.google.gerrit.extensions.webui.WebUiPlugin; import com.google.gerrit.httpd.HtmlDomUtil; import com.google.gerrit.httpd.WebSession; import com.google.gerrit.server.CurrentUser; -import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.config.ConfigUtil; import com.google.gerrit.server.config.GerritServerConfig; import com.google.gerrit.server.config.SitePaths; @@ -188,7 +187,7 @@ public class HostPageServlet extends HttpServlet { w.write(";"); w.write(HPD_ID + ".accountDiffPref="); - json(((IdentifiedUser) user).getAccountDiffPreference(), w); + json(user.asIdentifiedUser().getAccountDiffPreference(), w); w.write(";"); w.write(HPD_ID + ".theme="); diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/BaseServiceImplementation.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/BaseServiceImplementation.java index 5ec7f87538..547bf4575a 100644 --- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/BaseServiceImplementation.java +++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/BaseServiceImplementation.java @@ -21,7 +21,6 @@ import com.google.gerrit.common.errors.NoSuchGroupException; import com.google.gerrit.reviewdb.client.Account; import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.CurrentUser; -import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.project.NoSuchChangeException; import com.google.gerrit.server.project.NoSuchProjectException; import com.google.gwtjsonrpc.common.AsyncCallback; @@ -42,10 +41,7 @@ public class BaseServiceImplementation { protected Account.Id getAccountId() { CurrentUser u = currentUser.get(); - if (u.isIdentifiedUser()) { - return ((IdentifiedUser) u).getAccountId(); - } - return null; + return u.isIdentifiedUser() ? u.getAccountId() : null; } protected CurrentUser getUser() { diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/AccountServiceImpl.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/AccountServiceImpl.java index ba6babca71..968029c9ad 100644 --- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/AccountServiceImpl.java +++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/AccountServiceImpl.java @@ -141,7 +141,7 @@ class AccountServiceImpl extends BaseServiceImplementation implements AccountProjectWatch watch = new AccountProjectWatch(new AccountProjectWatch.Key( - ((IdentifiedUser) ctl.getUser()).getAccountId(), + ctl.getUser().getAccountId(), nameKey, filter)); try { db.accountProjectWatches().insert(Collections.singleton(watch)); diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/changedetail/PatchSetDetailFactory.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/changedetail/PatchSetDetailFactory.java index 70985b6fff..2bf5fe431a 100644 --- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/changedetail/PatchSetDetailFactory.java +++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/changedetail/PatchSetDetailFactory.java @@ -31,7 +31,6 @@ import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.CurrentUser; -import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.PatchLineCommentsUtil; import com.google.gerrit.server.edit.ChangeEdit; import com.google.gerrit.server.edit.ChangeEditUtil; @@ -183,7 +182,7 @@ class PatchSetDetailFactory extends Handler { // current user on each of these patch files. This way they can more // quickly locate where they have pending drafts, and review them. // - final Account.Id me = ((IdentifiedUser) user).getAccountId(); + final Account.Id me = user.getAccountId(); for (PatchLineComment c : plcUtil.draftByPatchSetAuthor(db, psIdNew, me, notes)) { final Patch p = byKey.get(c.getKey().getParentKey()); diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/http/jetty/ProjectQoSFilter.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/http/jetty/ProjectQoSFilter.java index 7730fa5dea..0f75a09c7d 100644 --- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/http/jetty/ProjectQoSFilter.java +++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/http/jetty/ProjectQoSFilter.java @@ -20,7 +20,6 @@ import static java.util.concurrent.TimeUnit.MINUTES; import static javax.servlet.http.HttpServletResponse.SC_SERVICE_UNAVAILABLE; import com.google.gerrit.server.CurrentUser; -import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.config.GerritServerConfig; import com.google.gerrit.server.git.QueueProvider; import com.google.gerrit.server.git.WorkQueue; @@ -84,17 +83,17 @@ public class ProjectQoSFilter implements Filter { } } - private final Provider userProvider; + private final Provider user; private final QueueProvider queue; private final ServletContext context; private final long maxWait; @Inject - ProjectQoSFilter(final Provider userProvider, + ProjectQoSFilter(final Provider user, QueueProvider queue, final ServletContext context, @GerritServerConfig final Config cfg) { - this.userProvider = userProvider; + this.user = user; this.queue = queue; this.context = context; this.maxWait = MINUTES.toMillis(getTimeUnit(cfg, "httpd", null, "maxwait", 5, MINUTES)); @@ -142,7 +141,7 @@ public class ProjectQoSFilter implements Filter { } private WorkQueue.Executor getExecutor() { - return queue.getQueue(userProvider.get().getCapabilities().getQueueType()); + return queue.getQueue(user.get().getCapabilities().getQueueType()); } @Override @@ -226,9 +225,9 @@ public class ProjectQoSFilter implements Filter { private String generateName(HttpServletRequest req) { String userName = ""; - CurrentUser who = userProvider.get(); + CurrentUser who = user.get(); if (who.isIdentifiedUser()) { - String name = ((IdentifiedUser) who).getUserName(); + String name = who.asIdentifiedUser().getUserName(); if (name != null && !name.isEmpty()) { userName = " (" + name + ")"; } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/ChangeUtil.java b/gerrit-server/src/main/java/com/google/gerrit/server/ChangeUtil.java index 988ecaeb8a..0de7e38e9a 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/ChangeUtil.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/ChangeUtil.java @@ -190,7 +190,7 @@ public class ChangeUtil { return subject; } - private final Provider userProvider; + private final Provider user; private final Provider db; private final Provider queryProvider; private final RevertedSender.Factory revertedSenderFactory; @@ -201,7 +201,7 @@ public class ChangeUtil { private final BatchUpdate.Factory updateFactory; @Inject - ChangeUtil(Provider userProvider, + ChangeUtil(Provider user, Provider db, Provider queryProvider, RevertedSender.Factory revertedSenderFactory, @@ -210,7 +210,7 @@ public class ChangeUtil { GitReferenceUpdated gitRefUpdated, ChangeIndexer indexer, BatchUpdate.Factory updateFactory) { - this.userProvider = userProvider; + this.user = user; this.db = db; this.queryProvider = queryProvider; this.revertedSenderFactory = revertedSenderFactory; @@ -239,8 +239,8 @@ public class ChangeUtil { RevCommit commitToRevert = revWalk.parseCommit(ObjectId.fromString(patch.getRevision().get())); - PersonIdent authorIdent = - user().newCommitterIdent(myIdent.getWhen(), myIdent.getTimeZone()); + PersonIdent authorIdent = user.get() + .newCommitterIdent(myIdent.getWhen(), myIdent.getTimeZone()); RevCommit parentToCommitToRevert = commitToRevert.getParent(0); revWalk.parseHeaders(parentToCommitToRevert); @@ -274,7 +274,7 @@ public class ChangeUtil { Change change = new Change( new Change.Key("I" + computedChangeId.name()), new Change.Id(db.get().nextChangeId()), - user().getAccountId(), + user.get().getAccountId(), changeToRevert.getDest(), TimeUtil.nowTs()); change.setTopic(changeToRevert.getTopic()); @@ -299,7 +299,7 @@ public class ChangeUtil { Change.Id id = ins.getChange().getId(); try { RevertedSender cm = revertedSenderFactory.create(id); - cm.setFrom(user().getAccountId()); + cm.setFrom(user.get().getAccountId()); cm.setChangeMessage(ins.getChangeMessage()); cm.send(); } catch (Exception err) { @@ -449,10 +449,6 @@ public class ChangeUtil { throw new ResourceNotFoundException(id); } - private IdentifiedUser user() { - return (IdentifiedUser) userProvider.get(); - } - private static void deleteOnlyDraftPatchSetPreserveRef(ReviewDb db, PatchSet patch) throws NoSuchChangeException, OrmException { PatchSet.Id patchSetId = patch.getId(); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/CurrentUser.java b/gerrit-server/src/main/java/com/google/gerrit/server/CurrentUser.java index ad34f9cda4..6a8600f567 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/CurrentUser.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/CurrentUser.java @@ -14,6 +14,7 @@ package com.google.gerrit.server; +import com.google.gerrit.reviewdb.client.Account; import com.google.gerrit.reviewdb.client.AccountProjectWatch; import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.server.account.CapabilityControl; @@ -101,6 +102,18 @@ public abstract class CurrentUser { return false; } + /** Cast to IdentifiedUser if possible. */ + public IdentifiedUser asIdentifiedUser() { + throw new UnsupportedOperationException( + getClass().getSimpleName() + " is not an IdentifiedUser"); + } + + /** Return account ID if {@link #isIdentifiedUser} is true. */ + public Account.Id getAccountId() { + throw new UnsupportedOperationException( + getClass().getSimpleName() + " is not an IdentifiedUser"); + } + /** Check if the CurrentUser is an InternalUser. */ public boolean isInternalUser() { return false; diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/IdentifiedUser.java b/gerrit-server/src/main/java/com/google/gerrit/server/IdentifiedUser.java index 885a97ffac..df250425fe 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/IdentifiedUser.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/IdentifiedUser.java @@ -254,7 +254,12 @@ public class IdentifiedUser extends CurrentUser { return state; } - /** The account identity for the user. */ + @Override + public IdentifiedUser asIdentifiedUser() { + return this; + } + + @Override public Account.Id getAccountId() { return accountId; } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/AccountControl.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/AccountControl.java index 825bd3b1f2..aad427b46d 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/AccountControl.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/AccountControl.java @@ -61,19 +61,19 @@ public class AccountControl { private final AccountsSection accountsSection; private final GroupControl.Factory groupControlFactory; - private final CurrentUser currentUser; + private final CurrentUser user; private final IdentifiedUser.GenericFactory userFactory; private final AccountVisibility accountVisibility; AccountControl(final ProjectCache projectCache, final GroupControl.Factory groupControlFactory, - final CurrentUser currentUser, + final CurrentUser user, final IdentifiedUser.GenericFactory userFactory, final AccountVisibility accountVisibility) { this.accountsSection = projectCache.getAllProjects().getConfig().getAccountsSection(); this.groupControlFactory = groupControlFactory; - this.currentUser = currentUser; + this.user = user; this.userFactory = userFactory; this.accountVisibility = accountVisibility; } @@ -100,11 +100,10 @@ public class AccountControl { */ public boolean canSee(final Account.Id otherUser) { // Special case: I can always see myself. - if (currentUser.isIdentifiedUser() - && ((IdentifiedUser) currentUser).getAccountId().equals(otherUser)) { + if (user.isIdentifiedUser() && user.getAccountId().equals(otherUser)) { return true; } - if (currentUser.getCapabilities().canViewAllAccounts()) { + if (user.getCapabilities().canViewAllAccounts()) { return true; } @@ -119,7 +118,7 @@ public class AccountControl { } } - if (currentUser.getEffectiveGroups().containsAnyOf(usersGroups)) { + if (user.getEffectiveGroups().containsAnyOf(usersGroups)) { return true; } break; diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/AccountsCollection.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/AccountsCollection.java index 80a451a002..80ea90766c 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/AccountsCollection.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/AccountsCollection.java @@ -114,7 +114,7 @@ public class AccountsCollection implements if (id.equals("self")) { CurrentUser user = self.get(); if (user.isIdentifiedUser()) { - return (IdentifiedUser) user; + return user.asIdentifiedUser(); } else if (user instanceof AnonymousUser) { throw new AuthException("Authentication required"); } else { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/GroupControl.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/GroupControl.java index 16e201b298..2e039136af 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/GroupControl.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/GroupControl.java @@ -20,7 +20,6 @@ import com.google.gerrit.common.errors.NoSuchGroupException; import com.google.gerrit.reviewdb.client.Account; import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gerrit.server.CurrentUser; -import com.google.gerrit.server.IdentifiedUser; import com.google.inject.Inject; import com.google.inject.Provider; import com.google.inject.Singleton; @@ -159,8 +158,7 @@ public class GroupControl { } public boolean canSeeMember(Account.Id id) { - if (user.isIdentifiedUser() - && ((IdentifiedUser) user).getAccountId().equals(id)) { + if (user.isIdentifiedUser() && user.getAccountId().equals(id)) { return true; } return canSeeMembers(); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/api/accounts/AccountsImpl.java b/gerrit-server/src/main/java/com/google/gerrit/server/api/accounts/AccountsImpl.java index 3f578aee3b..7be8299a42 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/api/accounts/AccountsImpl.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/api/accounts/AccountsImpl.java @@ -22,7 +22,6 @@ import com.google.gerrit.extensions.restapi.IdString; import com.google.gerrit.extensions.restapi.RestApiException; import com.google.gerrit.extensions.restapi.TopLevelResource; import com.google.gerrit.server.CurrentUser; -import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.account.AccountResource; import com.google.gerrit.server.account.AccountsCollection; import com.google.gerrit.server.account.SuggestAccounts; @@ -66,7 +65,7 @@ public class AccountsImpl implements Accounts { if (!self.get().isIdentifiedUser()) { throw new AuthException("Authentication required"); } - return api.create(new AccountResource((IdentifiedUser)self.get())); + return api.create(new AccountResource(self.get().asIdentifiedUser())); } @Override diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/api/changes/ChangeApiImpl.java b/gerrit-server/src/main/java/com/google/gerrit/server/api/changes/ChangeApiImpl.java index 502ea25840..605e0e7ade 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/api/changes/ChangeApiImpl.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/api/changes/ChangeApiImpl.java @@ -33,7 +33,6 @@ import com.google.gerrit.extensions.restapi.IdString; import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestApiException; import com.google.gerrit.server.CurrentUser; -import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.change.Abandon; import com.google.gerrit.server.change.ChangeEdits; import com.google.gerrit.server.change.ChangeJson; @@ -275,7 +274,7 @@ class ChangeApiImpl implements ChangeApi { try { CurrentUser u = user.get(); if (u.isIdentifiedUser()) { - ((IdentifiedUser) u).clearStarredChanges(); + u.asIdentifiedUser().clearStarredChanges(); } return changeJson.create(s).format(change); } catch (OrmException e) { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/api/changes/ChangesImpl.java b/gerrit-server/src/main/java/com/google/gerrit/server/api/changes/ChangesImpl.java index 41e34dd5d0..acda1eef7e 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/api/changes/ChangesImpl.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/api/changes/ChangesImpl.java @@ -29,7 +29,6 @@ import com.google.gerrit.extensions.restapi.RestApiException; import com.google.gerrit.extensions.restapi.TopLevelResource; import com.google.gerrit.extensions.restapi.Url; import com.google.gerrit.server.CurrentUser; -import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.change.ChangesCollection; import com.google.gerrit.server.change.CreateChange; import com.google.gerrit.server.git.UpdateException; @@ -131,7 +130,7 @@ class ChangesImpl implements Changes { try { CurrentUser u = user.get(); if (u.isIdentifiedUser()) { - ((IdentifiedUser) u).clearStarredChanges(); + u.asIdentifiedUser().clearStarredChanges(); } List result = qc.apply(TopLevelResource.INSTANCE); if (result.isEmpty()) { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/auth/ldap/LdapGroupBackend.java b/gerrit-server/src/main/java/com/google/gerrit/server/auth/ldap/LdapGroupBackend.java index 0c091556ec..bd4a3b0de5 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/auth/ldap/LdapGroupBackend.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/auth/ldap/LdapGroupBackend.java @@ -126,7 +126,7 @@ public class LdapGroupBackend implements GroupBackend { String groupDn = uuid.get().substring(LDAP_UUID.length()); CurrentUser user = userProvider.get(); if (!(user.isIdentifiedUser()) - || !membershipsOf((IdentifiedUser) user).contains(uuid)) { + || !membershipsOf(user.asIdentifiedUser()).contains(uuid)) { try { if (!existsCache.get(groupDn)) { return null; diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java index 12a0f3a6cd..f2d40c8e1e 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java @@ -81,7 +81,7 @@ public class Abandon implements RestModifyView, final AbandonInput input) throws RestApiException, UpdateException, OrmException { ChangeControl control = req.getControl(); - IdentifiedUser caller = (IdentifiedUser) control.getUser(); + IdentifiedUser caller = control.getUser().asIdentifiedUser(); if (!control.canAbandon()) { throw new AuthException("abandon not permitted"); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java index 71aefd2959..344eda1719 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java @@ -140,7 +140,7 @@ public class ChangeInserter extends BatchUpdate.InsertChangeOp { this.sendMail = true; this.updateRef = true; - user = checkUser(refControl); + user = refControl.getUser().asIdentifiedUser(); patchSet = new PatchSet(new PatchSet.Id(change.getId(), INITIAL_PATCH_SET_ID)); patchSet.setCreatedOn(change.getCreatedOn()); @@ -148,12 +148,6 @@ public class ChangeInserter extends BatchUpdate.InsertChangeOp { patchSet.setRevision(new RevId(commit.name())); } - private static IdentifiedUser checkUser(RefControl ctl) { - checkArgument(ctl.getUser().isIdentifiedUser(), - "only IdentifiedUser may create change"); - return (IdentifiedUser) ctl.getUser(); - } - @Override public Change getChange() { return change; @@ -307,9 +301,8 @@ public class ChangeInserter extends BatchUpdate.InsertChangeOp { ReviewDb db = ctx.getDb(); hooks.doPatchsetCreatedHook(change, patchSet, db); if (approvals != null && !approvals.isEmpty()) { - hooks.doCommentAddedHook(change, - ((IdentifiedUser) refControl.getUser()).getAccount(), - patchSet, null, approvals, db); + hooks.doCommentAddedHook( + change, user.getAccount(), patchSet, null, approvals, db); } } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeJson.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeJson.java index d13d5909af..7d126e3014 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeJson.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeJson.java @@ -424,7 +424,7 @@ public class ChangeJson { ? true : null; if (in.getStatus().isOpen() && has(REVIEWED) && user.isIdentifiedUser()) { - Account.Id accountId = ((IdentifiedUser) user).getAccountId(); + Account.Id accountId = user.getAccountId(); out.reviewed = cd.reviewedBy().contains(accountId) ? true : null; } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeResource.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeResource.java index 0a6b18c066..03d189fabd 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeResource.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeResource.java @@ -23,7 +23,6 @@ import com.google.gerrit.extensions.restapi.RestView; import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.server.CurrentUser; -import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.notedb.ChangeNotes; import com.google.gerrit.server.project.ChangeControl; import com.google.gerrit.server.project.ProjectState; @@ -63,9 +62,7 @@ public class ChangeResource implements RestResource, HasETag { public void prepareETag(Hasher h, CurrentUser user) { h.putLong(getChange().getLastUpdatedOn().getTime()) .putInt(getChange().getRowVersion()) - .putInt(user.isIdentifiedUser() - ? ((IdentifiedUser) user).getAccountId().get() - : 0); + .putInt(user.isIdentifiedUser() ? user.getAccountId().get() : 0); if (user.isIdentifiedUser()) { for (AccountGroup.UUID uuid : user.getEffectiveGroups().getKnownGroups()) { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/CherryPickChange.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/CherryPickChange.java index 8fbe447c1d..202602b103 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/CherryPickChange.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/CherryPickChange.java @@ -27,7 +27,6 @@ import com.google.gerrit.reviewdb.client.RefNames; import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.ChangeMessagesUtil; import com.google.gerrit.server.ChangeUtil; -import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.GerritPersonIdent; import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.git.BatchUpdate; @@ -75,7 +74,7 @@ public class CherryPickChange { private final Provider queryProvider; private final GitRepositoryManager gitManager; private final TimeZone serverTimeZone; - private final Provider currentUser; + private final Provider user; private final ChangeInserter.Factory changeInserterFactory; private final PatchSetInserter.Factory patchSetInserterFactory; private final MergeUtil.Factory mergeUtilFactory; @@ -88,7 +87,7 @@ public class CherryPickChange { Provider queryProvider, @GerritPersonIdent PersonIdent myIdent, GitRepositoryManager gitManager, - Provider currentUser, + Provider user, ChangeInserter.Factory changeInserterFactory, PatchSetInserter.Factory patchSetInserterFactory, MergeUtil.Factory mergeUtilFactory, @@ -99,7 +98,7 @@ public class CherryPickChange { this.queryProvider = queryProvider; this.gitManager = gitManager; this.serverTimeZone = myIdent.getTimeZone(); - this.currentUser = currentUser; + this.user = user; this.changeInserterFactory = changeInserterFactory; this.patchSetInserterFactory = patchSetInserterFactory; this.mergeUtilFactory = mergeUtilFactory; @@ -123,7 +122,7 @@ public class CherryPickChange { Project.NameKey project = change.getProject(); String destinationBranch = RefNames.shortName(ref); - IdentifiedUser identifiedUser = (IdentifiedUser) currentUser.get(); + IdentifiedUser identifiedUser = user.get(); try (Repository git = gitManager.openRepository(project); CodeReviewRevWalk revWalk = CodeReviewCommit.newRevWalk(git)) { Ref destRef = git.getRefDatabase().exactRef(ref); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/ConsistencyChecker.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/ConsistencyChecker.java index 344e552476..d3196477cf 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/ConsistencyChecker.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/ConsistencyChecker.java @@ -41,7 +41,6 @@ import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.ChangeUtil; import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.GerritPersonIdent; -import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.git.BatchUpdate; import com.google.gerrit.server.git.GitRepositoryManager; import com.google.gerrit.server.git.UpdateException; @@ -473,7 +472,7 @@ public class ConsistencyChecker { .setRunHooks(false) .setSendMail(false) .setAllowClosed(true) - .setUploader(((IdentifiedUser) user.get()).getAccountId()) + .setUploader(user.get().getAccountId()) // TODO: fix setMessage to work without init() .setMessage( "Patch set for merged commit inserted by consistency checker")); @@ -603,7 +602,7 @@ public class ConsistencyChecker { private PersonIdent newRefLogIdent() { CurrentUser u = user.get(); if (u.isIdentifiedUser()) { - return ((IdentifiedUser) u).newRefLogIdent(); + return u.asIdentifiedUser().newRefLogIdent(); } else { return serverIdent.get(); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/CreateChange.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/CreateChange.java index 03c0176e22..bc2fdd299a 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/CreateChange.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/CreateChange.java @@ -77,7 +77,7 @@ public class CreateChange implements private final Provider db; private final GitRepositoryManager gitManager; private final TimeZone serverTimeZone; - private final Provider userProvider; + private final Provider user; private final ProjectsCollection projectsCollection; private final ChangeInserter.Factory changeInserterFactory; private final ChangeJson.Factory jsonFactory; @@ -89,7 +89,7 @@ public class CreateChange implements CreateChange(Provider db, GitRepositoryManager gitManager, @GerritPersonIdent PersonIdent myIdent, - Provider userProvider, + Provider user, ProjectsCollection projectsCollection, ChangeInserter.Factory changeInserterFactory, ChangeJson.Factory json, @@ -99,7 +99,7 @@ public class CreateChange implements this.db = db; this.gitManager = gitManager; this.serverTimeZone = myIdent.getTimeZone(); - this.userProvider = userProvider; + this.user = user; this.projectsCollection = projectsCollection; this.changeInserterFactory = changeInserterFactory; this.jsonFactory = json; @@ -182,7 +182,7 @@ public class CreateChange implements RevCommit mergeTip = rw.parseCommit(parentCommit); Timestamp now = TimeUtil.nowTs(); - IdentifiedUser me = (IdentifiedUser) userProvider.get(); + IdentifiedUser me = user.get().asIdentifiedUser(); PersonIdent author = me.newCommitterIdent(now, serverTimeZone); ObjectId id = ChangeIdUtil.computeChangeId(mergeTip.getTree(), diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteReviewer.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteReviewer.java index bd476d60f5..6c372523b8 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteReviewer.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteReviewer.java @@ -111,7 +111,7 @@ public class DeleteReviewer implements RestModifyView { ChangeMessage changeMessage = new ChangeMessage(new ChangeMessage.Key(rsrc.getChange().getId(), ChangeUtil.messageUUID(db)), - ((IdentifiedUser) control.getUser()).getAccountId(), + control.getUser().getAccountId(), TimeUtil.nowTs(), rsrc.getChange().currentPatchSetId()); changeMessage.setMessage(msg.toString()); cmUtil.addChangeMessage(db, update, changeMessage); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/DraftCommentResource.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/DraftCommentResource.java index 5e10864249..3dc0c78ef3 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/DraftCommentResource.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/DraftCommentResource.java @@ -20,7 +20,6 @@ import com.google.gerrit.reviewdb.client.Account; import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.PatchLineComment; import com.google.gerrit.reviewdb.client.PatchSet; -import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.project.ChangeControl; import com.google.inject.TypeLiteral; @@ -57,6 +56,6 @@ public class DraftCommentResource implements RestResource { } Account.Id getAuthorId() { - return ((IdentifiedUser) getControl().getUser()).getAccountId(); + return getControl().getUser().getAccountId(); } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Files.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Files.java index e19b6a91b8..e28d79650e 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Files.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Files.java @@ -34,7 +34,6 @@ import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.CurrentUser; -import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.git.GitRepositoryManager; import com.google.gerrit.server.patch.PatchList; import com.google.gerrit.server.patch.PatchListCache; @@ -207,7 +206,7 @@ public class Files implements ChildCollection { throw new AuthException("Authentication required"); } - Account.Id userId = ((IdentifiedUser) user).getAccountId(); + Account.Id userId = user.getAccountId(); List r = scan(userId, resource.getPatchSet().getId()); if (r.isEmpty() && 1 < resource.getPatchSet().getPatchSetId()) { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/ListChangeDrafts.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/ListChangeDrafts.java index 034a7b9a6f..561a040adb 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/ListChangeDrafts.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/ListChangeDrafts.java @@ -19,7 +19,6 @@ import com.google.gerrit.extensions.restapi.AuthException; import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.reviewdb.client.PatchLineComment; import com.google.gerrit.reviewdb.server.ReviewDb; -import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.PatchLineCommentsUtil; import com.google.gerrit.server.query.change.ChangeData; import com.google.gwtorm.server.OrmException; @@ -54,10 +53,9 @@ public class ListChangeDrafts implements RestReadView { if (!rsrc.getControl().getUser().isIdentifiedUser()) { throw new AuthException("Authentication required"); } - IdentifiedUser user = (IdentifiedUser) rsrc.getControl().getUser(); ChangeData cd = changeDataFactory.create(db.get(), rsrc.getControl()); - List drafts = - plcUtil.draftByChangeAuthor(db.get(), cd.notes(), user.getAccountId()); + List drafts = plcUtil.draftByChangeAuthor( + db.get(), cd.notes(), rsrc.getControl().getUser().getAccountId()); return commentJson.get() .setFillAccounts(false) .setFillPatchSet(true) diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java index ef4e5bbf55..b537838a2d 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java @@ -15,7 +15,6 @@ package com.google.gerrit.server.change; import static com.google.common.base.MoreObjects.firstNonNull; -import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; @@ -141,14 +140,7 @@ public class PatchSetInserter extends BatchUpdate.Op { this.revWalk = revWalk; this.commit = commit; this.ctl = ctl; - this.user = checkUser(ctl); - } - - private static IdentifiedUser checkUser(ChangeControl ctl) { - checkArgument(ctl.getUser().isIdentifiedUser(), - "only IdentifiedUser may create patch set on change %s", - ctl.getChange().getId()); - return (IdentifiedUser) ctl.getUser(); + this.user = ctl.getUser().asIdentifiedUser(); } public PatchSet.Id getPatchSetId() throws IOException { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReview.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReview.java index da8eec4323..7a24dbcfd5 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReview.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReview.java @@ -318,7 +318,7 @@ public class PostReview implements RestModifyView @Override public void updateChange(ChangeContext ctx) throws OrmException { - user = (IdentifiedUser) ctx.getUser(); + user = ctx.getUser().asIdentifiedUser(); change = ctx.getChange(); if (change.getLastUpdatedOn().before(ctx.getWhen())) { change.setLastUpdatedOn(ctx.getWhen()); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReviewers.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReviewers.java index e00d69c4c4..4b541b067a 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReviewers.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReviewers.java @@ -36,7 +36,6 @@ import com.google.gerrit.reviewdb.client.PatchSetApproval; import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.ApprovalsUtil; import com.google.gerrit.server.ChangeUtil; -import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.account.AccountCache; import com.google.gerrit.server.account.AccountLoader; @@ -84,7 +83,7 @@ public class PostReviewers implements RestModifyView dbProvider; private final ChangeUpdate.Factory updateFactory; - private final Provider currentUser; + private final Provider user; private final IdentifiedUser.GenericFactory identifiedUserFactory; private final Config cfg; private final ChangeHooks hooks; @@ -102,7 +101,7 @@ public class PostReviewers implements RestModifyView db, ChangeUpdate.Factory updateFactory, - Provider currentUser, + Provider user, IdentifiedUser.GenericFactory identifiedUserFactory, @GerritServerConfig Config cfg, ChangeHooks hooks, @@ -118,7 +117,7 @@ public class PostReviewers implements RestModifyView toMail = Lists.newArrayListWithCapacity(added.size()); - IdentifiedUser identifiedUser = (IdentifiedUser) currentUser.get(); + Account.Id userId = user.get().getAccountId(); for (PatchSetApproval psa : added) { - if (!psa.getAccountId().equals(identifiedUser.getAccountId())) { + if (!psa.getAccountId().equals(userId)) { toMail.add(psa.getAccountId()); } } if (!toMail.isEmpty()) { try { AddReviewerSender cm = addReviewerSenderFactory.create(change.getId()); - cm.setFrom(identifiedUser.getAccountId()); + cm.setFrom(userId); cm.addReviewers(toMail); cm.send(); } catch (Exception err) { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/PutTopic.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/PutTopic.java index d8a271cfcf..6366e7b478 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/PutTopic.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/PutTopic.java @@ -97,7 +97,7 @@ public class PutTopic implements RestModifyView, public Op(ChangeControl ctl, Input input) { this.input = input; - this.caller = (IdentifiedUser) ctl.getUser(); + this.caller = ctl.getUser().asIdentifiedUser(); } @Override diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/RebaseChange.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/RebaseChange.java index aa8c47cb89..964dc5eceb 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/RebaseChange.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/RebaseChange.java @@ -120,7 +120,7 @@ public class RebaseChange { UpdateException, RestApiException { Change change = rsrc.getChange(); PatchSet patchSet = rsrc.getPatchSet(); - IdentifiedUser uploader = (IdentifiedUser) rsrc.getControl().getUser(); + IdentifiedUser uploader = rsrc.getControl().getUser().asIdentifiedUser(); try (ObjectInserter inserter = git.newObjectInserter()) { String baseRev = newBaseRev; diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Restore.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Restore.java index 358ad2a260..8b3a110040 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Restore.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Restore.java @@ -109,7 +109,7 @@ public class Restore implements RestModifyView, @Override public void updateChange(ChangeContext ctx) throws OrmException, ResourceConflictException { - caller = (IdentifiedUser) ctx.getUser(); + caller = ctx.getUser().asIdentifiedUser(); change = ctx.getChange(); if (change == null || change.getStatus() != Status.ABANDONED) { throw new ResourceConflictException("change is " + status(change)); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/RevisionResource.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/RevisionResource.java index 14eaffb5df..6731dd9553 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/RevisionResource.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/RevisionResource.java @@ -84,7 +84,7 @@ public class RevisionResource implements RestResource, HasETag { } IdentifiedUser getUser() { - return (IdentifiedUser) getControl().getUser(); + return getControl().getUser().asIdentifiedUser(); } RevisionResource doNotCache() { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/SetHashtagsOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/SetHashtagsOp.java index f159ff8537..61baeb22d4 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/SetHashtagsOp.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/SetHashtagsOp.java @@ -25,7 +25,6 @@ import com.google.gerrit.extensions.registration.DynamicSet; import com.google.gerrit.extensions.restapi.AuthException; import com.google.gerrit.extensions.restapi.BadRequestException; import com.google.gerrit.reviewdb.client.Change; -import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.git.BatchUpdate; import com.google.gerrit.server.git.BatchUpdate.ChangeContext; import com.google.gerrit.server.git.BatchUpdate.Context; @@ -118,9 +117,8 @@ public class SetHashtagsOp extends BatchUpdate.Op { @Override public void postUpdate(Context ctx) throws OrmException { if (updated() && runHooks) { - IdentifiedUser currentUser = (IdentifiedUser) ctx.getUser(); hooks.doHashtagsChangedHook( - change, currentUser.getAccount(), + change, ctx.getUser().asIdentifiedUser().getAccount(), toAdd, toRemove, updatedHashtags, ctx.getDb()); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java index 0bda539c65..1a92ec0584 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java @@ -165,7 +165,7 @@ public class Submit implements RestModifyView, rsrc = onBehalfOf(rsrc, input); } ChangeControl control = rsrc.getControl(); - IdentifiedUser caller = (IdentifiedUser) control.getUser(); + IdentifiedUser caller = control.getUser().asIdentifiedUser(); Change change = rsrc.getChange(); if (input.onBehalfOf == null && !control.canSubmit()) { throw new AuthException("submit not permitted"); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/config/ConfirmEmail.java b/gerrit-server/src/main/java/com/google/gerrit/server/config/ConfirmEmail.java index 0ebc6bc324..24d28c7eca 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/config/ConfirmEmail.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/config/ConfirmEmail.java @@ -21,7 +21,6 @@ import com.google.gerrit.extensions.restapi.RestModifyView; import com.google.gerrit.extensions.restapi.UnprocessableEntityException; import com.google.gerrit.reviewdb.client.Account; import com.google.gerrit.server.CurrentUser; -import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.account.AccountException; import com.google.gerrit.server.account.AccountManager; import com.google.gerrit.server.config.ConfirmEmail.Input; @@ -69,7 +68,7 @@ public class ConfirmEmail implements RestModifyView { try { EmailTokenVerifier.ParsedToken token = emailTokenVerifier.decode(input.token); - Account.Id accId = ((IdentifiedUser)user).getAccountId(); + Account.Id accId = user.getAccountId(); if (accId.equals(token.getAccountId())) { accountManager.link(accId, token.toAuthRequest()); return Response.none(); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/edit/ChangeEditModifier.java b/gerrit-server/src/main/java/com/google/gerrit/server/edit/ChangeEditModifier.java index 67bdd0ba39..d0c11e748a 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/edit/ChangeEditModifier.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/edit/ChangeEditModifier.java @@ -123,7 +123,7 @@ public class ChangeEditModifier { throw new AuthException("Authentication required"); } - IdentifiedUser me = (IdentifiedUser) currentUser.get(); + IdentifiedUser me = currentUser.get().asIdentifiedUser(); String refPrefix = RefNames.refsEditPrefix(me.getAccountId(), change.getId()); try (Repository repo = gitManager.openRepository(change.getProject())) { @@ -162,7 +162,7 @@ public class ChangeEditModifier { } Change change = edit.getChange(); - IdentifiedUser me = (IdentifiedUser) currentUser.get(); + IdentifiedUser me = currentUser.get().asIdentifiedUser(); String refName = RefNames.refsEdit(me.getAccountId(), change.getId(), current.getId()); try (Repository repo = gitManager.openRepository(change.getProject()); @@ -237,7 +237,7 @@ public class ChangeEditModifier { throw new UnchangedCommitMessageException(); } - IdentifiedUser me = (IdentifiedUser) currentUser.get(); + IdentifiedUser me = currentUser.get().asIdentifiedUser(); Project.NameKey project = edit.getChange().getProject(); try (Repository repo = gitManager.openRepository(project); RevWalk rw = new RevWalk(repo); @@ -323,7 +323,7 @@ public class ChangeEditModifier { if (!currentUser.get().isIdentifiedUser()) { throw new AuthException("Authentication required"); } - IdentifiedUser me = (IdentifiedUser) currentUser.get(); + IdentifiedUser me = currentUser.get().asIdentifiedUser(); Project.NameKey project = edit.getChange().getProject(); try (Repository repo = gitManager.openRepository(project); RevWalk rw = new RevWalk(repo); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/edit/ChangeEditUtil.java b/gerrit-server/src/main/java/com/google/gerrit/server/edit/ChangeEditUtil.java index bfb2a8a43f..ef2aaf6c13 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/edit/ChangeEditUtil.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/edit/ChangeEditUtil.java @@ -109,7 +109,7 @@ public class ChangeEditUtil { if (!currentUser.isIdentifiedUser()) { throw new AuthException("Authentication required"); } - return byChange(change, (IdentifiedUser)currentUser); + return byChange(change, currentUser.asIdentifiedUser()); } /** diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java index 77d6a98dbc..c87ed00ae4 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java @@ -277,7 +277,7 @@ public class ReceiveCommits { private Set reviewersFromCommandLine = Sets.newLinkedHashSet(); private Set ccFromCommandLine = Sets.newLinkedHashSet(); - private final IdentifiedUser currentUser; + private final IdentifiedUser user; private final ReviewDb db; private final Provider queryProvider; private final ChangeData.Factory changeDataFactory; @@ -390,7 +390,7 @@ public class ReceiveCommits { final ChangeEditUtil editUtil, final BatchUpdate.Factory batchUpdateFactory, final SetHashtagsOp.Factory hashtagsFactory) throws IOException { - this.currentUser = (IdentifiedUser) projectControl.getUser(); + this.user = projectControl.getUser().asIdentifiedUser(); this.db = db; this.queryProvider = queryProvider; this.changeDataFactory = changeDataFactory; @@ -606,7 +606,7 @@ public class ReceiveCommits { for (Error error : errors.keySet()) { rp.sendMessage(buildError(error, errors.get(error))); } - rp.sendMessage(String.format("User: %s", displayName(currentUser))); + rp.sendMessage(String.format("User: %s", displayName(user))); rp.sendMessage(COMMAND_REJECTION_MESSAGE_FOOTER); } @@ -662,7 +662,7 @@ public class ReceiveCommits { new Branch.NameKey(project.getNameKey(), c.getRefName()), c.getOldId(), c.getNewId(), - currentUser.getAccount()); + user.getAccount()); } } } @@ -881,7 +881,7 @@ public class ReceiveCommits { } HookResult result = hooks.doRefUpdateHook(project, cmd.getRefName(), - currentUser.getAccount(), cmd.getOldId(), + user.getAccount(), cmd.getOldId(), cmd.getNewId()); if (result != null) { @@ -952,7 +952,7 @@ public class ReceiveCommits { addError(" " + err.getMessage()); } reject(cmd, "invalid project configuration"); - log.error("User " + currentUser.getUserName() + log.error("User " + user.getUserName() + " tried to push invalid project configuration " + cmd.getNewId().name() + " for " + project.getName()); continue; @@ -967,7 +967,7 @@ public class ReceiveCommits { } } else { if (!oldParent.equals(newParent) - && !currentUser.getCapabilities().canAdministrateServer()) { + && !user.getCapabilities().canAdministrateServer()) { reject(cmd, "invalid project configuration: only Gerrit admin can set parent"); continue; } @@ -1013,7 +1013,7 @@ public class ReceiveCommits { } } catch (Exception e) { reject(cmd, "invalid project configuration"); - log.error("User " + currentUser.getUserName() + log.error("User " + user.getUserName() + " tried to push invalid project configuration " + cmd.getNewId().name() + " for " + project.getName(), e); continue; @@ -1529,7 +1529,7 @@ public class ReceiveCommits { List pending = Lists.newArrayList(); final Set newChangeIds = new HashSet<>(); final int maxBatchChanges = - receiveConfig.getEffectiveMaxBatchChangesLimit(currentUser); + receiveConfig.getEffectiveMaxBatchChangesLimit(user); for (;;) { final RevCommit c = rp.getRevWalk().next(); if (c == null) { @@ -1723,7 +1723,7 @@ public class ReceiveCommits { commit = c; change = new Change(changeKey, new Change.Id(db.nextChangeId()), - currentUser.getAccountId(), + user.getAccountId(), magicBranch.dest, TimeUtil.nowTs()); change.setTopic(magicBranch.topic); @@ -1763,7 +1763,7 @@ public class ReceiveCommits { private void insertChange(ReviewDb threadLocalDb) throws OrmException, RestApiException, UpdateException { final PatchSet ps = ins.setGroups(groups).getPatchSet(); - final Account.Id me = currentUser.getAccountId(); + final Account.Id me = user.getAccountId(); final List footerLines = commit.getFooterLines(); final MailRecipients recipients = new MailRecipients(); Map approvals = new HashMap<>(); @@ -1777,7 +1777,7 @@ public class ReceiveCommits { approvals, Collections. emptyMap()); try (ObjectInserter oi = repo.newObjectInserter(); BatchUpdate bu = batchUpdateFactory.create(threadLocalDb, - change.getProject(), currentUser, change.getCreatedOn())) { + change.getProject(), user, change.getCreatedOn())) { bu.setRepository(repo, rp.getRevWalk(), oi); bu.insertChange(ins .setReviewers(recipients.getReviewers()) @@ -1809,7 +1809,7 @@ public class ReceiveCommits { RevisionResource rsrc = new RevisionResource(changes.parse(changeCtl), ps); try { mergeOpProvider.get().merge(db, rsrc.getChange(), - (IdentifiedUser) changeCtl.getUser(), false); + changeCtl.getUser().asIdentifiedUser(), false); } catch (NoSuchChangeException e) { throw new OrmException(e); } @@ -2073,7 +2073,7 @@ public class ReceiveCommits { Optional edit = null; try { - edit = editUtil.byChange(change, currentUser); + edit = editUtil.byChange(change, user); } catch (IOException e) { log.error("Cannt retrieve edit", e); return false; @@ -2107,7 +2107,7 @@ public class ReceiveCommits { ObjectId.zeroId(), newCommit, RefNames.refsEdit( - currentUser.getAccountId(), + user.getAccountId(), change.getId(), newPatchSet.getId())); } @@ -2117,7 +2117,7 @@ public class ReceiveCommits { ChangeUtil.nextPatchSetId(allRefs, change.currentPatchSetId()); newPatchSet = new PatchSet(id); newPatchSet.setCreatedOn(TimeUtil.nowTs()); - newPatchSet.setUploader(currentUser.getAccountId()); + newPatchSet.setUploader(user.getAccountId()); newPatchSet.setRevision(toRevId(newCommit)); newPatchSet.setGroups(groups); if (rp.getPushCertificate() != null) { @@ -2170,7 +2170,7 @@ public class ReceiveCommits { throws OrmException { msg = new ChangeMessage(new ChangeMessage.Key(change.getId(), ChangeUtil - .messageUUID(db)), currentUser.getAccountId(), newPatchSet.getCreatedOn(), + .messageUUID(db)), user.getAccountId(), newPatchSet.getCreatedOn(), newPatchSet.getId()); msg.setMessage(renderMessageWithApprovals(newPatchSet.getPatchSetId(), @@ -2199,7 +2199,7 @@ public class ReceiveCommits { // We optimize here and only retrieve current when approvals provided if (!approvals.isEmpty()) { for (PatchSetApproval a : approvalsUtil.byPatchSetUser( - db, changeCtl, priorPatchSet, currentUser.getAccountId())) { + db, changeCtl, priorPatchSet, user.getAccountId())) { if (a.isSubmit()) { continue; } @@ -2222,7 +2222,7 @@ public class ReceiveCommits { PatchSet.Id insertPatchSet(ReviewDb db) throws OrmException, IOException, ResourceConflictException { - final Account.Id me = currentUser.getAccountId(); + final Account.Id me = user.getAccountId(); final List footerLines = newCommit.getFooterLines(); final MailRecipients recipients = new MailRecipients(); Map approvals = new HashMap<>(); @@ -2374,11 +2374,11 @@ public class ReceiveCommits { hooks.doPatchsetCreatedHook(change, newPatchSet, db); if (mergedIntoRef != null) { hooks.doChangeMergedHook( - change, currentUser.getAccount(), newPatchSet, db, newCommit.getName()); + change, user.getAccount(), newPatchSet, db, newCommit.getName()); } if (!approvals.isEmpty()) { - hooks.doCommentAddedHook(change, currentUser.getAccount(), newPatchSet, + hooks.doCommentAddedHook(change, user.getAccount(), newPatchSet, null, approvals, db); } @@ -2555,7 +2555,7 @@ public class ReceiveCommits { return; } - boolean defaultName = Strings.isNullOrEmpty(currentUser.getAccount().getFullName()); + boolean defaultName = Strings.isNullOrEmpty(user.getAccount().getFullName()); final RevWalk walk = rp.getRevWalk(); walk.reset(); walk.sort(RevSort.NONE); @@ -2574,14 +2574,14 @@ public class ReceiveCommits { break; } - if (defaultName && currentUser.hasEmailAddress( + if (defaultName && user.hasEmailAddress( c.getCommitterIdent().getEmailAddress())) { try { - Account a = db.accounts().get(currentUser.getAccountId()); + Account a = db.accounts().get(user.getAccountId()); if (a != null && Strings.isNullOrEmpty(a.getFullName())) { a.setFullName(c.getCommitterIdent().getName()); db.accounts().update(Collections.singleton(a)); - currentUser.getAccount().setFullName(a.getFullName()); + user.getAccount().setFullName(a.getFullName()); accountCache.evict(a.getId()); } } catch (OrmException e) { @@ -2605,7 +2605,7 @@ public class ReceiveCommits { } CommitReceivedEvent receiveEvent = - new CommitReceivedEvent(cmd, project, ctl.getRefName(), c, currentUser); + new CommitReceivedEvent(cmd, project, ctl.getRefName(), c, user); CommitValidators commitValidators = commitValidatorsFactory.create(ctl, sshInfo, repo); @@ -2713,7 +2713,7 @@ public class ReceiveCommits { result.mergedIntoRef = refName; markChangeMergedByPush(db, result, result.changeCtl); hooks.doChangeMergedHook( - change, currentUser.getAccount(), result.newPatchSet, db, commit.getName()); + change, user.getAccount(), result.newPatchSet, db, commit.getName()); sendMergedEmail(result); return change.getKey(); } @@ -2762,7 +2762,7 @@ public class ReceiveCommits { msgBuf.append("."); ChangeMessage msg = new ChangeMessage( new ChangeMessage.Key(id, ChangeUtil.messageUUID(db)), - currentUser.getAccountId(), change.getLastUpdatedOn(), + user.getAccountId(), change.getLastUpdatedOn(), result.info.getKey()); msg.setMessage(msgBuf.toString()); @@ -2785,7 +2785,7 @@ public class ReceiveCommits { public void run() { try { final MergedSender cm = mergedSenderFactory.create(id); - cm.setFrom(currentUser.getAccountId()); + cm.setFrom(user.getAccountId()); cm.setPatchSet(result.newPatchSet, result.info); cm.send(); } catch (Exception e) { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/VisibleRefFilter.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/VisibleRefFilter.java index c7f8409aac..46638f03b0 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/VisibleRefFilter.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/VisibleRefFilter.java @@ -80,7 +80,7 @@ public class VisibleRefFilter extends AbstractAdvertiseRefsHook { Account.Id currAccountId; boolean canViewMetadata; if (projectCtl.getUser().isIdentifiedUser()) { - IdentifiedUser user = ((IdentifiedUser) projectCtl.getUser()); + IdentifiedUser user = projectCtl.getUser().asIdentifiedUser(); currAccountId = user.getAccountId(); canViewMetadata = user.getCapabilities().canAccessDatabase(); } else { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/validators/CommitValidators.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/validators/CommitValidators.java index 425a328369..a48260e461 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/validators/CommitValidators.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/validators/CommitValidators.java @@ -193,7 +193,7 @@ public class CommitValidators { this.canonicalWebUrl = canonicalWebUrl; this.installCommitMsgHookCommand = installCommitMsgHookCommand; this.sshInfo = sshInfo; - this.user = (IdentifiedUser) projectControl.getUser(); + this.user = projectControl.getUser().asIdentifiedUser(); } @Override @@ -316,7 +316,7 @@ public class CommitValidators { @Override public List onCommitReceived( CommitReceivedEvent receiveEvent) throws CommitValidationException { - IdentifiedUser currentUser = (IdentifiedUser) refControl.getUser(); + IdentifiedUser currentUser = refControl.getUser().asIdentifiedUser(); if (REFS_CONFIG.equals(refControl.getRefName())) { List messages = new LinkedList<>(); @@ -402,7 +402,7 @@ public class CommitValidators { @Override public List onCommitReceived( CommitReceivedEvent receiveEvent) throws CommitValidationException { - IdentifiedUser currentUser = (IdentifiedUser) refControl.getUser(); + IdentifiedUser currentUser = refControl.getUser().asIdentifiedUser(); final PersonIdent committer = receiveEvent.commit.getCommitterIdent(); final PersonIdent author = receiveEvent.commit.getAuthorIdent(); final ProjectControl projectControl = refControl.getProjectControl(); @@ -445,7 +445,7 @@ public class CommitValidators { @Override public List onCommitReceived( CommitReceivedEvent receiveEvent) throws CommitValidationException { - IdentifiedUser currentUser = (IdentifiedUser) refControl.getUser(); + IdentifiedUser currentUser = refControl.getUser().asIdentifiedUser(); final PersonIdent author = receiveEvent.commit.getAuthorIdent(); if (!currentUser.hasEmailAddress(author.getEmailAddress()) @@ -475,7 +475,7 @@ public class CommitValidators { @Override public List onCommitReceived( CommitReceivedEvent receiveEvent) throws CommitValidationException { - IdentifiedUser currentUser = (IdentifiedUser) refControl.getUser(); + IdentifiedUser currentUser = refControl.getUser().asIdentifiedUser(); final PersonIdent committer = receiveEvent.commit.getCommitterIdent(); if (!currentUser.hasEmailAddress(committer.getEmailAddress()) && !refControl.canForgeCommitter()) { @@ -561,7 +561,7 @@ public class CommitValidators { CommitReceivedEvent receiveEvent) throws CommitValidationException { if (refControl.getUser().isIdentifiedUser()) { - IdentifiedUser user = (IdentifiedUser) refControl.getUser(); + IdentifiedUser user = refControl.getUser().asIdentifiedUser(); String refname = receiveEvent.refName; ObjectId old = receiveEvent.commit.getParent(0); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/group/AddIncludedGroups.java b/gerrit-server/src/main/java/com/google/gerrit/server/group/AddIncludedGroups.java index 582cb4ae70..c274a372e6 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/group/AddIncludedGroups.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/group/AddIncludedGroups.java @@ -31,7 +31,6 @@ import com.google.gerrit.reviewdb.client.Account; import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gerrit.reviewdb.client.AccountGroupById; import com.google.gerrit.reviewdb.server.ReviewDb; -import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.account.GroupControl; import com.google.gerrit.server.account.GroupIncludeCache; import com.google.gerrit.server.group.AddIncludedGroups.Input; @@ -101,7 +100,7 @@ public class AddIncludedGroups implements RestModifyView { GroupControl control = resource.getControl(); Map newIncludedGroups = Maps.newHashMap(); List result = Lists.newLinkedList(); - Account.Id me = ((IdentifiedUser) control.getUser()).getAccountId(); + Account.Id me = control.getUser().getAccountId(); for (String includedGroup : input.groups) { GroupDescription.Basic d = groupsCollection.parse(includedGroup); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/group/DeleteIncludedGroups.java b/gerrit-server/src/main/java/com/google/gerrit/server/group/DeleteIncludedGroups.java index 3d99565aed..bde8fb7748 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/group/DeleteIncludedGroups.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/group/DeleteIncludedGroups.java @@ -29,7 +29,6 @@ import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gerrit.reviewdb.client.AccountGroupById; import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.CurrentUser; -import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.account.GroupControl; import com.google.gerrit.server.account.GroupIncludeCache; import com.google.gerrit.server.group.AddIncludedGroups.Input; @@ -110,7 +109,7 @@ public class DeleteIncludedGroups implements RestModifyView toRemoved) { - final Account.Id me = ((IdentifiedUser) self.get()).getAccountId(); + final Account.Id me = self.get().getAccountId(); auditService.dispatchDeleteGroupsFromGroup(me, toRemoved); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/group/DeleteMembers.java b/gerrit-server/src/main/java/com/google/gerrit/server/group/DeleteMembers.java index 3047994178..b14974b5e0 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/group/DeleteMembers.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/group/DeleteMembers.java @@ -27,7 +27,6 @@ import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gerrit.reviewdb.client.AccountGroupMember; import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.CurrentUser; -import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.account.AccountCache; import com.google.gerrit.server.account.AccountsCollection; import com.google.gerrit.server.account.GroupControl; @@ -97,7 +96,7 @@ public class DeleteMembers implements RestModifyView { } private void writeAudits(final List toRemove) { - final Account.Id me = ((IdentifiedUser) self.get()).getAccountId(); + final Account.Id me = self.get().getAccountId(); auditService.dispatchDeleteAccountsFromGroup(me, toRemove); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/AbstractChangeUpdate.java b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/AbstractChangeUpdate.java index 99dfd2ea87..fb4102732a 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/AbstractChangeUpdate.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/AbstractChangeUpdate.java @@ -78,7 +78,7 @@ public abstract class AbstractChangeUpdate extends VersionedMetaData { } public IdentifiedUser getUser() { - return (IdentifiedUser) ctl.getUser(); + return ctl.getUser().asIdentifiedUser(); } public PatchSet.Id getPatchSetId() { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeDraftUpdate.java b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeDraftUpdate.java index 05d5e31cbe..bd8f7977a1 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeDraftUpdate.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeDraftUpdate.java @@ -95,7 +95,7 @@ public class ChangeDraftUpdate extends AbstractChangeUpdate { this.commentsUtil = commentsUtil; checkState(ctl.getUser().isIdentifiedUser(), "Current user must be identified"); - IdentifiedUser user = (IdentifiedUser) ctl.getUser(); + IdentifiedUser user = ctl.getUser().asIdentifiedUser(); this.accountId = user.getAccountId(); this.changeNotes = getChangeNotes().load(); this.draftNotes = draftNotesFactory.create(ctl.getChange().getId(), diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchScriptFactory.java b/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchScriptFactory.java index 0f37bdc0b7..2169671827 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchScriptFactory.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchScriptFactory.java @@ -30,7 +30,6 @@ import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.CurrentUser; -import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.PatchLineCommentsUtil; import com.google.gerrit.server.account.AccountInfoCacheFactory; import com.google.gerrit.server.edit.ChangeEdit; @@ -316,7 +315,7 @@ public class PatchScriptFactory implements Callable { final CurrentUser user = control.getUser(); if (user.isIdentifiedUser()) { - final Account.Id me = ((IdentifiedUser) user).getAccountId(); + final Account.Id me = user.getAccountId(); switch (changeType) { case ADDED: case MODIFIED: diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java index 1579b99e04..5b4c00084d 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java @@ -27,7 +27,6 @@ import com.google.gerrit.reviewdb.client.PatchSetApproval; import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.CurrentUser; -import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.notedb.ChangeNotes; import com.google.gerrit.server.query.change.ChangeData; import com.google.gwtorm.server.OrmException; @@ -253,8 +252,8 @@ public class ChangeControl { /** Is this user the owner of the change? */ public boolean isOwner() { if (getUser().isIdentifiedUser()) { - final IdentifiedUser i = (IdentifiedUser) getUser(); - return i.getAccountId().equals(getChange().getOwner()); + Account.Id id = getUser().asIdentifiedUser().getAccountId(); + return id.equals(getChange().getOwner()); } return false; } @@ -269,8 +268,7 @@ public class ChangeControl { throws OrmException { if (getUser().isIdentifiedUser()) { Collection results = changeData(db, cd).reviewers().values(); - IdentifiedUser user = (IdentifiedUser) getUser(); - return results.contains(user.getAccountId()); + return results.contains(getUser().getAccountId()); } return false; } @@ -285,8 +283,7 @@ public class ChangeControl { // A user can always remove themselves. // if (getUser().isIdentifiedUser()) { - final IdentifiedUser i = (IdentifiedUser) getUser(); - if (i.getAccountId().equals(reviewer)) { + if (getUser().getAccountId().equals(reviewer)) { return true; // can remove self } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectControl.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectControl.java index 62a2b07656..9116dcc07b 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectControl.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectControl.java @@ -211,7 +211,7 @@ public class ProjectControl { public List get() { List r; if (user.isIdentifiedUser()) { - Set emails = ((IdentifiedUser) user).getEmailAddresses(); + Set emails = user.asIdentifiedUser().getEmailAddresses(); r = new ArrayList<>(emails.size() + 1); r.addAll(emails); } else { @@ -349,7 +349,7 @@ public class ProjectControl { if (! (user.isIdentifiedUser())) { return new Capable("Must be logged in to verify Contributor Agreement"); } - final IdentifiedUser iUser = (IdentifiedUser) user; + final IdentifiedUser iUser = user.asIdentifiedUser(); List okGroupIds = Lists.newArrayList(); for (ContributorAgreement ca : contributorAgreements) { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/PutConfig.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/PutConfig.java index e52904301f..724dc459b6 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/PutConfig.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/PutConfig.java @@ -32,7 +32,6 @@ import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.client.RefNames; import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.EnableSignedPush; -import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.config.AllProjectsNameProvider; import com.google.gerrit.server.config.PluginConfig; import com.google.gerrit.server.config.PluginConfigFactory; @@ -87,7 +86,7 @@ public class PutConfig implements RestModifyView { private final PluginConfigFactory cfgFactory; private final AllProjectsNameProvider allProjects; private final DynamicMap> views; - private final Provider currentUser; + private final Provider user; private final ChangeHooks hooks; @Inject @@ -102,7 +101,7 @@ public class PutConfig implements RestModifyView { AllProjectsNameProvider allProjects, DynamicMap> views, ChangeHooks hooks, - Provider currentUser) { + Provider user) { this.serverEnableSignedPush = serverEnableSignedPush; this.metaDataUpdateFactory = metaDataUpdateFactory; this.projectCache = projectCache; @@ -114,7 +113,7 @@ public class PutConfig implements RestModifyView { this.allProjects = allProjects; this.views = views; this.hooks = hooks; - this.currentUser = currentUser; + this.user = user; } @Override @@ -194,10 +193,9 @@ public class PutConfig implements RestModifyView { ObjectId commitRev = projectConfig.commit(md); // Only fire hook if project was actually changed. if (!Objects.equals(baseRev, commitRev)) { - IdentifiedUser user = (IdentifiedUser) currentUser.get(); hooks.doRefUpdatedHook( new Branch.NameKey(projectName, RefNames.REFS_CONFIG), - baseRev, commitRev, user.getAccount()); + baseRev, commitRev, user.get().asIdentifiedUser().getAccount()); } projectCache.evict(projectConfig.getProject()); gitMgr.setProjectDescription(projectName, p.getDescription()); @@ -214,7 +212,7 @@ public class PutConfig implements RestModifyView { ProjectState state = projectStateFactory.create(projectConfig); return new ConfigInfo(serverEnableSignedPush, - state.controlFor(currentUser.get()), config, pluginConfigEntries, + state.controlFor(user.get()), config, pluginConfigEntries, cfgFactory, allProjects, views); } catch (ConfigInvalidException err) { throw new ResourceConflictException("Cannot read project " + projectName, err); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/PutDescription.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/PutDescription.java index 1e267300b2..d589865d13 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/PutDescription.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/PutDescription.java @@ -67,7 +67,7 @@ public class PutDescription implements RestModifyView { input.id = Strings.emptyToNull(input.id); ProjectControl ctl = resource.getControl(); - IdentifiedUser user = (IdentifiedUser) ctl.getUser(); if (!ctl.isOwner()) { throw new AuthException("not project owner"); } @@ -105,7 +103,7 @@ class SetDefaultDashboard implements RestModifyView { if (!msg.endsWith("\n")) { msg += "\n"; } - md.setAuthor(user); + md.setAuthor(ctl.getUser().asIdentifiedUser()); md.setMessage(msg); config.commit(md); cache.evict(ctl.getProject()); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/SetParent.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/SetParent.java index 9eda671a6c..15c977f319 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/SetParent.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/SetParent.java @@ -71,7 +71,6 @@ public class SetParent implements RestModifyView { ResourceNotFoundException, UnprocessableEntityException, IOException { ProjectControl ctl = rsrc.getControl(); validateParentUpdate(ctl, input.parent, checkIfAdmin); - IdentifiedUser user = (IdentifiedUser) ctl.getUser(); try { MetaDataUpdate md = updateFactory.create(rsrc.getNameKey()); try { @@ -88,7 +87,7 @@ public class SetParent implements RestModifyView { } else if (!msg.endsWith("\n")) { msg += "\n"; } - md.setAuthor(user); + md.setAuthor(ctl.getUser().asIdentifiedUser()); md.setMessage(msg); config.commit(md); cache.evict(ctl.getProject()); @@ -109,7 +108,7 @@ public class SetParent implements RestModifyView { public void validateParentUpdate(final ProjectControl ctl, String newParent, boolean checkIfAdmin) throws AuthException, ResourceConflictException, UnprocessableEntityException { - IdentifiedUser user = (IdentifiedUser) ctl.getUser(); + IdentifiedUser user = ctl.getUser().asIdentifiedUser(); if (checkIfAdmin && !user.getCapabilities().canAdministrateServer()) { throw new AuthException("not administrator"); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java index 49a46b1555..f52edc1534 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java @@ -263,8 +263,7 @@ public class ChangeQueryBuilder extends QueryBuilder { Arguments asUser(Account.Id otherId) { try { CurrentUser u = self.get(); - if (u.isIdentifiedUser() - && otherId.equals(((IdentifiedUser) u).getAccountId())) { + if (u.isIdentifiedUser() && otherId.equals(u.getAccountId())) { return this; } } catch (ProvisionException e) { @@ -277,7 +276,7 @@ public class ChangeQueryBuilder extends QueryBuilder { try { CurrentUser u = getUser(); if (u.isIdentifiedUser()) { - return (IdentifiedUser) u; + return u.asIdentifiedUser(); } throw new QueryParseException(NotSignedInException.MESSAGE); } catch (ProvisionException e) { @@ -612,11 +611,7 @@ public class ChangeQueryBuilder extends QueryBuilder { Account.Id callerId; try { CurrentUser caller = args.self.get(); - if (caller.isIdentifiedUser()) { - callerId = ((IdentifiedUser) caller).getAccountId(); - } else { - callerId = null; - } + callerId = caller.isIdentifiedUser() ? caller.getAccountId() : null; } catch (ProvisionException e) { callerId = null; } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/IsStarredByPredicate.java b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/IsStarredByPredicate.java index b990091bd6..1ac2729681 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/IsStarredByPredicate.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/IsStarredByPredicate.java @@ -33,7 +33,7 @@ class IsStarredByPredicate extends OrPredicate implements ChangeDataSource { private static String describe(CurrentUser user) { if (user.isIdentifiedUser()) { - return ((IdentifiedUser) user).getAccountId().toString(); + return user.getAccountId().toString(); } return user.toString(); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/IsVisibleToPredicate.java b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/IsVisibleToPredicate.java index dc7a5796e8..856a559b38 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/IsVisibleToPredicate.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/IsVisibleToPredicate.java @@ -17,7 +17,6 @@ package com.google.gerrit.server.query.change; import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.CurrentUser; -import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.project.ChangeControl; import com.google.gerrit.server.project.NoSuchChangeException; import com.google.gerrit.server.query.OperatorPredicate; @@ -27,7 +26,7 @@ import com.google.inject.Provider; class IsVisibleToPredicate extends OperatorPredicate { private static String describe(CurrentUser user) { if (user.isIdentifiedUser()) { - return ((IdentifiedUser) user).getAccountId().toString(); + return user.getAccountId().toString(); } if (user instanceof SingleGroupUser) { return "group:" + user.getEffectiveGroups().getKnownGroups() // diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/IsWatchedByPredicate.java b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/IsWatchedByPredicate.java index 4b54cfdad7..44e0654eea 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/IsWatchedByPredicate.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/IsWatchedByPredicate.java @@ -18,7 +18,6 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import com.google.gerrit.reviewdb.client.AccountProjectWatch; import com.google.gerrit.server.CurrentUser; -import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.query.AndPredicate; import com.google.gerrit.server.query.Predicate; import com.google.gerrit.server.query.QueryBuilder; @@ -29,7 +28,7 @@ import java.util.List; class IsWatchedByPredicate extends AndPredicate { private static String describe(CurrentUser user) { if (user.isIdentifiedUser()) { - return ((IdentifiedUser) user).getAccountId().toString(); + return user.getAccountId().toString(); } return user.toString(); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/QueryChanges.java b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/QueryChanges.java index 3fed72a5eb..dfc0f75e98 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/QueryChanges.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/QueryChanges.java @@ -127,7 +127,7 @@ public class QueryChanges implements RestReadView { IdentifiedUser self = null; try { if (user.get().isIdentifiedUser()) { - self = (IdentifiedUser) user.get(); + self = user.get().asIdentifiedUser(); self.asyncStarredChanges(); } return query0(); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/util/ThreadLocalRequestContext.java b/gerrit-server/src/main/java/com/google/gerrit/server/util/ThreadLocalRequestContext.java index 853f305085..3e405a9fb9 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/util/ThreadLocalRequestContext.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/util/ThreadLocalRequestContext.java @@ -59,7 +59,7 @@ public class ThreadLocalRequestContext { @Provides IdentifiedUser provideCurrentUser(CurrentUser user) { if (user.isIdentifiedUser()) { - return (IdentifiedUser) user; + return user.asIdentifiedUser(); } throw new ProvisionException(NotSignedInException.MESSAGE, new NotSignedInException()); diff --git a/gerrit-server/src/main/java/gerrit/PRED_current_user_1.java b/gerrit-server/src/main/java/gerrit/PRED_current_user_1.java index a63b1e7133..a3e1a96d30 100644 --- a/gerrit-server/src/main/java/gerrit/PRED_current_user_1.java +++ b/gerrit-server/src/main/java/gerrit/PRED_current_user_1.java @@ -18,7 +18,6 @@ import com.google.gerrit.reviewdb.client.Account; import com.google.gerrit.rules.StoredValues; import com.google.gerrit.server.AnonymousUser; import com.google.gerrit.server.CurrentUser; -import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.PeerDaemonUser; import com.googlecode.prolog_cafe.exceptions.EvaluationException; @@ -54,7 +53,7 @@ public class PRED_current_user_1 extends Predicate.P1 { Term resultTerm; if (curUser.isIdentifiedUser()) { - Account.Id id = ((IdentifiedUser)curUser).getAccountId(); + Account.Id id = curUser.getAccountId(); resultTerm = new IntegerTerm(id.get()); } else if (curUser instanceof AnonymousUser) { resultTerm = anonymous; diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/BaseCommand.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/BaseCommand.java index 42dc5fd570..5c897e44f1 100644 --- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/BaseCommand.java +++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/BaseCommand.java @@ -89,7 +89,7 @@ public abstract class BaseCommand implements Command { private WorkQueue.Executor executor; @Inject - private Provider userProvider; + private Provider user; @Inject private Provider contextProvider; @@ -278,7 +278,7 @@ public abstract class BaseCommand implements Command { final TaskThunk tt = new TaskThunk(thunk); if (isAdminHighPriorityCommand() - && userProvider.get().getCapabilities().canAdministrateServer()) { + && user.get().getCapabilities().canAdministrateServer()) { // Admin commands should not block the main work threads (there // might be an interactive shell there), nor should they wait // for the main work threads. @@ -332,8 +332,8 @@ public abstract class BaseCommand implements Command { if (!(e instanceof UnloggedFailure)) { final StringBuilder m = new StringBuilder(); m.append("Internal server error"); - if (userProvider.get().isIdentifiedUser()) { - final IdentifiedUser u = (IdentifiedUser) userProvider.get(); + if (user.get().isIdentifiedUser()) { + final IdentifiedUser u = user.get().asIdentifiedUser(); m.append(" (user "); m.append(u.getAccount().getUserName()); m.append(" account "); @@ -398,8 +398,8 @@ public abstract class BaseCommand implements Command { StringBuilder m = new StringBuilder(); m.append(context.getCommandLine()); - if (userProvider.get().isIdentifiedUser()) { - IdentifiedUser u = (IdentifiedUser) userProvider.get(); + if (user.get().isIdentifiedUser()) { + IdentifiedUser u = user.get().asIdentifiedUser(); m.append(" (").append(u.getAccount().getUserName()).append(")"); } this.taskName = m.toString(); diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/SshLog.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/SshLog.java index bab8546546..3a8a1f5de1 100644 --- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/SshLog.java +++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/SshLog.java @@ -224,7 +224,7 @@ class SshLog implements LifecycleListener { String accountId = "-"; if (user != null && user.isIdentifiedUser()) { - IdentifiedUser u = (IdentifiedUser) user; + IdentifiedUser u = user.asIdentifiedUser(); userName = u.getAccount().getUserName(); accountId = "a/" + u.getAccountId().toString(); diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/SshScope.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/SshScope.java index 2caff4d8f1..e3455e3761 100644 --- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/SshScope.java +++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/SshScope.java @@ -81,9 +81,9 @@ public class SshScope { @Override public CurrentUser getUser() { - final CurrentUser user = session.getUser(); + CurrentUser user = session.getUser(); if (user != null && user.isIdentifiedUser()) { - IdentifiedUser identifiedUser = userFactory.create(((IdentifiedUser) user).getAccountId()); + IdentifiedUser identifiedUser = userFactory.create(user.getAccountId()); identifiedUser.setAccessPath(user.getAccessPath()); return identifiedUser; } diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/ShowConnections.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/ShowConnections.java index b5041adfc4..8ac98875ba 100644 --- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/ShowConnections.java +++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/ShowConnections.java @@ -181,7 +181,7 @@ final class ShowConnections extends SshCommand { final CurrentUser user = sd.getUser(); if (user != null && user.isIdentifiedUser()) { - IdentifiedUser u = (IdentifiedUser) user; + IdentifiedUser u = user.asIdentifiedUser(); if (!numeric) { String name = u.getAccount().getUserName();