Adapt to core gerrit API changes

- ProjectControl's visibility was reduced to private and is no longer
  visible; replace usage of ProjectControl.GenericFactory.

- Adjust imports to restructured packages.

Change-Id: I8b24e17008e0b916c49933eb206fcea32f07219e
diff --git a/src/main/java/com/googlesource/gerrit/plugins/refprotection/BackupRef.java b/src/main/java/com/googlesource/gerrit/plugins/refprotection/BackupRef.java
index 30eaeca..dd4e21b 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/refprotection/BackupRef.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/refprotection/BackupRef.java
@@ -38,9 +38,9 @@
 import com.google.gerrit.server.events.RefUpdatedEvent;
 import com.google.gerrit.server.git.GitRepositoryManager;
 import com.google.gerrit.server.permissions.PermissionBackendException;
-import com.google.gerrit.server.project.CreateBranch;
 import com.google.gerrit.server.project.NoSuchProjectException;
 import com.google.gerrit.server.project.ProjectResource;
+import com.google.gerrit.server.restapi.project.CreateBranch;
 import com.google.inject.Inject;
 import java.io.IOException;
 import java.text.SimpleDateFormat;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/refprotection/RefProtectionModule.java b/src/main/java/com/googlesource/gerrit/plugins/refprotection/RefProtectionModule.java
index 0f00282..f4e755a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/refprotection/RefProtectionModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/refprotection/RefProtectionModule.java
@@ -23,8 +23,8 @@
  */
 package com.googlesource.gerrit.plugins.refprotection;
 
-import com.google.gerrit.common.EventListener;
 import com.google.gerrit.extensions.registration.DynamicSet;
+import com.google.gerrit.server.events.EventListener;
 import com.google.inject.AbstractModule;
 
 public class RefProtectionModule extends AbstractModule {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/refprotection/RefUpdateListener.java b/src/main/java/com/googlesource/gerrit/plugins/refprotection/RefUpdateListener.java
index bca99a1..fba7e2b 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/refprotection/RefUpdateListener.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/refprotection/RefUpdateListener.java
@@ -26,18 +26,19 @@
 import static org.eclipse.jgit.lib.Constants.R_HEADS;
 import static org.eclipse.jgit.lib.Constants.R_TAGS;
 
-import com.google.gerrit.common.EventListener;
 import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.server.CurrentUser;
 import com.google.gerrit.server.config.PluginConfigFactory;
 import com.google.gerrit.server.data.RefUpdateAttribute;
 import com.google.gerrit.server.events.Event;
+import com.google.gerrit.server.events.EventListener;
 import com.google.gerrit.server.events.RefUpdatedEvent;
 import com.google.gerrit.server.git.GitRepositoryManager;
 import com.google.gerrit.server.project.NoSuchProjectException;
-import com.google.gerrit.server.project.ProjectControl;
+import com.google.gerrit.server.project.ProjectCache;
 import com.google.gerrit.server.project.ProjectResource;
+import com.google.gerrit.server.project.ProjectState;
 import com.google.inject.Inject;
 import java.io.IOException;
 import org.eclipse.jgit.errors.RepositoryNotFoundException;
@@ -51,7 +52,7 @@
 class RefUpdateListener implements EventListener {
 
   private static final Logger log = LoggerFactory.getLogger(RefUpdateListener.class);
-  private final ProjectControl.GenericFactory projectControl;
+  private final ProjectCache projectCache;
   private final CurrentUser user;
   private final GitRepositoryManager repoManager;
   private final BackupRef backupRef;
@@ -60,13 +61,13 @@
 
   @Inject
   RefUpdateListener(
-      ProjectControl.GenericFactory p,
+      ProjectCache projectCache,
       CurrentUser user,
       GitRepositoryManager repoManager,
       BackupRef backupRef,
       PluginConfigFactory cfg,
       @PluginName String pluginName) {
-    this.projectControl = p;
+    this.projectCache = projectCache;
     this.user = user;
     this.repoManager = repoManager;
     this.backupRef = backupRef;
@@ -80,9 +81,8 @@
     if (event instanceof RefUpdatedEvent) {
       RefUpdatedEvent refUpdate = (RefUpdatedEvent) event;
       if ((protectDeleted || protectFastForward) && isRelevantRef(refUpdate)) {
-        Project.NameKey nameKey = refUpdate.getProjectNameKey();
         try {
-          ProjectResource project = new ProjectResource(projectControl.controlFor(nameKey, user));
+          ProjectResource project = getProjectResource(refUpdate.getProjectNameKey());
           if ((protectDeleted && isRefDeleted(refUpdate))
               || (protectFastForward && isNonFastForwardUpdate(refUpdate, project))) {
             backupRef.createBackup(refUpdate, project);
@@ -94,6 +94,15 @@
     }
   }
 
+  private ProjectResource getProjectResource(Project.NameKey nameKey)
+      throws IOException, NoSuchProjectException {
+    ProjectState state = projectCache.checkedGet(nameKey);
+    if (state == null) {
+      throw new NoSuchProjectException(nameKey);
+    }
+    return new ProjectResource(state, user);
+  }
+
   /**
    * Is the event on a relevant ref?
    *