Merge branch 'stable-2.14'
* stable-2.14:
Add config option to ignore drafts
Remove explicit package declaration in listener methods
Bind DraftPublishedListener
Update bazlets to use released API version 2.14
Change-Id: I5257d532d4261c2f833e1991eb9963df1ca0b997
diff --git a/WORKSPACE b/WORKSPACE
index 5716471..b8aa9d1 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -3,28 +3,28 @@
load("//:bazlets.bzl", "load_bazlets")
load_bazlets(
- commit = "3bec81727c69207e591ae1761d5a78d8ec418a0b",
+ commit = "8e0bb37977452a66141833370430f307e959acfb",
# local_path = "/home/<user>/projects/bazlets",
)
# Release Plugin API
-#load("@com_googlesource_gerrit_bazlets//:gerrit_api.bzl",
-# "gerrit_api")
+load("@com_googlesource_gerrit_bazlets//:gerrit_api.bzl",
+ "gerrit_api")
# Snapshot Plugin API
-load(
- "@com_googlesource_gerrit_bazlets//:gerrit_api_maven_local.bzl",
- "gerrit_api_maven_local",
-)
+#load(
+# "@com_googlesource_gerrit_bazlets//:gerrit_api_maven_local.bzl",
+# "gerrit_api_maven_local",
+#)
load(
"@com_googlesource_gerrit_bazlets//:gerrit_gwt.bzl",
"gerrit_gwt",
)
# Load release Plugin API
-# gerrit_api()
+gerrit_api()
# Load snapshot Plugin API
-gerrit_api_maven_local()
+# gerrit_api_maven_local()
gerrit_gwt()
diff --git a/src/main/java/com/googlesource/gerrit/plugins/reviewers/ChangeEventListener.java b/src/main/java/com/googlesource/gerrit/plugins/reviewers/ChangeEventListener.java
index f0419ab..9da4247 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/reviewers/ChangeEventListener.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/reviewers/ChangeEventListener.java
@@ -21,6 +21,8 @@
import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
import com.google.gerrit.common.errors.NoSuchGroupException;
+import com.google.gerrit.extensions.annotations.PluginName;
+import com.google.gerrit.extensions.client.ChangeStatus;
import com.google.gerrit.extensions.common.ChangeInfo;
import com.google.gerrit.extensions.events.DraftPublishedListener;
import com.google.gerrit.extensions.events.RevisionCreatedListener;
@@ -34,6 +36,7 @@
import com.google.gerrit.server.account.AccountByEmailCache;
import com.google.gerrit.server.account.AccountResolver;
import com.google.gerrit.server.account.GroupMembers;
+import com.google.gerrit.server.config.PluginConfigFactory;
import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.git.WorkQueue;
import com.google.gerrit.server.group.GroupsCollection;
@@ -76,6 +79,7 @@
private final ReviewersConfig.Factory configFactory;
private final Provider<CurrentUser> user;
private final ChangeQueryBuilder queryBuilder;
+ private final boolean ignoreDrafts;
@Inject
ChangeEventListener(
@@ -92,7 +96,9 @@
final ChangeData.Factory changeDataFactory,
final ReviewersConfig.Factory configFactory,
final Provider<CurrentUser> user,
- final ChangeQueryBuilder queryBuilder) {
+ final ChangeQueryBuilder queryBuilder,
+ final PluginConfigFactory cfgFactory,
+ @PluginName String pluginName) {
this.accountResolver = accountResolver;
this.byEmailCache = byEmailCache;
this.groupsCollection = groupsCollection;
@@ -107,18 +113,24 @@
this.configFactory = configFactory;
this.user = user;
this.queryBuilder = queryBuilder;
+ this.ignoreDrafts =
+ cfgFactory
+ .getGlobalPluginConfig(pluginName)
+ .getBoolean(pluginName, null, "ignoreDrafts", false);
}
@Override
- public void onRevisionCreated(
- com.google.gerrit.extensions.events.RevisionCreatedListener.Event event) {
+ public void onRevisionCreated(RevisionCreatedListener.Event event) {
ChangeInfo c = event.getChange();
+ if (ignoreDrafts && c.status == ChangeStatus.DRAFT) {
+ log.debug("Ignoring draft change");
+ return;
+ }
onEvent(new Project.NameKey(c.project), c._number, event.getWho().email);
}
@Override
- public void onDraftPublished(
- com.google.gerrit.extensions.events.DraftPublishedListener.Event event) {
+ public void onDraftPublished(DraftPublishedListener.Event event) {
ChangeInfo c = event.getChange();
onEvent(new Project.NameKey(c.project), c._number, event.getWho().email);
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/reviewers/Module.java b/src/main/java/com/googlesource/gerrit/plugins/reviewers/Module.java
index 98dad1b..0764524 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/reviewers/Module.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/reviewers/Module.java
@@ -18,6 +18,7 @@
import com.google.gerrit.extensions.annotations.PluginName;
import com.google.gerrit.extensions.config.FactoryModule;
+import com.google.gerrit.extensions.events.DraftPublishedListener;
import com.google.gerrit.extensions.events.RevisionCreatedListener;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.extensions.restapi.RestApiModule;
@@ -52,6 +53,7 @@
}
DynamicSet.bind(binder(), RevisionCreatedListener.class).to(ChangeEventListener.class);
+ DynamicSet.bind(binder(), DraftPublishedListener.class).to(ChangeEventListener.class);
factory(DefaultReviewers.Factory.class);
factory(ReviewersConfig.Factory.class);
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md
index 6782350..5fe2cb8 100644
--- a/src/main/resources/Documentation/config.md
+++ b/src/main/resources/Documentation/config.md
@@ -8,6 +8,7 @@
[reviewers]
enableREST = true
enableUI = false
+ ignoreDrafts = true
```
reviewers.enableREST
@@ -18,6 +19,11 @@
: Enable the UI. When set to false, the 'Reviewers' menu is not displayed
on the project screen. Defaults to true, or false when `enableREST` is false.
+reviewers.ignoreDrafts
+: Ignore draft changes. When set to true draft changes are not considered when
+ adding reviewers. Defaults to false. To ignore drafts on a per-project basis
+ set this value to false and add "-status:draft" to filter in relevant projects.
+
Per project configuration of the @PLUGIN@ plugin is done in the
`reviewers.config` file of the project. Missing values are inherited