Merge "ChangeRebuilder: Handle WIP changes"
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/rebuild/ChangeMessageEvent.java b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/rebuild/ChangeMessageEvent.java
index dc1c5e8..29528f9 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/rebuild/ChangeMessageEvent.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/rebuild/ChangeMessageEvent.java
@@ -43,6 +43,9 @@
Pattern.compile("^Topic changed from (.+) to (.+)$");
private static final Pattern TOPIC_REMOVED_REGEXP = Pattern.compile("^Topic (.+) removed$");
+ private static final Pattern WIP_SET_REGEXP = Pattern.compile("^Set Work In Progress$");
+ private static final Pattern WIP_UNSET_REGEXP = Pattern.compile("^Set Ready For Review$");
+
private final Change change;
private final Change noteDbChange;
private final Optional<Change.Status> status;
@@ -85,6 +88,7 @@
update.setChangeMessage(message.getMessage());
setPrivate(update);
setTopic(update);
+ setWorkInProgress(update);
if (status.isPresent()) {
Change.Status s = status.get();
@@ -156,6 +160,25 @@
}
}
+ private void setWorkInProgress(ChangeUpdate update) {
+ String msg = message.getMessage();
+ if (msg == null) {
+ return;
+ }
+ Matcher m = WIP_SET_REGEXP.matcher(msg);
+ if (m.matches()) {
+ update.setWorkInProgress(true);
+ noteDbChange.setWorkInProgress(true);
+ return;
+ }
+
+ m = WIP_UNSET_REGEXP.matcher(msg);
+ if (m.matches()) {
+ update.setWorkInProgress(false);
+ noteDbChange.setWorkInProgress(false);
+ }
+ }
+
@Override
protected void addToString(ToStringHelper helper) {
helper.add("message", message);
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/rebuild/FinalUpdatesEvent.java b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/rebuild/FinalUpdatesEvent.java
index d01b28b..55d5a31 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/rebuild/FinalUpdatesEvent.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/rebuild/FinalUpdatesEvent.java
@@ -60,6 +60,9 @@
if (change.isPrivate() != noteDbChange.isPrivate()) {
update.setPrivate(change.isPrivate());
}
+ if (change.isWorkInProgress() != noteDbChange.isWorkInProgress()) {
+ update.setWorkInProgress(change.isWorkInProgress());
+ }
if (change.getSubmissionId() != null && noteDbChange.getSubmissionId() == null) {
update.setSubmissionId(change.getSubmissionId());
}