Merge branch 'stable-3.8'

* stable-3.8:
  Initialize DuplicatePathnameValidator with full project hierarchy config

Change-Id: I09db6f2f58ba16e1cafb94ceb9e27182fe8e9351
diff --git a/src/main/java/com/googlesource/gerrit/plugins/uploadvalidator/Module.java b/src/main/java/com/googlesource/gerrit/plugins/uploadvalidator/Module.java
index 98261ea..fe30271 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/uploadvalidator/Module.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/uploadvalidator/Module.java
@@ -15,7 +15,7 @@
 package com.googlesource.gerrit.plugins.uploadvalidator;
 
 import com.google.gerrit.extensions.registration.DynamicSet;
-import com.google.gerrit.server.git.receive.PluginPushOption;
+import com.google.gerrit.server.PluginPushOption;
 import com.google.inject.AbstractModule;
 import com.google.inject.Scopes;
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/uploadvalidator/SkipValidationPushOption.java b/src/main/java/com/googlesource/gerrit/plugins/uploadvalidator/SkipValidationPushOption.java
index b690bd4..a969d83 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/uploadvalidator/SkipValidationPushOption.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/uploadvalidator/SkipValidationPushOption.java
@@ -14,7 +14,7 @@
 
 package com.googlesource.gerrit.plugins.uploadvalidator;
 
-import com.google.gerrit.server.git.receive.PluginPushOption;
+import com.google.gerrit.server.PluginPushOption;
 
 /** Push option that allows to skip the uploadvalidator plugin validation. */
 public final class SkipValidationPushOption implements PluginPushOption {
diff --git a/src/test/java/com/googlesource/gerrit/plugins/uploadvalidator/TestUtils.java b/src/test/java/com/googlesource/gerrit/plugins/uploadvalidator/TestUtils.java
index 358e527..2e96d1d 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/uploadvalidator/TestUtils.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/uploadvalidator/TestUtils.java
@@ -14,7 +14,6 @@
 
 package com.googlesource.gerrit.plugins.uploadvalidator;
 
-import com.google.common.base.Charsets;
 import com.google.common.base.Function;
 import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.LoadingCache;
@@ -24,6 +23,7 @@
 import com.google.gerrit.server.git.validators.CommitValidationMessage;
 import java.io.File;
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -47,7 +47,7 @@
   public static final PluginConfig EMPTY_PLUGIN_CONFIG =
       PluginConfig.create("", new Config(), null);
 
-  protected static final byte[] EMPTY_CONTENT = "".getBytes(Charsets.UTF_8);
+  protected static final byte[] EMPTY_CONTENT = "".getBytes(StandardCharsets.UTF_8);
 
   private static final Function<CommitValidationMessage, String> MESSAGE_TRANSFORMER =
       new Function<CommitValidationMessage, String>() {
diff --git a/src/test/java/com/googlesource/gerrit/plugins/uploadvalidator/UploadValidatorIT.java b/src/test/java/com/googlesource/gerrit/plugins/uploadvalidator/UploadValidatorIT.java
index ef54724..b81a97d 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/uploadvalidator/UploadValidatorIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/uploadvalidator/UploadValidatorIT.java
@@ -30,8 +30,6 @@
 import com.google.gerrit.entities.Permission;
 import com.google.gerrit.entities.RefNames;
 import com.google.gerrit.extensions.api.changes.DraftInput;
-import com.google.gerrit.extensions.api.changes.ReviewInput;
-import com.google.gerrit.extensions.api.changes.ReviewInput.DraftHandling;
 import com.google.gerrit.extensions.client.ChangeStatus;
 import com.google.gerrit.extensions.common.ChangeInput;
 import com.google.gerrit.extensions.common.MergeInput;
@@ -74,7 +72,7 @@
         .add(allow(Permission.PUSH).ref("refs/*").group(SystemGroupBackend.REGISTERED_USERS))
         .update();
 
-    clone = GitUtil.cloneProject(project, registerRepoConnection(project, admin));
+    clone = cloneProject(project, admin);
   }
 
   @Test
@@ -113,14 +111,10 @@
     DraftInput in = new DraftInput();
     in.message = "the password is secr3t ! ";
     in.path = "file.txt";
-    gApi.changes().id(r1.getChangeId()).revision("current").createDraft(in);
-
-    ReviewInput reviewIn = new ReviewInput();
-    reviewIn.drafts = DraftHandling.PUBLISH;
     BadRequestException e =
         assertThrows(
             BadRequestException.class,
-            () -> gApi.changes().id(r1.getChangeId()).revision("current").review(reviewIn));
+            () -> gApi.changes().id(r1.getChangeId()).revision("current").createDraft(in));
     assertThat(e.getMessage()).contains("banned words");
   }
 
@@ -219,8 +213,7 @@
                 "    group = " + adminGroupUuid(),
                 "    rejectDuplicatePathnames = true"));
 
-    TestRepository<InMemoryRepository> userClone =
-        GitUtil.cloneProject(project, registerRepoConnection(project, user));
+    TestRepository<InMemoryRepository> userClone = cloneProject(project, user);
     pushFactory
         .create(
             user.newIdent(),
@@ -453,8 +446,10 @@
   @Test
   public void blockRejectedAuthor() throws Exception {
     pushConfig(
-        Joiner.on("\n").join("[plugin \"uploadvalidator\"]",
-                             "    rejectedAuthorEmailPattern = .*@example\\\\.com"));
+        Joiner.on("\n")
+            .join(
+                "[plugin \"uploadvalidator\"]",
+                "    rejectedAuthorEmailPattern = .*@example\\\\.com"));
 
     TestAccount user = accountCreator.create("user", "user@example.com", "User", null);
 
@@ -467,8 +462,10 @@
   @Test
   public void blockRejectedCommitter() throws Exception {
     pushConfig(
-        Joiner.on("\n").join("[plugin \"uploadvalidator\"]",
-                             "    rejectedCommitterEmailPattern = .*@example\\\\.com"));
+        Joiner.on("\n")
+            .join(
+                "[plugin \"uploadvalidator\"]",
+                "    rejectedCommitterEmailPattern = .*@example\\\\.com"));
 
     TestAccount user = accountCreator.create("user", "user@example.com", "User", null);
 
@@ -481,8 +478,10 @@
   @Test
   public void restrictToAuthor() throws Exception {
     pushConfig(
-        Joiner.on("\n").join("[plugin \"uploadvalidator\"]",
-                             "    allowedAuthorEmailPattern = .*@other\\\\.com"));
+        Joiner.on("\n")
+            .join(
+                "[plugin \"uploadvalidator\"]",
+                "    allowedAuthorEmailPattern = .*@other\\\\.com"));
 
     TestAccount user = accountCreator.create("user", "user@example.com", "User", null);
 
@@ -495,8 +494,10 @@
   @Test
   public void restrictToCommitter() throws Exception {
     pushConfig(
-        Joiner.on("\n").join("[plugin \"uploadvalidator\"]",
-                             "    allowedCommitterEmailPattern = .*@other\\\\.com"));
+        Joiner.on("\n")
+            .join(
+                "[plugin \"uploadvalidator\"]",
+                "    allowedCommitterEmailPattern = .*@other\\\\.com"));
 
     TestAccount user = accountCreator.create("user", "user@example.com", "User", null);
 
diff --git a/src/test/java/com/googlesource/gerrit/plugins/uploadvalidator/ValidatorTestCase.java b/src/test/java/com/googlesource/gerrit/plugins/uploadvalidator/ValidatorTestCase.java
index 07a78ab..2702f95 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/uploadvalidator/ValidatorTestCase.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/uploadvalidator/ValidatorTestCase.java
@@ -14,9 +14,9 @@
 
 package com.googlesource.gerrit.plugins.uploadvalidator;
 
+import com.google.common.io.MoreFiles;
 import java.io.File;
 import java.io.IOException;
-import org.apache.commons.io.FileUtils;
 import org.eclipse.jgit.lib.Repository;
 import org.junit.After;
 import org.junit.Before;
@@ -36,7 +36,7 @@
   public void cleanup() throws IOException {
     repo.close();
     if (repoFolder.exists()) {
-      FileUtils.deleteDirectory(repoFolder);
+      MoreFiles.deleteRecursively(repoFolder.toPath());
     }
   }
 }