Merge branch 'stable-2.11'

* stable-2.11:
  Do not create refs for imports and cache-automerge refs
  Document required capabilities to import SSH keys of created accounts
  Document that draft changes/patch sets and change edits are not imported
  Remove plugin name from logged warnings and errors
  Skip replay inline comments for revisions that do not exist in source
  Do not skip changes without current revision
  Handle changes with non-existing current revision
  Simplify Buck rules

Change-Id: Ia9d27d56b5f1a8957c7e8f52e29df8dba8ab01f6
diff --git a/BUCK b/BUCK
index d118181..11c5585 100644
--- a/BUCK
+++ b/BUCK
@@ -15,7 +15,7 @@
   manifest_entries = [
     'Gerrit-PluginName: importer',
     'Gerrit-ApiType: plugin',
-    'Gerrit-ApiVersion: 2.11',
+    'Gerrit-ApiVersion: 2.12-SNAPSHOT',
     'Gerrit-Module: com.googlesource.gerrit.plugins.importer.Module',
     'Gerrit-SshModule: com.googlesource.gerrit.plugins.importer.SshModule',
     'Gerrit-HttpModule: com.googlesource.gerrit.plugins.importer.HttpModule',
diff --git a/VERSION b/VERSION
index 920fe49..9df7bf7 100644
--- a/VERSION
+++ b/VERSION
@@ -1,5 +1,5 @@
 # Used by BUCK to include "Implementation-Version" in plugin Manifest.
 # If this file doesn't exist the output of 'git describe' is used
 # instead.
-PLUGIN_VERSION = '2.11'
+PLUGIN_VERSION = '2.12-SNAPSHOT'
 
diff --git a/lib/gerrit/BUCK b/lib/gerrit/BUCK
index b8298c6..ae59eba 100644
--- a/lib/gerrit/BUCK
+++ b/lib/gerrit/BUCK
@@ -1,7 +1,7 @@
 include_defs('//bucklets/maven_jar.bucklet')
 
-VER = '2.11'
-REPO = MAVEN_CENTRAL
+VER = '2.12-SNAPSHOT'
+REPO = MAVEN_LOCAL
 
 maven_jar(
   name = 'plugin-api',
diff --git a/pom.xml b/pom.xml
index 1cfee7c..ef7e0bf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
   <groupId>com.googlesource.gerrit.plugins.importer</groupId>
   <artifactId>importer</artifactId>
   <packaging>jar</packaging>
-  <version>2.11</version>
+  <version>2.12-SNAPSHOT</version>
   <name>importer</name>
 
   <properties>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/ConfigureRepositoryStep.java b/src/main/java/com/googlesource/gerrit/plugins/importer/ConfigureRepositoryStep.java
index 8d8b776..9031dc4 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/ConfigureRepositoryStep.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/ConfigureRepositoryStep.java
@@ -27,7 +27,9 @@
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.lib.StoredConfig;
 
-import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
 import java.io.IOException;
 
 @Singleton
@@ -35,7 +37,7 @@
 
   static final String R_IMPORTS = "refs/imports/";
 
-  private final File gitDir;
+  private final Path gitDir;
 
   @Inject
   ConfigureRepositoryStep(
@@ -54,7 +56,7 @@
           .concat(name.get()));
     } else {
       config.setString("remote", "origin", "url",
-          new File(gitDir, name.get() + ".git").getCanonicalPath());
+          this.gitDir.resolve(name.get() + ".git").toString());
 
     }
     config.setString("remote", "origin", "fetch", "+refs/*:" + R_IMPORTS + "*");
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/GerritApi.java b/src/main/java/com/googlesource/gerrit/plugins/importer/GerritApi.java
index 631acb7..c5c7e5b 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/GerritApi.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/GerritApi.java
@@ -17,10 +17,10 @@
 import com.google.common.base.Objects;
 import com.google.gerrit.extensions.common.ChangeInfo;
 import com.google.gerrit.extensions.common.CommentInfo;
+import com.google.gerrit.extensions.common.GroupInfo;
 import com.google.gerrit.extensions.common.ProjectInfo;
 import com.google.gerrit.extensions.restapi.BadRequestException;
 import com.google.gerrit.server.account.GetSshKeys.SshKeyInfo;
-import com.google.gerrit.server.group.GroupJson.GroupInfo;
 import com.google.gwtorm.server.OrmException;
 import com.google.inject.Inject;
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/ImportGroup.java b/src/main/java/com/googlesource/gerrit/plugins/importer/ImportGroup.java
index 4194a6c..7675235 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/ImportGroup.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/ImportGroup.java
@@ -19,6 +19,7 @@
 import com.google.gerrit.common.errors.NoSuchAccountException;
 import com.google.gerrit.extensions.annotations.RequiresCapability;
 import com.google.gerrit.extensions.common.AccountInfo;
+import com.google.gerrit.extensions.common.GroupInfo;
 import com.google.gerrit.extensions.registration.DynamicSet;
 import com.google.gerrit.extensions.restapi.BadRequestException;
 import com.google.gerrit.extensions.restapi.MethodNotAllowedException;
@@ -38,7 +39,6 @@
 import com.google.gerrit.server.account.GroupIncludeCache;
 import com.google.gerrit.server.config.ConfigResource;
 import com.google.gerrit.server.config.GerritServerConfig;
-import com.google.gerrit.server.group.GroupJson.GroupInfo;
 import com.google.gerrit.server.validators.GroupCreationValidationListener;
 import com.google.gerrit.server.validators.ValidationException;
 import com.google.gwtorm.server.OrmDuplicateKeyException;
@@ -196,11 +196,6 @@
       initialMembers.add(accountUtil.resolveUser(api, member));
     }
     args.initialMembers = initialMembers;
-    Set<AccountGroup.UUID> initialGroups = new HashSet<>();
-    for (GroupInfo member : groupInfo.includes) {
-      initialGroups.add(new AccountGroup.UUID(member.id));
-    }
-    args.initialGroups = initialGroups;
     return args;
   }
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/LocalApi.java b/src/main/java/com/googlesource/gerrit/plugins/importer/LocalApi.java
index 5f8cff1..b1ef652 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/LocalApi.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/LocalApi.java
@@ -18,6 +18,7 @@
 import com.google.gerrit.extensions.client.ListChangesOption;
 import com.google.gerrit.extensions.common.ChangeInfo;
 import com.google.gerrit.extensions.common.CommentInfo;
+import com.google.gerrit.extensions.common.GroupInfo;
 import com.google.gerrit.extensions.common.ProjectInfo;
 import com.google.gerrit.extensions.restapi.AuthException;
 import com.google.gerrit.extensions.restapi.BadRequestException;
@@ -25,21 +26,16 @@
 import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
 import com.google.gerrit.extensions.restapi.RestApiException;
 import com.google.gerrit.extensions.restapi.TopLevelResource;
-import com.google.gerrit.reviewdb.client.AccountGroup;
 import com.google.gerrit.reviewdb.client.Change;
 import com.google.gerrit.server.account.AccountResource;
 import com.google.gerrit.server.account.AccountsCollection;
 import com.google.gerrit.server.account.GetSshKeys;
 import com.google.gerrit.server.account.GetSshKeys.SshKeyInfo;
-import com.google.gerrit.server.account.GroupCache;
-import com.google.gerrit.server.account.GroupControl;
 import com.google.gerrit.server.change.ChangeResource;
 import com.google.gerrit.server.change.ChangesCollection;
 import com.google.gerrit.server.change.ListComments;
 import com.google.gerrit.server.change.RevisionResource;
 import com.google.gerrit.server.change.Revisions;
-import com.google.gerrit.server.group.GroupJson;
-import com.google.gerrit.server.group.GroupJson.GroupInfo;
 import com.google.gwtorm.server.OrmException;
 import com.google.inject.Inject;
 
@@ -49,9 +45,6 @@
 
 public class LocalApi implements GerritApi {
   private final com.google.gerrit.extensions.api.GerritApi gApi;
-  private final GroupCache groupCache;
-  private final GroupJson groupJson;
-  private final GroupControl.Factory groupControlFactory;
   private final ChangesCollection changes;
   private final Revisions revisions;
   private final ListComments listComments;
@@ -61,18 +54,12 @@
   @Inject
   LocalApi(
       com.google.gerrit.extensions.api.GerritApi gApi,
-      GroupCache groupCache,
-      GroupJson groupJson,
-      GroupControl.Factory groupControlFactory,
       ChangesCollection changes,
       Revisions revisions,
       ListComments listComments,
       AccountsCollection accounts,
       GetSshKeys getSshKeys) {
     this.gApi = gApi;
-    this.groupCache = groupCache;
-    this.groupJson = groupJson;
-    this.groupControlFactory = groupControlFactory;
     this.changes = changes;
     this.revisions = revisions;
     this.listComments = listComments;
@@ -112,13 +99,11 @@
   @Override
   public GroupInfo getGroup(String groupName) throws IOException,
       BadRequestException, OrmException {
-    AccountGroup group = groupCache.get(new AccountGroup.NameKey(groupName));
-    GroupControl groupControl = groupControlFactory.controlFor(group);
-    if (group == null || !groupControl.isVisible()) {
-      throw new BadRequestException(String.format("Group %s not found.",
-          groupName));
+    try {
+      return gApi.groups().id(groupName).get();
+    } catch (RestApiException e) {
+      throw new BadRequestException(e.getMessage());
     }
-    return groupJson.format(groupControl.getGroup());
   }
 
   @Override
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/RemoteApi.java b/src/main/java/com/googlesource/gerrit/plugins/importer/RemoteApi.java
index fa746c5..0473471 100755
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/RemoteApi.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/RemoteApi.java
@@ -20,12 +20,12 @@
 import com.google.gerrit.extensions.client.ListChangesOption;
 import com.google.gerrit.extensions.common.ChangeInfo;
 import com.google.gerrit.extensions.common.CommentInfo;
+import com.google.gerrit.extensions.common.GroupInfo;
 import com.google.gerrit.extensions.common.ProjectInfo;
 import com.google.gerrit.extensions.common.RevisionInfo;
 import com.google.gerrit.extensions.restapi.BadRequestException;
 import com.google.gerrit.server.OutputFormat;
 import com.google.gerrit.server.account.GetSshKeys.SshKeyInfo;
-import com.google.gerrit.server.group.GroupJson.GroupInfo;
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;