Revert "Simplify [ReceivePack]MessageSender logic"

This reverts commit 7c4f0c3f30.

Reason for revert: Google uses a different MessageSender implementation
internally.

The rebased version of this revert keeps the cosmetic variable
renamings.

Change-Id: Ieda44268c38819dd887e9563effc794e278e6810
This commit is contained in:
Dave Borowitz
2018-08-02 17:41:51 +00:00
parent 6f0b8d70b9
commit e81ce714a0
5 changed files with 24 additions and 5 deletions

View File

@@ -331,7 +331,7 @@ class InProcessProtocol extends TestProtocol<Context> {
} }
AsyncReceiveCommits arc = AsyncReceiveCommits arc =
factory.create(projectState, identifiedUser, db, ImmutableSetMultimap.of()); factory.create(projectState, identifiedUser, db, null, ImmutableSetMultimap.of());
if (arc.canUpload() != Capable.OK) { if (arc.canUpload() != Capable.OK) {
throw new ServiceNotAuthorizedException(); throw new ServiceNotAuthorizedException();
} }

View File

@@ -309,7 +309,7 @@ public class GitOverHttpServlet extends GitServlet {
AsyncReceiveCommits arc = AsyncReceiveCommits arc =
factory.create( factory.create(
state, userProvider.get().asIdentifiedUser(), db, ImmutableSetMultimap.of()); state, userProvider.get().asIdentifiedUser(), db, null, ImmutableSetMultimap.of());
ReceivePack rp = arc.getReceivePack(); ReceivePack rp = arc.getReceivePack();
req.setAttribute(ATT_ARC, arc); req.setAttribute(ATT_ARC, arc);
return rp; return rp;

View File

@@ -16,6 +16,7 @@ package com.google.gerrit.server.git.receive;
import com.google.common.collect.SetMultimap; import com.google.common.collect.SetMultimap;
import com.google.common.flogger.FluentLogger; import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.Capable; import com.google.gerrit.common.data.Capable;
import com.google.gerrit.extensions.restapi.AuthException; import com.google.gerrit.extensions.restapi.AuthException;
import com.google.gerrit.extensions.restapi.ResourceConflictException; import com.google.gerrit.extensions.restapi.ResourceConflictException;
@@ -81,6 +82,7 @@ public class AsyncReceiveCommits implements PreReceiveHook {
ProjectState projectState, ProjectState projectState,
IdentifiedUser user, IdentifiedUser user,
Repository repository, Repository repository,
@Nullable MessageSender messageSender,
SetMultimap<ReviewerStateInternal, Account.Id> extraReviewers); SetMultimap<ReviewerStateInternal, Account.Id> extraReviewers);
} }
@@ -114,6 +116,7 @@ public class AsyncReceiveCommits implements PreReceiveHook {
receiveCommits = receiveCommits =
factory.create(projectState, user, receivePack, allRefsWatcher, extraReviewers); factory.create(projectState, user, receivePack, allRefsWatcher, extraReviewers);
receiveCommits.init(); receiveCommits.init();
receiveCommits.setMessageSender(messageSender);
progress = new MultiProgressMonitor(new MessageSenderOutputStream(), "Processing changes"); progress = new MultiProgressMonitor(new MessageSenderOutputStream(), "Processing changes");
} }
@@ -180,6 +183,7 @@ public class AsyncReceiveCommits implements PreReceiveHook {
private final ProjectState projectState; private final ProjectState projectState;
private final IdentifiedUser user; private final IdentifiedUser user;
private final Repository repo; private final Repository repo;
private final MessageSender messageSender;
private final SetMultimap<ReviewerStateInternal, Account.Id> extraReviewers; private final SetMultimap<ReviewerStateInternal, Account.Id> extraReviewers;
private final AllRefsWatcher allRefsWatcher; private final AllRefsWatcher allRefsWatcher;
@@ -198,6 +202,7 @@ public class AsyncReceiveCommits implements PreReceiveHook {
@Assisted ProjectState projectState, @Assisted ProjectState projectState,
@Assisted IdentifiedUser user, @Assisted IdentifiedUser user,
@Assisted Repository repo, @Assisted Repository repo,
@Assisted @Nullable MessageSender messageSender,
@Assisted SetMultimap<ReviewerStateInternal, Account.Id> extraReviewers) @Assisted SetMultimap<ReviewerStateInternal, Account.Id> extraReviewers)
throws PermissionBackendException { throws PermissionBackendException {
this.factory = factory; this.factory = factory;
@@ -209,6 +214,7 @@ public class AsyncReceiveCommits implements PreReceiveHook {
this.projectState = projectState; this.projectState = projectState;
this.user = user; this.user = user;
this.repo = repo; this.repo = repo;
this.messageSender = messageSender;
this.extraReviewers = extraReviewers; this.extraReviewers = extraReviewers;
Project.NameKey projectName = projectState.getNameKey(); Project.NameKey projectName = projectState.getNameKey();

View File

@@ -256,19 +256,23 @@ class ReceiveCommits {
SetMultimap<ReviewerStateInternal, Account.Id> extraReviewers); SetMultimap<ReviewerStateInternal, Account.Id> extraReviewers);
} }
public class MessageSender { private class ReceivePackMessageSender implements MessageSender {
@Override
public void sendMessage(String what) { public void sendMessage(String what) {
receivePack.sendMessage(what); receivePack.sendMessage(what);
} }
@Override
public void sendError(String what) { public void sendError(String what) {
receivePack.sendError(what); receivePack.sendError(what);
} }
@Override
public void sendBytes(byte[] what) { public void sendBytes(byte[] what) {
sendBytes(what, 0, what.length); sendBytes(what, 0, what.length);
} }
@Override
public void sendBytes(byte[] what, int off, int len) { public void sendBytes(byte[] what, int off, int len) {
try { try {
receivePack.getMessageOutputStream().write(what, off, len); receivePack.getMessageOutputStream().write(what, off, len);
@@ -277,6 +281,7 @@ class ReceiveCommits {
} }
} }
@Override
public void flush() { public void flush() {
try { try {
receivePack.getMessageOutputStream().flush(); receivePack.getMessageOutputStream().flush();
@@ -510,7 +515,7 @@ class ReceiveCommits {
projectState.is(BooleanProjectConfig.CREATE_NEW_CHANGE_FOR_ALL_NOT_IN_TARGET); projectState.is(BooleanProjectConfig.CREATE_NEW_CHANGE_FOR_ALL_NOT_IN_TARGET);
// Handles for outputting back over the wire to the end user. // Handles for outputting back over the wire to the end user.
messageSender = new MessageSender(); messageSender = new ReceivePackMessageSender();
} }
void init() { void init() {
@@ -519,7 +524,15 @@ class ReceiveCommits {
} }
} }
/** Set a message sender for this operation. */
void setMessageSender(MessageSender ms) {
messageSender = ms != null ? ms : new ReceivePackMessageSender();
}
MessageSender getMessageSender() { MessageSender getMessageSender() {
if (messageSender == null) {
setMessageSender(null);
}
return messageSender; return messageSender;
} }

View File

@@ -88,7 +88,7 @@ final class Receive extends AbstractGitCommand {
throw new Failure(1, "fatal: unable to check permissions " + e); throw new Failure(1, "fatal: unable to check permissions " + e);
} }
AsyncReceiveCommits arc = factory.create(projectState, currentUser, repo, reviewers); AsyncReceiveCommits arc = factory.create(projectState, currentUser, repo, null, reviewers);
try { try {
Capable r = arc.canUpload(); Capable r = arc.canUpload();