Merge branch 'stable-3.9'

* stable-3.9:
  GitHubOAuthConfigTest: Reformat the code using google-java-format
  Build github plugin against the v3.8.0-rc5 Gerrit API
  PullRequestCreateChange: Remove unused import
  Fix velocity deprecated configuration keys
  Set plugin version to 3.4.7
  Fire git ref update events for all imported refs
  PluginVelocityRuntimeProvider: Fix warning flagged by error prone
  Fix default scopes resolution

Change-Id: I3f3f559c70378003766916bbf70e8173c3c89109
diff --git a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubOAuthConfig.java b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubOAuthConfig.java
index 16fcb28..300a945 100644
--- a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubOAuthConfig.java
+++ b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubOAuthConfig.java
@@ -56,6 +56,7 @@
   public static final String GERRIT_LOGIN = "/login";
   public static final String GERRIT_LOGOUT = "/logout";
   public static final String GITHUB_PLUGIN_OAUTH_SCOPE = "/plugins/github-plugin/static/scope.html";
+  public static final ScopeKey GITHUB_DEFAULT_SCOPES_KEY = new ScopeKey("scopes", null, 0);
 
   public final String gitHubUrl;
   public final String gitHubApiUrl;
@@ -186,10 +187,10 @@
   }
 
   public Scope[] getDefaultScopes() {
-    if (scopes == null || scopes.get("scopes") == null) {
+    if (scopes == null || scopes.get(GITHUB_DEFAULT_SCOPES_KEY) == null) {
       return new Scope[0];
     }
-    return scopes.get("scopes").toArray(new Scope[0]);
+    return scopes.get(GITHUB_DEFAULT_SCOPES_KEY).toArray(new Scope[0]);
   }
 
   public KeyConfig getCurrentKeyConfig() {
diff --git a/github-oauth/src/test/java/com/googlesource/gerrit/plugins/github/oauth/GitHubOAuthConfigTest.java b/github-oauth/src/test/java/com/googlesource/gerrit/plugins/github/oauth/GitHubOAuthConfigTest.java
index 7808ff4..7a11427 100644
--- a/github-oauth/src/test/java/com/googlesource/gerrit/plugins/github/oauth/GitHubOAuthConfigTest.java
+++ b/github-oauth/src/test/java/com/googlesource/gerrit/plugins/github/oauth/GitHubOAuthConfigTest.java
@@ -61,7 +61,8 @@
 
     assertEquals(githubOAuthConfig().getCurrentKeyConfig().isCurrent(), true);
     assertEquals(githubOAuthConfig().getCurrentKeyConfig().getCipherAlgorithm(), cipherAlgorithm);
-    assertEquals(githubOAuthConfig().getCurrentKeyConfig().getSecretKeyAlgorithm(), secretKeyAlgorithm);
+    assertEquals(
+        githubOAuthConfig().getCurrentKeyConfig().getSecretKeyAlgorithm(), secretKeyAlgorithm);
     assertEquals(githubOAuthConfig().getCurrentKeyConfig().getKeyId(), keySubsection);
   }
 
@@ -91,7 +92,8 @@
         CONF_KEY_SECTION, someOtherKeyConfig, PASSWORD_DEVICE_CONFIG_LABEL, testPasswordDevice);
 
     assertEquals(githubOAuthConfig().getKeyConfig(currentKeyConfig).getKeyId(), currentKeyConfig);
-    assertEquals(githubOAuthConfig().getKeyConfig(someOtherKeyConfig).getKeyId(), someOtherKeyConfig);
+    assertEquals(
+        githubOAuthConfig().getKeyConfig(someOtherKeyConfig).getKeyId(), someOtherKeyConfig);
   }
 
   @Test
diff --git a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/GitCloneStep.java b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/GitCloneStep.java
index 503712c..9d09f51 100644
--- a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/GitCloneStep.java
+++ b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/GitCloneStep.java
@@ -23,11 +23,15 @@
 import com.google.gerrit.extensions.registration.DynamicSet;
 import com.google.gerrit.extensions.restapi.ResourceConflictException;
 import com.google.gerrit.extensions.restapi.RestApiException;
+import com.google.gerrit.server.IdentifiedUser;
+import com.google.gerrit.server.account.AccountState;
+import com.google.gerrit.server.extensions.events.GitReferenceUpdated;
 import com.google.gerrit.server.git.GitRepositoryManager;
 import com.google.gerrit.server.project.ProjectCache;
 import com.google.gerrit.server.util.ManualRequestContext;
 import com.google.gerrit.server.util.OneOffRequestContext;
 import com.google.inject.Inject;
+import com.google.inject.Provider;
 import com.google.inject.assistedinject.Assisted;
 import com.googlesource.gerrit.plugins.github.GitHubConfig;
 import java.io.File;
@@ -37,7 +41,9 @@
 import org.eclipse.jgit.api.FetchCommand;
 import org.eclipse.jgit.api.Git;
 import org.eclipse.jgit.api.errors.GitAPIException;
+import org.eclipse.jgit.lib.ObjectId;
 import org.eclipse.jgit.lib.ProgressMonitor;
+import org.eclipse.jgit.lib.Ref;
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.lib.RepositoryCache;
 import org.slf4j.Logger;
@@ -54,6 +60,8 @@
   private final ProjectCache projectCache;
   private final GitRepositoryManager repoManager;
   private final String projectName;
+  private final GitReferenceUpdated referenceUpdated;
+  private final Provider<IdentifiedUser> identifiedUser;
 
   public interface Factory {
     GitCloneStep create(
@@ -69,6 +77,8 @@
       DynamicSet<ProjectDeletedListener> deletedListeners,
       ProjectCache projectCache,
       GitRepositoryManager repoManager,
+      GitReferenceUpdated referenceUpdated,
+      Provider<IdentifiedUser> identifiedUser,
       @Assisted("organisation") String organisation,
       @Assisted("name") String repository)
       throws GitException {
@@ -83,6 +93,8 @@
     this.deletedListeners = deletedListeners;
     this.projectCache = projectCache;
     this.repoManager = repoManager;
+    this.referenceUpdated = referenceUpdated;
+    this.identifiedUser = identifiedUser;
   }
 
   private static File prepareTargetGitDirectory(File gitDir, String projectName)
@@ -112,6 +124,7 @@
   @Override
   public void doImport(ProgressMonitor progress) throws GitException {
     createNewProject();
+    Project.NameKey key = Project.nameKey(projectName);
     String sourceUri = getSourceUri();
     try (Git git = Git.open(destinationDirectory)) {
       FetchCommand fetch =
@@ -122,6 +135,11 @@
       }
       LOG.info(sourceUri + "| Clone into " + destinationDirectory);
       fetch.call();
+      AccountState accountState = identifiedUser.get().state();
+      for (Ref ref : git.getRepository().getRefDatabase().getRefs()) {
+        referenceUpdated.fire(
+            key, ref.getName(), ObjectId.zeroId(), ref.getObjectId(), accountState);
+      }
     } catch (IOException | GitAPIException e) {
       LOG.error("Unable to fetch from {} into {}", sourceUri, destinationDirectory, e);
       throw new GitCloneFailedException(sourceUri, e);
diff --git a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/velocity/PluginVelocityRuntimeProvider.java b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/velocity/PluginVelocityRuntimeProvider.java
index e1b4d9b..735ac4d 100644
--- a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/velocity/PluginVelocityRuntimeProvider.java
+++ b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/velocity/PluginVelocityRuntimeProvider.java
@@ -21,6 +21,7 @@
 import com.google.inject.Singleton;
 import java.net.URL;
 import java.net.URLClassLoader;
+import java.util.Arrays;
 import java.util.Properties;
 import org.apache.velocity.runtime.RuntimeConstants;
 import org.apache.velocity.runtime.RuntimeInstance;
@@ -29,12 +30,12 @@
 
 @Singleton
 public class PluginVelocityRuntimeProvider implements Provider<RuntimeInstance> {
-  private static final String VELOCITY_FILE_RESOURCE_LOADER_PATH = "file.resource.loader.path";
-  private static final String VELOCITY_FILE_RESOURCE_LOADER_CLASS = "file.resource.loader.class";
-  private static final String VELOCITY_CLASS_RESOURCE_LOADER_CLASS = "class.resource.loader.class";
-  private static final String VELOCITY_JAR_RESOURCE_LOADER_CLASS = "jar.resource.loader.class";
-  private static final String VELOCITY_JAR_RESOURCE_LOADER_PATH = "jar.resource.loader.path";
-  private static final String VELOCITY_RESOURCE_LOADER = "resource.loader";
+  private static final String VELOCITY_FILE_RESOURCE_LOADER_PATH = "resource.loader.file.path";
+  private static final String VELOCITY_FILE_RESOURCE_LOADER_CLASS = "resource.loader.jar.path";
+  private static final String VELOCITY_CLASS_RESOURCE_LOADER_CLASS = "resource.loader.class.class";
+  private static final String VELOCITY_JAR_RESOURCE_LOADER_CLASS = "resource.loader.jar.class";
+  private static final String VELOCITY_JAR_RESOURCE_LOADER_PATH = "resource.loader.jar.path";
+  private static final String VELOCITY_RESOURCE_LOADER = "resource.loaders";
   private final SitePaths site;
   private String pluginName;
 
@@ -90,7 +91,7 @@
         "Cannot find any Jar file in "
             + pluginName
             + " plugin class loader URLs "
-            + jarUrls
+            + Arrays.toString(jarUrls)
             + ": unable to initialize Velocity resource loading.");
   }
 }