Merge "Remove unneeded lit dependency"
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 20b09be..c34baf0 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/reviewers/Module.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/reviewers/Module.java
@@ -81,7 +81,7 @@
             @Override
             protected void configure() {
               get(PROJECT_KIND, "reviewers").to(GetReviewers.class);
-              put(PROJECT_KIND, "reviewers").to(PutReviewers.class);
+              post(PROJECT_KIND, "reviewers").to(PostReviewers.class);
             }
           });
     }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/reviewers/PutReviewers.java b/src/main/java/com/googlesource/gerrit/plugins/reviewers/PostReviewers.java
similarity index 96%
rename from src/main/java/com/googlesource/gerrit/plugins/reviewers/PutReviewers.java
rename to src/main/java/com/googlesource/gerrit/plugins/reviewers/PostReviewers.java
index 58ae003..c65e406 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/reviewers/PutReviewers.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/reviewers/PostReviewers.java
@@ -44,7 +44,7 @@
 import com.google.inject.Inject;
 import com.google.inject.Provider;
 import com.google.inject.Singleton;
-import com.googlesource.gerrit.plugins.reviewers.PutReviewers.Input;
+import com.googlesource.gerrit.plugins.reviewers.PostReviewers.Input;
 import com.googlesource.gerrit.plugins.reviewers.config.FiltersFactory;
 import com.googlesource.gerrit.plugins.reviewers.config.ForProject;
 import java.io.IOException;
@@ -53,9 +53,9 @@
 import org.eclipse.jgit.errors.ConfigInvalidException;
 import org.eclipse.jgit.errors.RepositoryNotFoundException;
 
-/** PUT REST end-point that removes or adds a reviewer to a {@link ReviewerFilter}. */
+/** POST REST end-point that removes or adds a reviewer to a {@link ReviewerFilter}. */
 @Singleton
-class PutReviewers implements RestModifyView<ProjectResource, Input> {
+class PostReviewers implements RestModifyView<ProjectResource, Input> {
   private static final FluentLogger logger = FluentLogger.forEnclosingClass();
 
   protected static class Input {
@@ -80,7 +80,7 @@
   private final PermissionBackend permissionBackend;
 
   @Inject
-  PutReviewers(
+  PostReviewers(
       @PluginName String pluginName,
       FiltersFactory filters,
       ForProject.Factory forProjectFactory,
diff --git a/src/main/java/com/googlesource/gerrit/plugins/reviewers/ReviewersResolver.java b/src/main/java/com/googlesource/gerrit/plugins/reviewers/ReviewersResolver.java
index fc5d9e0..ea7d8e1 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/reviewers/ReviewersResolver.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/reviewers/ReviewersResolver.java
@@ -98,8 +98,8 @@
         Account.Id id = result.asList().get(0).account().id();
         if (uploader == null || id.get() != uploader._accountId) {
           reviewers.add(id);
-          return true;
         }
+        return true;
       }
       return false;
     } catch (StorageException | IOException | ConfigInvalidException e) {
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md
index 1b51181..173f51a 100644
--- a/src/main/resources/Documentation/config.md
+++ b/src/main/resources/Documentation/config.md
@@ -51,7 +51,10 @@
 filter.\<filter\>.reviewer
 :	An account or a group name. Must be an exact match (case sensitive) with the
 	account's email address or username, or the group name.  Multiple `reviewer`
-	occurrences are allowed.
+	occurrences are allowed.\
+	**NOTE**: *Reviewers are added in the context of the uploader which means
+	that if a group is configured it needs to be visible to the uploader for
+	reviewers to be added.*
 
 filter.\<filter\>.cc
 :	An account or a group name. Must be an exact match (case sensitive) with the
diff --git a/src/main/resources/Documentation/rest-api.md b/src/main/resources/Documentation/rest-api.md
index 957318f..683ed46 100644
--- a/src/main/resources/Documentation/rest-api.md
+++ b/src/main/resources/Documentation/rest-api.md
@@ -52,7 +52,7 @@
 ```
 
 ### <a id="change-reviewers"> Change Reviewers
-_PUT /projects/project_name/@PLUGIN@_
+_POST /projects/project_name/@PLUGIN@_
 
 Changes the default reviewers for the specified project.
 
@@ -65,7 +65,7 @@
 #### Request
 
 ```
-  PUT /projects/myproject/@PLUGIN@ HTTP/1.0
+  POST /projects/myproject/@PLUGIN@ HTTP/1.0
   Content-Type: application/json;charset=UTF-8
   {
     "action": "ADD",
diff --git a/web/rv-filter-section.ts b/web/rv-filter-section.ts
index a062de9..4162df2 100644
--- a/web/rv-filter-section.ts
+++ b/web/rv-filter-section.ts
@@ -204,13 +204,13 @@
       this.editingReviewer = false;
     } else {
       // The reviewer was not in edit mode, but DELETE was clicked.
-      this.putReviewer(reviewer, Action.REMOVE, type);
+      this.postReviewer(reviewer, Action.REMOVE, type);
     }
   }
 
   private handleReviewerAdded(e: CustomEvent<ReviewerAddedEventDetail>) {
     this.editingReviewer = false;
-    this.putReviewer(e.detail.reviewer, Action.ADD, e.detail.type).catch(
+    this.postReviewer(e.detail.reviewer, Action.ADD, e.detail.type).catch(
       err => {
         fire(this, 'show-alert', {message: err});
         throw err;
@@ -218,11 +218,11 @@
     );
   }
 
-  private putReviewer(reviewer: string, action: Action, type: Type) {
+  private postReviewer(reviewer: string, action: Action, type: Type) {
     if (this.filter === '') throw new Error('empty filter');
     if (reviewer === '') throw new Error('empty reviewer');
     return this.pluginRestApi
-      .put<Section[]>(this.reviewersUrl, {
+      .post<Section[]>(this.reviewersUrl, {
         action,
         reviewer,
         type,
diff --git a/web/rv-reviewer.ts b/web/rv-reviewer.ts
index cc9e7f8..9ac7424 100644
--- a/web/rv-reviewer.ts
+++ b/web/rv-reviewer.ts
@@ -223,6 +223,7 @@
       if (!groups) return [];
       return Object.keys(groups)
         .filter(name => !name.startsWith('user/'))
+        .filter(name => !groups[name].id.startsWith('global%3A'))
         .map(name => {
           return {name, value: name};
         });