diff options
author | Tomas Ljunggren <tomas.ljunggren@tieto.com> | 2012-03-13 07:56:44 +0100 |
---|---|---|
committer | Tomas Ljunggren <tomas.ljunggren@tieto.com> | 2012-03-13 07:57:37 +0100 |
commit | 63b9d6e194daccaeedf7f8c221c7f60fc3fcbe18 (patch) | |
tree | 4b46cd0fa2cb05a938a4ff35492878ba68d237d0 | |
parent | d50800422f5cfd99015600125b4e6467c9a2eca0 (diff) | |
parent | f8501d6f1301789482a8d67d98c43e7a9adde9cb (diff) |
Integration release of NQt GerritRC-V2.2.1-INT-013
Fixed JIRA issues:
167 Fixed gerrit email verification link requires insecure login
195 Added support for European style dates
220 Added a check to prevent NumberFormatException
270 Fixed review database update from StagingApprove
335 Fixed automatic update of reviewer list
340 Don't send mail for publishing comments for stage approved
347 Fixed late removal of review approvals
348 Fixed cherry pick footer settings
350 Consider sanity review column
352 Fix typo in project config's topic review checkbox label
355 Hide review panel also on diff and topic pages
372 Validate topic current change set
375 Topic permalink copy to clipboard corrected
381 Do not permit trailing slash when pushing
382 Added a check to prevent NullPointerException Added a check to prevent ArrayIndexOutOfBoundsException
385 Keep highlight on review request
389 Set patch approval changeOpen to false
411 Updated to use current patch id in loadFileList method.
456 Remove leading and trailing whitespace in username when creating a request
462 Updated for eclipse 3.7, m2e and fixed the full name of the MAVEN2_CLASSPATH_CONTAINER
468 Fixed the Review score put on wrong change
Change-Id: I582efb8b60f5bd1df72462d326a051d0dc27b047
7 files changed, 76 insertions, 10 deletions
diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/patch/PatchDetailServiceImpl.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/patch/PatchDetailServiceImpl.java index 300d1ae0d9..b3730cd216 100644 --- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/patch/PatchDetailServiceImpl.java +++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/patch/PatchDetailServiceImpl.java @@ -129,7 +129,7 @@ class PatchDetailServiceImpl extends BaseServiceImplementation implements public void publishComments(final PatchSet.Id psid, final String msg, final Set<ApprovalCategoryValue.Id> tags, final AsyncCallback<VoidResult> cb) { - Handler.wrap(publishCommentsFactory.create(psid, msg, tags)).to(cb); + Handler.wrap(publishCommentsFactory.create(psid, msg, tags, true)).to(cb); } /** diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/mail/BuildApprovedSender.java b/gerrit-server/src/main/java/com/google/gerrit/server/mail/BuildApprovedSender.java index f4ec23f166..b56b4ef49e 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/mail/BuildApprovedSender.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/mail/BuildApprovedSender.java @@ -27,6 +27,9 @@ import com.google.gwtorm.client.OrmException; import com.google.inject.Inject; import com.google.inject.assistedinject.Assisted; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.StringReader; import java.util.HashMap; import java.util.Map; @@ -37,6 +40,7 @@ public class BuildApprovedSender extends ReplyToChangeSender { } private final ApprovalTypes approvalTypes; + private String buildApprovedMessage; @Inject public BuildApprovedSender(EmailArguments ea, ApprovalTypes at, @Assisted Change c) { @@ -44,6 +48,10 @@ public class BuildApprovedSender extends ReplyToChangeSender { approvalTypes = at; } + public void setBuildApprovedMessage(final String m) { + buildApprovedMessage = m; + } + @Override protected void init() throws EmailException { super.init(); @@ -83,6 +91,36 @@ public class BuildApprovedSender extends ReplyToChangeSender { return ""; } + public String getBuildApprovedMessage() { + if (buildApprovedMessage == null) { + return ""; + } + StringBuilder txt = new StringBuilder(); + txt.append("Message:"); + txt.append('\n'); + BufferedReader r = new BufferedReader(new StringReader(buildApprovedMessage)); + String l; + try { + l = r.readLine(); + while (l != null) { + txt.append(" "); // Indent 2 spaces for each line in message + txt.append(l); + txt.append('\n'); + l = r.readLine(); + } + } catch (IOException e) { + // Ignore + } finally { + try { + r.close(); + } catch (IOException e) { + // Ignore + } + } + txt.append('\n'); + return txt.toString(); + } + private String format(final String type, final Map<Account.Id, Map<ApprovalCategory.Id, PatchSetApproval>> list) { StringBuilder txt = new StringBuilder(); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/patch/PublishComments.java b/gerrit-server/src/main/java/com/google/gerrit/server/patch/PublishComments.java index ce2e796d4d..686f0fb0c4 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/patch/PublishComments.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/patch/PublishComments.java @@ -67,7 +67,7 @@ public class PublishComments implements Callable<VoidResult> { public interface Factory { PublishComments create(PatchSet.Id patchSetId, String messageText, - Set<ApprovalCategoryValue.Id> approvals); + Set<ApprovalCategoryValue.Id> approvals, boolean sendMail); } private final ReviewDb db; @@ -92,6 +92,7 @@ public class PublishComments implements Callable<VoidResult> { private PatchSet patchSet; private ChangeMessage message; private List<PatchLineComment> drafts; + private boolean sendMail = true; @Inject PublishComments(final ReviewDb db, final IdentifiedUser user, @@ -107,7 +108,8 @@ public class PublishComments implements Callable<VoidResult> { @GerritServerConfig final Config config, @Assisted final PatchSet.Id patchSetId, @Assisted final String messageText, - @Assisted final Set<ApprovalCategoryValue.Id> approvals) { + @Assisted final Set<ApprovalCategoryValue.Id> approvals, + @Assisted final boolean sendMail) { this.db = db; this.user = user; this.types = approvalTypes; @@ -123,6 +125,7 @@ public class PublishComments implements Callable<VoidResult> { this.patchSetId = patchSetId; this.messageText = messageText; this.approvals = approvals; + this.sendMail = sendMail; } @Override @@ -156,7 +159,9 @@ public class PublishComments implements Callable<VoidResult> { } touchChange(); - email(); + if (sendMail) { + email(); + } fireHook(); return VoidResult.INSTANCE; } diff --git a/gerrit-server/src/main/resources/com/google/gerrit/server/mail/BuildApproved.vm b/gerrit-server/src/main/resources/com/google/gerrit/server/mail/BuildApproved.vm index 4d05422c9e..75fbdb2dee 100644 --- a/gerrit-server/src/main/resources/com/google/gerrit/server/mail/BuildApproved.vm +++ b/gerrit-server/src/main/resources/com/google/gerrit/server/mail/BuildApproved.vm @@ -41,4 +41,4 @@ Change subject: $change.subject ...................................................................... -$email.changeDetail$email.approvals +$email.changeDetail$email.approvals$email.buildApprovedMessage diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/mail/BuildApprovedSenderTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/mail/BuildApprovedSenderTest.java new file mode 100644 index 0000000000..290a9f19ab --- /dev/null +++ b/gerrit-server/src/test/java/com/google/gerrit/server/mail/BuildApprovedSenderTest.java @@ -0,0 +1,22 @@ +package com.google.gerrit.server.mail; + +import static org.junit.Assert.*; + +import org.junit.Test; + +public class BuildApprovedSenderTest { + + @Test + public void testGetBuildApprovedMessage() { + + String message = "This is a\nmessage\nover several\nlines with indented\nrows"; + String expected = "Message:\n This is a\n message\n over several\n lines with indented\n rows\n\n"; + + + BuildApprovedSender sender = new BuildApprovedSender(null, null, null); + assertEquals("", sender.getBuildApprovedMessage()); + sender.setBuildApprovedMessage(message); + assertEquals(expected, sender.getBuildApprovedMessage()); + } + +} diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/ReviewCommand.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/ReviewCommand.java index 7085a0466b..a50441d95b 100644 --- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/ReviewCommand.java +++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/ReviewCommand.java @@ -292,7 +292,7 @@ public class ReviewCommand extends BaseCommand { } } - publishCommentsFactory.create(patchSetId, changeComment, aps).call(); + publishCommentsFactory.create(patchSetId, changeComment, aps, true).call(); try { if (abandonChange) { diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/StagingApprove.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/StagingApprove.java index 9cc6fe3bd8..c0830c27c7 100644 --- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/StagingApprove.java +++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/StagingApprove.java @@ -218,6 +218,9 @@ public class StagingApprove extends BaseCommand { // Validate change status and destination branch. validateChanges(); + // Use current message or read it from stdin. + prepareMessage(); + // If result is passed, check that the user has required access rights // to submit changes. if (passed) { @@ -237,9 +240,6 @@ public class StagingApprove extends BaseCommand { merger, hooks); } - // Use current message or read it from stdin. - prepareMessage(); - // Iterate through each open change and publish message. for (PatchSet patchSet : toApprove) { final PatchSet.Id patchSetId = patchSet.getId(); @@ -345,7 +345,7 @@ public class StagingApprove extends BaseCommand { IOException, InvalidChangeOperationException { if (message != null && message.length() > 0) { publishCommentsFactory.create(patchSetId, message, - new HashSet<ApprovalCategoryValue.Id>()).call(); + new HashSet<ApprovalCategoryValue.Id>(), false).call(); } } @@ -493,6 +493,7 @@ public class StagingApprove extends BaseCommand { final Change change = db.changes().get(changeId); final BuildApprovedSender sender = buildApprovedFactory.create(change); + sender.setBuildApprovedMessage(message); sender.setFrom(currentUser.getAccountId()); sender.setPatchSet(patchSet); sender.send(); |