From cff7ccfc20f775dff4d7f76cb9bf2a7766b071ea Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 11 Apr 2014 13:48:16 -0400
Subject: [PATCH] Build with Java 7
---
src/main/java/com/gitblit/tickets/TicketNotifier.java | 111 ++++++++++++++++++++++++++++++-------------------------
1 files changed, 61 insertions(+), 50 deletions(-)
diff --git a/src/main/java/com/gitblit/tickets/TicketNotifier.java b/src/main/java/com/gitblit/tickets/TicketNotifier.java
index b4c3bae..48fe051 100644
--- a/src/main/java/com/gitblit/tickets/TicketNotifier.java
+++ b/src/main/java/com/gitblit/tickets/TicketNotifier.java
@@ -174,52 +174,13 @@
fieldExclusions.addAll(Arrays.asList(Field.watchers, Field.voters));
StringBuilder sb = new StringBuilder();
- boolean newTicket = false;
+ boolean newTicket = lastChange.isStatusChange() && Status.New == lastChange.getStatus();
boolean isFastForward = true;
List<RevCommit> commits = null;
DiffStat diffstat = null;
String pattern;
- if (lastChange.isStatusChange()) {
- Status state = lastChange.getStatus();
- switch (state) {
- case New:
- // new ticket
- newTicket = true;
- fieldExclusions.add(Field.status);
- fieldExclusions.add(Field.title);
- fieldExclusions.add(Field.body);
- if (lastChange.hasPatchset()) {
- pattern = "**{0}** is proposing a change.";
- } else {
- pattern = "**{0}** created this ticket.";
- }
- sb.append(MessageFormat.format(pattern, user.getDisplayName()));
- break;
- default:
- // some form of resolved
- if (lastChange.hasField(Field.mergeSha)) {
- // closed by push (merged patchset)
- pattern = "**{0}** closed this ticket by pushing {1} to {2}.";
-
- // identify patch that closed the ticket
- String merged = ticket.mergeSha;
- for (Patchset patchset : ticket.getPatchsets()) {
- if (patchset.tip.equals(ticket.mergeSha)) {
- merged = patchset.toString();
- break;
- }
- }
- sb.append(MessageFormat.format(pattern, user.getDisplayName(), merged, ticket.mergeTo));
- } else {
- // workflow status change by user
- pattern = "**{0}** changed the status of this ticket to **{1}**.";
- sb.append(MessageFormat.format(pattern, user.getDisplayName(), lastChange.getStatus().toString().toUpperCase()));
- }
- break;
- }
- sb.append(HARD_BRK);
- } else if (lastChange.hasPatchset()) {
+ if (lastChange.hasPatchset()) {
// patchset uploaded
Patchset patchset = lastChange.patchset;
String base = "";
@@ -246,16 +207,27 @@
repo.close();
}
- // describe the patchset
String compareUrl = ticketService.getCompareUrl(ticket, base, patchset.tip);
- if (patchset.isFF()) {
- pattern = "**{0}** added {1} {2} to patchset {3}.";
- sb.append(MessageFormat.format(pattern, user.getDisplayName(), patchset.added, patchset.added == 1 ? "commit" : "commits", patchset.number));
+
+ if (newTicket) {
+ // new proposal
+ pattern = "**{0}** is proposing a change.";
+ sb.append(MessageFormat.format(pattern, user.getDisplayName()));
+ fieldExclusions.add(Field.status);
+ fieldExclusions.add(Field.title);
+ fieldExclusions.add(Field.body);
} else {
- pattern = "**{0}** uploaded patchset {1}. *({2})*";
- sb.append(MessageFormat.format(pattern, user.getDisplayName(), patchset.number, patchset.type.toString().toUpperCase()));
+ // describe the patchset
+ if (patchset.isFF()) {
+ pattern = "**{0}** added {1} {2} to patchset {3}.";
+ sb.append(MessageFormat.format(pattern, user.getDisplayName(), patchset.added, patchset.added == 1 ? "commit" : "commits", patchset.number));
+ } else {
+ pattern = "**{0}** uploaded patchset {1}. *({2})*";
+ sb.append(MessageFormat.format(pattern, user.getDisplayName(), patchset.number, patchset.type.toString().toUpperCase()));
+ }
}
sb.append(HARD_BRK);
+
sb.append(MessageFormat.format("{0} {1}, {2} {3}, <span style=\"color:darkgreen;\">+{4} insertions</span>, <span style=\"color:darkred;\">-{5} deletions</span> from {6}. [compare]({7})",
commits.size(), commits.size() == 1 ? "commit" : "commits",
diffstat.paths.size(),
@@ -275,6 +247,32 @@
break;
default:
break;
+ }
+ sb.append(HARD_BRK);
+ } else if (lastChange.isStatusChange()) {
+ if (newTicket) {
+ fieldExclusions.add(Field.status);
+ fieldExclusions.add(Field.title);
+ fieldExclusions.add(Field.body);
+ pattern = "**{0}** created this ticket.";
+ sb.append(MessageFormat.format(pattern, user.getDisplayName()));
+ } else if (lastChange.hasField(Field.mergeSha)) {
+ // closed by merged
+ pattern = "**{0}** closed this ticket by merging {1} to {2}.";
+
+ // identify patchset that closed the ticket
+ String merged = ticket.mergeSha;
+ for (Patchset patchset : ticket.getPatchsets()) {
+ if (patchset.tip.equals(ticket.mergeSha)) {
+ merged = patchset.toString();
+ break;
+ }
+ }
+ sb.append(MessageFormat.format(pattern, user.getDisplayName(), merged, ticket.mergeTo));
+ } else {
+ // workflow status change by user
+ pattern = "**{0}** changed the status of this ticket to **{1}**.";
+ sb.append(MessageFormat.format(pattern, user.getDisplayName(), lastChange.getStatus().toString().toUpperCase()));
}
sb.append(HARD_BRK);
} else if (lastChange.hasReview()) {
@@ -491,6 +489,7 @@
instructions = instructions.replace("${ticketRef}", ticketBranch);
instructions = instructions.replace("${patchsetRef}", patchsetBranch);
instructions = instructions.replace("${reviewBranch}", reviewBranch);
+ instructions = instructions.replace("${ticketBranch}", ticketBranch);
return instructions;
}
@@ -521,11 +520,18 @@
//
// Direct TO recipients
+ // reporter & responsible
//
+ Set<String> tos = new TreeSet<String>();
+ tos.add(ticket.createdBy);
+ if (!StringUtils.isEmpty(ticket.responsible)) {
+ tos.add(ticket.responsible);
+ }
+
Set<String> toAddresses = new TreeSet<String>();
- for (String name : ticket.getParticipants()) {
+ for (String name : tos) {
UserModel user = userManager.getUserModel(name);
- if (user != null) {
+ if (user != null && !user.disabled) {
if (!StringUtils.isEmpty(user.emailAddress)) {
if (user.canView(repository)) {
toAddresses.add(user.emailAddress);
@@ -543,6 +549,11 @@
// CC recipients
//
Set<String> ccs = new TreeSet<String>();
+
+ // repository owners
+ if (!ArrayUtils.isEmpty(repository.owners)) {
+ tos.addAll(repository.owners);
+ }
// cc users mentioned in last comment
Change lastChange = ticket.changes.get(ticket.changes.size() - 1);
@@ -563,7 +574,7 @@
Set<String> ccAddresses = new TreeSet<String>();
for (String name : ccs) {
UserModel user = userManager.getUserModel(name);
- if (user != null) {
+ if (user != null && !user.disabled) {
if (!StringUtils.isEmpty(user.emailAddress)) {
if (user.canView(repository)) {
ccAddresses.add(user.emailAddress);
--
Gitblit v1.9.1