diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/MetaDataUpdate.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/MetaDataUpdate.java index dc08a6c4e9..43e09757a1 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/MetaDataUpdate.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/MetaDataUpdate.java @@ -19,6 +19,7 @@ import com.google.gerrit.server.GerritPersonIdent; import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.extensions.events.GitReferenceUpdated; import com.google.inject.Inject; +import com.google.inject.Provider; import com.google.inject.assistedinject.Assisted; import org.eclipse.jgit.errors.RepositoryNotFoundException; @@ -35,30 +36,34 @@ public class MetaDataUpdate { private final InternalFactory factory; private final GitRepositoryManager mgr; private final PersonIdent serverIdent; - private final PersonIdent userIdent; + private final Provider identifiedUser; @Inject User(InternalFactory factory, GitRepositoryManager mgr, - @GerritPersonIdent PersonIdent serverIdent, IdentifiedUser currentUser) { + @GerritPersonIdent PersonIdent serverIdent, + Provider identifiedUser) { this.factory = factory; this.mgr = mgr; this.serverIdent = serverIdent; - this.userIdent = currentUser.newCommitterIdent( // - serverIdent.getWhen(), // - serverIdent.getTimeZone()); + this.identifiedUser = identifiedUser; } public PersonIdent getUserPersonIdent() { - return userIdent; + return createPersonIdent(); } public MetaDataUpdate create(Project.NameKey name) throws RepositoryNotFoundException, IOException { MetaDataUpdate md = factory.create(name, mgr.openRepository(name)); - md.getCommitBuilder().setAuthor(userIdent); + md.getCommitBuilder().setAuthor(createPersonIdent()); md.getCommitBuilder().setCommitter(serverIdent); return md; } + + private PersonIdent createPersonIdent() { + return identifiedUser.get().newCommitterIdent( + serverIdent.getWhen(), serverIdent.getTimeZone()); + } } public static class Server { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/SetHead.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/SetHead.java index 3e7a42fc9e..2f8e26d767 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/SetHead.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/SetHead.java @@ -25,6 +25,7 @@ import com.google.gerrit.server.auth.AuthException; import com.google.gerrit.server.git.GitRepositoryManager; import com.google.gerrit.server.project.SetHead.Input; import com.google.inject.Inject; +import com.google.inject.Provider; import org.eclipse.jgit.errors.RepositoryNotFoundException; import org.eclipse.jgit.lib.Constants; @@ -40,10 +41,10 @@ public class SetHead implements RestModifyView { } private final GitRepositoryManager repoManager; - private final IdentifiedUser identifiedUser; + private final Provider identifiedUser; @Inject - SetHead(GitRepositoryManager repoManager, IdentifiedUser identifiedUser) { + SetHead(GitRepositoryManager repoManager, Provider identifiedUser) { this.repoManager = repoManager; this.identifiedUser = identifiedUser; } @@ -73,7 +74,7 @@ public class SetHead implements RestModifyView { if (!repo.getRef(Constants.HEAD).getTarget().getName().equals(ref)) { final RefUpdate u = repo.updateRef(Constants.HEAD, true); - u.setRefLogIdent(identifiedUser.newRefLogIdent()); + u.setRefLogIdent(identifiedUser.get().newRefLogIdent()); RefUpdate.Result res = u.link(ref); switch(res) { case NO_CHANGE: