summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn O. Pearce <sop@google.com>2009-03-19 14:09:38 -0700
committerShawn O. Pearce <sop@google.com>2009-03-19 14:09:38 -0700
commit1ade22ca8852e25fb2175a94829416f309c2f60d (patch)
treec183ab3d37d3d7cba48713f36cff4f8c6d3731d6
parent20c399d0ea1acda04b3cdfbafef5109a056290a6 (diff)
BCC any user who has starred a change when sending related emails
If the user has starred the change, they are quite likely interested in seeing updates to it, and following its progress. BCC them on any emails we generate so they can be kept current. Signed-off-by: Shawn O. Pearce <sop@google.com>
-rw-r--r--src/main/java/com/google/gerrit/client/reviewdb/StarredChangeAccess.java3
-rw-r--r--src/main/java/com/google/gerrit/server/ChangeMail.java19
-rw-r--r--src/main/webapp/WEB-INF/sql/query_index.sql3
-rw-r--r--src/main/webapp/WEB-INF/sql/upgrade006_007.sql2
4 files changed, 27 insertions, 0 deletions
diff --git a/src/main/java/com/google/gerrit/client/reviewdb/StarredChangeAccess.java b/src/main/java/com/google/gerrit/client/reviewdb/StarredChangeAccess.java
index 98e932855c..8c249593a0 100644
--- a/src/main/java/com/google/gerrit/client/reviewdb/StarredChangeAccess.java
+++ b/src/main/java/com/google/gerrit/client/reviewdb/StarredChangeAccess.java
@@ -27,4 +27,7 @@ public interface StarredChangeAccess extends
@Query("WHERE key.accountId = ?")
ResultSet<StarredChange> byAccount(Account.Id id) throws OrmException;
+
+ @Query("WHERE key.changeId = ?")
+ ResultSet<StarredChange> byChange(Change.Id id) throws OrmException;
}
diff --git a/src/main/java/com/google/gerrit/server/ChangeMail.java b/src/main/java/com/google/gerrit/server/ChangeMail.java
index e9370d9ff2..1b1d668e43 100644
--- a/src/main/java/com/google/gerrit/server/ChangeMail.java
+++ b/src/main/java/com/google/gerrit/server/ChangeMail.java
@@ -27,6 +27,7 @@ import com.google.gerrit.client.reviewdb.PatchSet;
import com.google.gerrit.client.reviewdb.PatchSetInfo;
import com.google.gerrit.client.reviewdb.Project;
import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.reviewdb.StarredChange;
import com.google.gerrit.client.reviewdb.UserIdentity;
import com.google.gerrit.client.rpc.Common;
import com.google.gwtorm.client.OrmException;
@@ -199,6 +200,7 @@ public class ChangeMail {
return;
}
newChangeCc();
+ starredTo();
body.append("Uploaded replacement patch set ");
body.append(patchSet.getPatchSetId());
@@ -260,6 +262,7 @@ public class ChangeMail {
initInReplyToChange();
commentTo();
+ starredTo();
send();
}
}
@@ -320,6 +323,7 @@ public class ChangeMail {
initInReplyToChange();
submittedTo();
+ starredTo();
send();
}
}
@@ -355,6 +359,7 @@ public class ChangeMail {
initInReplyToChange();
commentTo();
+ starredTo();
send();
}
}
@@ -500,6 +505,20 @@ public class ChangeMail {
}
}
+ private void starredTo() throws MessagingException {
+ try {
+ // BCC anyone else who has starred this change.
+ //
+ for (StarredChange w : db.starredChanges().byChange(change.getId())) {
+ add(RecipientType.BCC, w.getAccountId());
+ }
+ } catch (OrmException err) {
+ // Just don't CC everyone. Better to send a partial message to those
+ // we already have queued up then to fail deliver entirely to people
+ // who have a lower interest in the change.
+ }
+ }
+
private boolean begin(final String messageClass) throws MessagingException {
if (transport != null) {
msg = new MimeMessage(transport);
diff --git a/src/main/webapp/WEB-INF/sql/query_index.sql b/src/main/webapp/WEB-INF/sql/query_index.sql
index 012a69fbc3..3eb8df1f78 100644
--- a/src/main/webapp/WEB-INF/sql/query_index.sql
+++ b/src/main/webapp/WEB-INF/sql/query_index.sql
@@ -202,3 +202,6 @@ ON project_rights (category_id);
-- *********************************************************************
-- StarredChangeAccess
-- @PrimaryKey covers: byAccount
+
+CREATE INDEX starred_changes_byChange
+ON starred_changes (change_id);
diff --git a/src/main/webapp/WEB-INF/sql/upgrade006_007.sql b/src/main/webapp/WEB-INF/sql/upgrade006_007.sql
index 1f2a872f25..0187db693c 100644
--- a/src/main/webapp/WEB-INF/sql/upgrade006_007.sql
+++ b/src/main/webapp/WEB-INF/sql/upgrade006_007.sql
@@ -17,5 +17,7 @@ CREATE INDEX account_project_watches_ntSub
ON account_project_watches (project_id)
WHERE notify_submitted_changes = 'Y';
+CREATE INDEX starred_changes_byChange
+ON starred_changes (change_id);
UPDATE schema_version SET version_nbr = 7;