Adapt to Gerrit v3.0 backend and test APIs

Restore the module functionality by adapting to the new
permission backend APIs and acceptance test framework
in Gerrit v3.0.

Change-Id: I823e1b399fb4a3daacd639068fb212355f774a55
diff --git a/src/main/java/com/googlesource/gerrit/modules/gitrefsfilter/ForProjectWrapper.java b/src/main/java/com/googlesource/gerrit/modules/gitrefsfilter/ForProjectWrapper.java
index 508fd85..54dd57c 100644
--- a/src/main/java/com/googlesource/gerrit/modules/gitrefsfilter/ForProjectWrapper.java
+++ b/src/main/java/com/googlesource/gerrit/modules/gitrefsfilter/ForProjectWrapper.java
@@ -18,21 +18,19 @@
 
 import com.google.common.flogger.FluentLogger;
 import com.google.gerrit.common.Nullable;
+import com.google.gerrit.extensions.api.access.CoreOrPluginProjectPermission;
 import com.google.gerrit.extensions.conditions.BooleanCondition;
 import com.google.gerrit.extensions.restapi.AuthException;
 import com.google.gerrit.reviewdb.client.Change;
 import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.reviewdb.client.Project.NameKey;
-import com.google.gerrit.reviewdb.server.ReviewDb;
 import com.google.gerrit.server.notedb.ChangeNotes;
 import com.google.gerrit.server.notedb.ChangeNotes.Factory.ChangeNotesResult;
 import com.google.gerrit.server.permissions.PermissionBackend.ForProject;
 import com.google.gerrit.server.permissions.PermissionBackend.ForRef;
 import com.google.gerrit.server.permissions.PermissionBackend.RefFilterOptions;
 import com.google.gerrit.server.permissions.PermissionBackendException;
-import com.google.gerrit.server.permissions.ProjectPermission;
 import com.google.inject.Inject;
-import com.google.inject.Provider;
 import com.google.inject.assistedinject.Assisted;
 import java.io.IOException;
 import java.util.Collection;
@@ -51,7 +49,6 @@
   private final ForProject defaultForProject;
   private final NameKey project;
   private final ChangeNotes.Factory changeNotesFactory;
-  private final Provider<ReviewDb> dbProvider;
 
   public interface Factory {
     ForProjectWrapper get(ForProject defaultForProject, Project.NameKey project);
@@ -60,13 +57,11 @@
   @Inject
   public ForProjectWrapper(
       ChangeNotes.Factory changeNotesFactory,
-      Provider<ReviewDb> dbProvider,
       @Assisted ForProject defaultForProject,
       @Assisted Project.NameKey project) {
     this.defaultForProject = defaultForProject;
     this.project = project;
     this.changeNotesFactory = changeNotesFactory;
-    this.dbProvider = dbProvider;
   }
 
   @Override
@@ -75,12 +70,13 @@
   }
 
   @Override
-  public void check(ProjectPermission perm) throws AuthException, PermissionBackendException {
+  public void check(CoreOrPluginProjectPermission perm)
+      throws AuthException, PermissionBackendException {
     defaultForProject.check(perm);
   }
 
   @Override
-  public Set<ProjectPermission> test(Collection<ProjectPermission> permSet)
+  public <T extends CoreOrPluginProjectPermission> Set<T> test(Collection<T> permSet)
       throws PermissionBackendException {
     return defaultForProject.test(permSet);
   }
@@ -118,7 +114,7 @@
   }
 
   @Override
-  public BooleanCondition testCond(ProjectPermission perm) {
+  public BooleanCondition testCond(CoreOrPluginProjectPermission perm) {
     return defaultForProject.testCond(perm);
   }
 
@@ -131,7 +127,7 @@
     Set<String> result = new HashSet<>();
     Stream<ChangeNotesResult> s;
     try {
-      s = changeNotesFactory.scan(repo, dbProvider.get(), project);
+      s = changeNotesFactory.scan(repo, project);
     } catch (IOException e) {
       logger.atSevere().withCause(e).log(
           "Cannot load changes for project %s, assuming no changes are visible", project);
diff --git a/src/test/java/com/googlesource/gerrit/libmodule/plugins/test/AbstractGitDaemonTest.java b/src/test/java/com/googlesource/gerrit/libmodule/plugins/test/AbstractGitDaemonTest.java
index 32f8ac4..34a35b7 100644
--- a/src/test/java/com/googlesource/gerrit/libmodule/plugins/test/AbstractGitDaemonTest.java
+++ b/src/test/java/com/googlesource/gerrit/libmodule/plugins/test/AbstractGitDaemonTest.java
@@ -17,10 +17,12 @@
 import com.google.gerrit.acceptance.AbstractDaemonTest;
 import com.google.gerrit.acceptance.GitUtil;
 import com.google.gerrit.acceptance.TestAccount;
+import com.google.gerrit.acceptance.testsuite.request.RequestScopeOperations;
 import com.google.gerrit.extensions.api.groups.GroupApi;
 import com.google.gerrit.extensions.api.groups.GroupInput;
 import com.google.gerrit.extensions.restapi.RestApiException;
 import com.google.gerrit.reviewdb.client.AccountGroup;
+import com.google.inject.Inject;
 import com.googlesource.gerrit.modules.gitrefsfilter.FilterRefsCapability;
 import java.io.IOException;
 import java.util.List;
@@ -35,23 +37,25 @@
 abstract class AbstractGitDaemonTest extends AbstractDaemonTest {
   private static final String REFS_CHANGES = "+refs/changes/*:refs/remotes/origin/*";
 
+  @Inject private RequestScopeOperations requestScopeOperations;
+
   protected void createChangeAndAbandon() throws Exception, RestApiException {
-    setApiUser(admin);
+    requestScopeOperations.setApiUser(admin.id());
     createChange();
     int changeNum = changeNumOfRef(getChangesRefsAs(admin).get(0));
     gApi.changes().id(changeNum).abandon();
   }
 
   protected void createFilteredRefsGroup() throws Exception {
-    setApiUser(admin);
+    requestScopeOperations.setApiUser(admin.id());
     String group = name("filtered-refs-group");
     GroupInput in = new GroupInput();
     in.name = group;
     GroupApi groupApi = gApi.groups().create(in);
-    groupApi.addMembers(user.username);
+    groupApi.addMembers(user.username());
 
-    setApiUser(user);
-    groupApi.removeMembers(admin.username);
+    requestScopeOperations.setApiUser(user.id());
+    groupApi.removeMembers(admin.username());
     String groupId = groupApi.detail().id;
 
     allowGlobalCapabilities(
diff --git a/src/test/java/com/googlesource/gerrit/libmodule/plugins/test/GitRefsFilterTest.java b/src/test/java/com/googlesource/gerrit/libmodule/plugins/test/GitRefsFilterTest.java
index 145c7c9..854ac6e 100644
--- a/src/test/java/com/googlesource/gerrit/libmodule/plugins/test/GitRefsFilterTest.java
+++ b/src/test/java/com/googlesource/gerrit/libmodule/plugins/test/GitRefsFilterTest.java
@@ -41,20 +41,20 @@
   public void testUserWithFilterOutCapabilityShouldNotSeeAbandonedChangesRefs() throws Exception {
     createChangeAndAbandon();
 
-    assertThat(getRefs(cloneProjectChangesRefs(user))).hasSize(0);
+    assertThat(getRefs(cloneProjectChangesRefs(user))).isEmpty();
   }
 
   @Test
   public void testUserWithFilterOutCapabilityShouldSeeOpenChangesRefs() throws Exception {
     createChange();
 
-    assertThat(getRefs(cloneProjectChangesRefs(user))).hasSize(1);
+    assertThat(getRefs(cloneProjectChangesRefs(user))).isNotEmpty();
   }
 
   @Test
   public void testAdminUserShouldSeeAbandonedChangesRefs() throws Exception {
     createChangeAndAbandon();
 
-    assertThat(getRefs(cloneProjectChangesRefs(admin))).hasSize(1);
+    assertThat(getRefs(cloneProjectChangesRefs(admin))).isNotEmpty();
   }
 }