Merge "Expose RevWalk in CommitReceivedEvent"
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 9d7f4cf..8321c4e 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
@@ -516,16 +516,18 @@
RefControl refControl =
projectControlFactory.controlFor(ctx.getProject(), ctx.getUser()).controlForRef(refName);
String refName = psId.toRefName();
- CommitReceivedEvent event =
+ try (CommitReceivedEvent event =
new CommitReceivedEvent(
new ReceiveCommand(ObjectId.zeroId(), commit.getId(), refName),
refControl.getProjectControl().getProject(),
change.getDest().get(),
+ ctx.getRevWalk().getObjectReader(),
commit,
- ctx.getIdentifiedUser());
- commitValidatorsFactory
- .create(validatePolicy, refControl, new NoSshInfo(), ctx.getRepository())
- .validate(event);
+ ctx.getIdentifiedUser())) {
+ commitValidatorsFactory
+ .create(validatePolicy, refControl, new NoSshInfo(), ctx.getRepository())
+ .validate(event);
+ }
} catch (CommitValidationException e) {
throw new ResourceConflictException(e.getFullMessage());
} catch (NoSuchProjectException e) {
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 b656969..b5089f6 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
@@ -311,7 +311,7 @@
}
String refName = getPatchSetId().toRefName();
- CommitReceivedEvent event =
+ try (CommitReceivedEvent event =
new CommitReceivedEvent(
new ReceiveCommand(
ObjectId.zeroId(),
@@ -319,10 +319,9 @@
refName.substring(0, refName.lastIndexOf('/') + 1) + "new"),
origCtl.getProjectControl().getProject(),
origCtl.getRefControl().getRefName(),
+ ctx.getRevWalk().getObjectReader(),
commit,
- ctx.getIdentifiedUser());
-
- try {
+ ctx.getIdentifiedUser())) {
commitValidatorsFactory
.create(validatePolicy, origCtl.getRefControl(), new NoSshInfo(), ctx.getRepository())
.validate(event);
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/events/CommitReceivedEvent.java b/gerrit-server/src/main/java/com/google/gerrit/server/events/CommitReceivedEvent.java
index 17fc52b..c0f9c29 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/events/CommitReceivedEvent.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/events/CommitReceivedEvent.java
@@ -16,14 +16,19 @@
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.IdentifiedUser;
+import java.io.IOException;
+import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.ObjectReader;
import org.eclipse.jgit.revwalk.RevCommit;
+import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.transport.ReceiveCommand;
-public class CommitReceivedEvent extends RefEvent {
+public class CommitReceivedEvent extends RefEvent implements AutoCloseable {
static final String TYPE = "commit-received";
public ReceiveCommand command;
public Project project;
public String refName;
+ public RevWalk revWalk;
public RevCommit commit;
public IdentifiedUser user;
@@ -35,14 +40,18 @@
ReceiveCommand command,
Project project,
String refName,
- RevCommit commit,
- IdentifiedUser user) {
+ ObjectReader reader,
+ ObjectId commitId,
+ IdentifiedUser user)
+ throws IOException {
this();
this.command = command;
this.project = project;
this.refName = refName;
- this.commit = commit;
+ this.revWalk = new RevWalk(reader);
+ this.commit = revWalk.parseCommit(commitId);
this.user = user;
+ revWalk.parseBody(commit);
}
@Override
@@ -54,4 +63,9 @@
public String getRefName() {
return refName;
}
+
+ @Override
+ public void close() {
+ revWalk.close();
+ }
}
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 3cf4914..189df45 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
@@ -2763,8 +2763,6 @@
RevCommit c = rw.parseCommit(id);
rw.parseBody(c);
- CommitReceivedEvent receiveEvent =
- new CommitReceivedEvent(cmd, project, ctl.getRefName(), c, user);
CommitValidators.Policy policy;
if (magicBranch != null
@@ -2775,7 +2773,8 @@
policy = CommitValidators.Policy.RECEIVE_COMMITS;
}
- try {
+ try (CommitReceivedEvent receiveEvent =
+ new CommitReceivedEvent(cmd, project, ctl.getRefName(), rw.getObjectReader(), c, user)) {
messages.addAll(
commitValidatorsFactory.create(policy, ctl, sshInfo, repo).validate(receiveEvent));
} catch (CommitValidationException e) {