Adapt the plugin to stable-3.3 branch

Building with Java 11 is outside of the scope of this change.
To verify this change the plugin API must be built with Java 8.

Bug: Issue 13722
Change-Id: Ie9137190129f5ff264dc7363fa60fc218570897e
diff --git a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/CreateProjectStep.java b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/CreateProjectStep.java
index 9c26310..870a13b 100644
--- a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/CreateProjectStep.java
+++ b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/CreateProjectStep.java
@@ -13,13 +13,13 @@
 // limitations under the License.
 package com.googlesource.gerrit.plugins.github.git;
 
-import com.google.gerrit.common.data.AccessSection;
-import com.google.gerrit.common.data.GroupDescription;
-import com.google.gerrit.common.data.GroupReference;
-import com.google.gerrit.common.data.Permission;
-import com.google.gerrit.common.data.PermissionRule;
+import com.google.gerrit.entities.AccessSection;
 import com.google.gerrit.entities.AccountGroup;
 import com.google.gerrit.entities.BooleanProjectConfig;
+import com.google.gerrit.entities.GroupDescription;
+import com.google.gerrit.entities.GroupReference;
+import com.google.gerrit.entities.Permission;
+import com.google.gerrit.entities.PermissionRule;
 import com.google.gerrit.entities.Project;
 import com.google.gerrit.entities.Project.NameKey;
 import com.google.gerrit.extensions.client.InheritableBoolean;
@@ -106,47 +106,54 @@
         Permission.SUBMIT,
         Permission.REBASE);
 
-    PermissionRule reviewRange = new PermissionRule(getMyGroup());
-    reviewRange.setMin(new Integer(-2));
-    reviewRange.setMax(new Integer(+2));
-    addPermission(CODE_REVIEW_REFS, Permission.LABEL + CODE_REVIEW_LABEL, reviewRange);
+    PermissionRule.Builder reviewRangeBuilder = PermissionRule.create(getMyGroup()).toBuilder();
+    reviewRangeBuilder.setMin(-2).setMax(2);
+    addPermission(
+        CODE_REVIEW_REFS, Permission.LABEL + CODE_REVIEW_LABEL, reviewRangeBuilder.build());
 
-    PermissionRule verifiedRange = new PermissionRule(getMyGroup());
-    verifiedRange.setMin(new Integer(-1));
-    verifiedRange.setMax(new Integer(+1));
-    addPermission(CODE_REVIEW_REFS, Permission.LABEL + VERIFIED_LABEL, verifiedRange);
+    PermissionRule.Builder verifiedRangeBuilder = PermissionRule.create(getMyGroup()).toBuilder();
+    verifiedRangeBuilder.setMin(-1).setMax(1);
+    addPermission(
+        CODE_REVIEW_REFS, Permission.LABEL + VERIFIED_LABEL, verifiedRangeBuilder.build());
 
     addPermissions(AccessSection.HEADS, Permission.READ, Permission.CREATE, Permission.PUSH_MERGE);
 
-    PermissionRule forcePush = new PermissionRule(getMyGroup());
-    forcePush.setForce(Boolean.TRUE);
-    addPermission(AccessSection.HEADS, Permission.PUSH, forcePush);
+    PermissionRule.Builder forcePushBuilder = PermissionRule.create(getMyGroup()).toBuilder();
+    forcePushBuilder.setForce(true);
+    addPermission(AccessSection.HEADS, Permission.PUSH, forcePushBuilder.build());
 
     addPermissions(TAGS_REFS, Permission.PUSH);
 
-    PermissionRule removeTag = new PermissionRule(getMyGroup());
-    removeTag.setForce(Boolean.TRUE);
-    addPermission(TAGS_REFS, Permission.PUSH, removeTag);
+    PermissionRule.Builder removeTagBuilder = PermissionRule.create(getMyGroup()).toBuilder();
+    removeTagBuilder.setForce(true);
+    addPermission(TAGS_REFS, Permission.PUSH, removeTagBuilder.build());
   }
 
   private void addPermissions(String refSpec, String... permissions) {
-    AccessSection accessSection = projectConfig.getAccessSection(refSpec, true);
-    for (String permission : permissions) {
-      String[] permParts = permission.split("=");
-      String action = permParts[0];
-      PermissionRule rule;
-      if (permParts.length > 1) {
-        rule = PermissionRule.fromString(permParts[1], true);
-        rule.setGroup(getMyGroup());
-      } else {
-        rule = new PermissionRule(getMyGroup());
-      }
-      accessSection.getPermission(action, true).add(rule);
-    }
+    projectConfig.upsertAccessSection(
+        refSpec,
+        as -> {
+          for (String permission : permissions) {
+            String[] permParts = permission.split("=");
+            String action = permParts[0];
+            PermissionRule.Builder ruleBuilder;
+            if (permParts.length > 1) {
+              ruleBuilder =
+                  PermissionRule.fromString(permParts[1], true).toBuilder().setGroup(getMyGroup());
+            } else {
+              ruleBuilder = PermissionRule.builder(getMyGroup());
+            }
+            as.upsertPermission(action).add(ruleBuilder);
+          }
+        });
   }
 
   private void addPermission(String refSpec, String action, PermissionRule rule) {
-    projectConfig.getAccessSection(refSpec, true).getPermission(action, true).add(rule);
+    projectConfig.upsertAccessSection(
+        refSpec,
+        as -> {
+          as.upsertPermission(action).add(rule.toBuilder());
+        });
   }
 
   private GroupReference getMyGroup() {
@@ -181,15 +188,17 @@
   }
 
   private void setProjectSettings() {
-    Project project = projectConfig.getProject();
-    project.setParentName(config.getBaseProject(getRepository().isPrivate()));
-    project.setDescription(description);
-    project.setSubmitType(SubmitType.MERGE_IF_NECESSARY);
-    project.setBooleanConfig(
-        BooleanProjectConfig.USE_CONTRIBUTOR_AGREEMENTS, InheritableBoolean.INHERIT);
-    project.setBooleanConfig(BooleanProjectConfig.USE_SIGNED_OFF_BY, InheritableBoolean.INHERIT);
-    project.setBooleanConfig(BooleanProjectConfig.USE_CONTENT_MERGE, InheritableBoolean.INHERIT);
-    project.setBooleanConfig(BooleanProjectConfig.REQUIRE_CHANGE_ID, InheritableBoolean.INHERIT);
+    projectConfig.updateProject(
+        b -> {
+          b.setParent(config.getBaseProject(getRepository().isPrivate()));
+          b.setDescription(description);
+          b.setSubmitType(SubmitType.MERGE_IF_NECESSARY);
+          b.setBooleanConfig(
+              BooleanProjectConfig.USE_CONTRIBUTOR_AGREEMENTS, InheritableBoolean.INHERIT);
+          b.setBooleanConfig(BooleanProjectConfig.USE_SIGNED_OFF_BY, InheritableBoolean.INHERIT);
+          b.setBooleanConfig(BooleanProjectConfig.USE_CONTENT_MERGE, InheritableBoolean.INHERIT);
+          b.setBooleanConfig(BooleanProjectConfig.REQUIRE_CHANGE_ID, InheritableBoolean.INHERIT);
+        });
   }
 
   @Override
diff --git a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/group/GitHubGroup.java b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/group/GitHubGroup.java
index 296a3f2..ba9581c 100644
--- a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/group/GitHubGroup.java
+++ b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/group/GitHubGroup.java
@@ -14,8 +14,8 @@
 
 package com.googlesource.gerrit.plugins.github.group;
 
-import com.google.gerrit.common.data.GroupDescription.Basic;
 import com.google.gerrit.entities.AccountGroup.UUID;
+import com.google.gerrit.entities.GroupDescription.Basic;
 import lombok.Getter;
 
 public abstract class GitHubGroup implements Basic {
diff --git a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/group/GitHubGroupBackend.java b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/group/GitHubGroupBackend.java
index 1a6d0ac..21d6732 100644
--- a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/group/GitHubGroupBackend.java
+++ b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/group/GitHubGroupBackend.java
@@ -21,10 +21,10 @@
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.ImmutableSet.Builder;
-import com.google.gerrit.common.data.GroupDescription.Basic;
-import com.google.gerrit.common.data.GroupReference;
 import com.google.gerrit.entities.AccountGroup;
 import com.google.gerrit.entities.AccountGroup.UUID;
+import com.google.gerrit.entities.GroupDescription.Basic;
+import com.google.gerrit.entities.GroupReference;
 import com.google.gerrit.server.IdentifiedUser;
 import com.google.gerrit.server.account.GroupBackend;
 import com.google.gerrit.server.account.GroupMembership;
diff --git a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/group/GitHubOrganisationGroup.java b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/group/GitHubOrganisationGroup.java
index e9c930c..604ecde 100644
--- a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/group/GitHubOrganisationGroup.java
+++ b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/group/GitHubOrganisationGroup.java
@@ -17,10 +17,10 @@
 import static com.google.common.base.Preconditions.checkArgument;
 
 import com.google.gerrit.common.Nullable;
-import com.google.gerrit.common.data.GroupDescription.Basic;
-import com.google.gerrit.common.data.GroupReference;
 import com.google.gerrit.entities.AccountGroup;
 import com.google.gerrit.entities.AccountGroup.UUID;
+import com.google.gerrit.entities.GroupDescription.Basic;
+import com.google.gerrit.entities.GroupReference;
 import com.google.inject.Inject;
 import com.google.inject.assistedinject.Assisted;
 
@@ -54,6 +54,6 @@
   }
 
   public static GroupReference groupReference(String orgName) {
-    return new GroupReference(uuid(orgName), NAME_PREFIX + orgName);
+    return GroupReference.create(uuid(orgName), NAME_PREFIX + orgName);
   }
 }
diff --git a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/group/GitHubTeamGroup.java b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/group/GitHubTeamGroup.java
index ba0d3d3..022b407 100644
--- a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/group/GitHubTeamGroup.java
+++ b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/group/GitHubTeamGroup.java
@@ -15,9 +15,9 @@
 package com.googlesource.gerrit.plugins.github.group;
 
 import com.google.gerrit.common.Nullable;
-import com.google.gerrit.common.data.GroupReference;
 import com.google.gerrit.entities.AccountGroup;
 import com.google.gerrit.entities.AccountGroup.UUID;
+import com.google.gerrit.entities.GroupReference;
 import com.google.inject.Inject;
 import com.google.inject.assistedinject.Assisted;
 
@@ -52,7 +52,7 @@
   }
 
   public static GroupReference groupReference(GroupReference orgReference, String teamName) {
-    return new GroupReference(
+    return GroupReference.create(
         uuid(orgReference.getUUID(), teamName), orgReference.getName() + "/" + teamName);
   }
 }
diff --git a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/replication/Destination.java b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/replication/Destination.java
index 29c7031..2e5528a 100644
--- a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/replication/Destination.java
+++ b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/replication/Destination.java
@@ -17,8 +17,8 @@
 import com.google.common.base.MoreObjects;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
-import com.google.gerrit.common.data.GroupReference;
 import com.google.gerrit.entities.AccountGroup;
+import com.google.gerrit.entities.GroupReference;
 import com.google.gerrit.entities.Project;
 import com.google.gerrit.server.CurrentUser;
 import com.google.gerrit.server.PluginUser;
diff --git a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/replication/RemoteSiteUser.java b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/replication/RemoteSiteUser.java
index f80af85..26def83 100644
--- a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/replication/RemoteSiteUser.java
+++ b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/replication/RemoteSiteUser.java
@@ -35,9 +35,4 @@
   public GroupMembership getEffectiveGroups() {
     return effectiveGroups;
   }
-
-  @Override
-  public Object getCacheKey() {
-    return effectiveGroups.getKnownGroups();
-  }
 }