Merge branch 'stable-2.14' into stable-2.15

* stable-2.14:
  Move assertion on protected projects into ProtectedProjects
  Improve error message when protected project cannot be deleted

Change-Id: I7ec40be6851b9b395f51c4e220227219fc8c657f
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/ProtectedProjects.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/ProtectedProjects.java
index a973829..7074149 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/ProtectedProjects.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/ProtectedProjects.java
@@ -42,4 +42,11 @@
   public boolean isProtected(ProjectResource rsrc) {
     return isProtected(rsrc.getNameKey());
   }
+
+  public void assertIsNotProtected(ProjectResource rsrc) throws CannotDeleteProjectException {
+    if (isProtected(rsrc)) {
+      throw new CannotDeleteProjectException(
+          "Cannot delete project because it is protected against deletion");
+    }
+  }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/projectconfig/ProjectConfigDeleteHandler.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/projectconfig/ProjectConfigDeleteHandler.java
index cadd9e9..271105d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/projectconfig/ProjectConfigDeleteHandler.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/projectconfig/ProjectConfigDeleteHandler.java
@@ -18,7 +18,6 @@
 import com.google.common.base.Joiner;
 import com.google.common.collect.Iterables;
 import com.google.gerrit.extensions.common.ProjectInfo;
-import com.google.gerrit.server.config.SitePaths;
 import com.google.gerrit.server.permissions.PermissionBackendException;
 import com.google.gerrit.server.project.ListChildProjects;
 import com.google.gerrit.server.project.ProjectResource;
@@ -31,30 +30,20 @@
 public class ProjectConfigDeleteHandler {
 
   private final ProtectedProjects protectedProjects;
-  private final SitePaths site;
   private final Provider<ListChildProjects> listChildProjectsProvider;
 
   @Inject
   public ProjectConfigDeleteHandler(
-      SitePaths site,
-      ProtectedProjects protectedProjects,
-      Provider<ListChildProjects> listChildProjectsProvider) {
-    this.site = site;
+      ProtectedProjects protectedProjects, Provider<ListChildProjects> listChildProjectsProvider) {
     this.protectedProjects = protectedProjects;
     this.listChildProjectsProvider = listChildProjectsProvider;
   }
 
   public void assertCanDelete(ProjectResource rsrc) throws CannotDeleteProjectException {
-    assertIsNotProtected(rsrc);
+    protectedProjects.assertIsNotProtected(rsrc);
     assertHasNoChildProjects(rsrc);
   }
 
-  private void assertIsNotProtected(ProjectResource rsrc) throws CannotDeleteProjectException {
-    if (protectedProjects.isProtected(rsrc)) {
-      throw new CannotDeleteProjectException("Perhaps you meant to rm -fR " + site.site_path);
-    }
-  }
-
   private void assertHasNoChildProjects(ProjectResource rsrc) throws CannotDeleteProjectException {
     try {
       List<ProjectInfo> children = listChildProjectsProvider.get().apply(rsrc);