Merge branch 'stable-2.15'

* stable-2.15:
  Adjust comment related to commonmark dependency

Change-Id: I44bfc1194e9f27f269ed33652f813dcdfd7dda45
diff --git a/WORKSPACE b/WORKSPACE
index 025c566..3b1809f 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -3,27 +3,27 @@
 load("//:bazlets.bzl", "load_bazlets")
 
 load_bazlets(
-    commit = "60296e8f7162f279e3885a92014bc69252935612",
+    commit = "3a53199198db3f49a43b7708c2c3352670393717",
     #    local_path = "/home/<user>/projects/bazlets",
 )
 
 #Snapshot Plugin API
-#load(
-#   "@com_googlesource_gerrit_bazlets//:gerrit_api_maven_local.bzl",
-#   "gerrit_api_maven_local",
-#)
-
-# Load snapshot Plugin API
-#gerrit_api_maven_local()
-
-# Release Plugin API
 load(
-    "@com_googlesource_gerrit_bazlets//:gerrit_api.bzl",
-    "gerrit_api",
+   "@com_googlesource_gerrit_bazlets//:gerrit_api_maven_local.bzl",
+   "gerrit_api_maven_local",
 )
 
+# Load snapshot Plugin API
+gerrit_api_maven_local()
+
+# Release Plugin API
+#load(
+#    "@com_googlesource_gerrit_bazlets//:gerrit_api.bzl",
+#    "gerrit_api",
+#)
+
 # Load release Plugin API
-gerrit_api()
+#gerrit_api()
 
 load("//:external_plugin_deps.bzl", "external_plugin_deps")
 
diff --git a/external_plugin_deps.bzl b/external_plugin_deps.bzl
index 9564d14..5951d5f 100644
--- a/external_plugin_deps.bzl
+++ b/external_plugin_deps.bzl
@@ -5,8 +5,8 @@
 def external_plugin_deps():
   maven_jar(
     name = 'gitiles_servlet',
-    artifact = 'com.google.gitiles:gitiles-servlet:0.2-5',
-    sha1 = '18186bd83a8c52a4a965472fcb9b4ea87862eb35',
+    artifact = 'com.google.gitiles:gitiles-servlet:0.2-6',
+    sha1 = '74a3b22c9283adafafa1e388d62f693e5e2fab2b',
     repository = GERRIT,
   )
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitiles/FilteredRepository.java b/src/main/java/com/googlesource/gerrit/plugins/gitiles/FilteredRepository.java
index 01a777d..49c05a3 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gitiles/FilteredRepository.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitiles/FilteredRepository.java
@@ -21,8 +21,8 @@
 import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.server.CurrentUser;
 import com.google.gerrit.server.git.GitRepositoryManager;
-import com.google.gerrit.server.git.VisibleRefFilter;
 import com.google.gerrit.server.permissions.PermissionBackend;
+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.gerrit.server.project.NoSuchProjectException;
@@ -49,7 +49,6 @@
     private final Provider<CurrentUser> userProvider;
     private final ProjectCache projectCache;
     private final GitRepositoryManager repoManager;
-    private final VisibleRefFilter.Factory visibleRefFilterFactory;
     private final PermissionBackend permissionBackend;
 
     @Inject
@@ -57,12 +56,10 @@
         ProjectCache projectCache,
         Provider<CurrentUser> userProvider,
         GitRepositoryManager repoManager,
-        VisibleRefFilter.Factory visibleRefFilterFactory,
         PermissionBackend permissionBackend) {
       this.userProvider = userProvider;
       this.projectCache = projectCache;
       this.repoManager = repoManager;
-      this.visibleRefFilterFactory = visibleRefFilterFactory;
       this.permissionBackend = permissionBackend;
     }
 
@@ -73,7 +70,7 @@
         throw new NoSuchProjectException(name);
       }
       return new FilteredRepository(
-          projectState, userProvider.get(), repoManager.openRepository(name), visibleRefFilterFactory, permissionBackend);
+          projectState, userProvider.get(), repoManager.openRepository(name), permissionBackend);
     }
   }
 
@@ -84,17 +81,13 @@
       ProjectState projectState,
       CurrentUser user,
       Repository delegate,
-      VisibleRefFilter.Factory refFilterFactory,
       PermissionBackend permissionBackend)
       throws PermissionBackendException {
     super(toBuilder(delegate));
     this.delegate = delegate;
     boolean visible = true;
     try {
-      permissionBackend
-          .user(user)
-          .project(projectState.getNameKey())
-          .check(ProjectPermission.READ);
+      permissionBackend.user(user).project(projectState.getNameKey()).check(ProjectPermission.READ);
     } catch (AuthException e) {
       visible = false;
     }
@@ -105,7 +98,7 @@
 
       this.refdb =
           new FilteredRefDatabase(
-              delegate.getRefDatabase(), refFilterFactory.create(projectState, delegate));
+              delegate, permissionBackend.user(user).project(projectState.getNameKey()));
     }
   }
 
@@ -166,12 +159,12 @@
   }
 
   private static class FilteredRefDatabase extends RefDatabase {
-    private final RefDatabase delegate;
-    private final VisibleRefFilter refFilter;
+    private final Repository git;
+    private final PermissionBackend.ForProject perm;
 
-    private FilteredRefDatabase(RefDatabase delegate, VisibleRefFilter refFilter) {
-      this.delegate = delegate;
-      this.refFilter = refFilter;
+    private FilteredRefDatabase(Repository git, PermissionBackend.ForProject perm) {
+      this.git = git;
+      this.perm = perm;
     }
 
     @Override
@@ -186,7 +179,7 @@
 
     @Override
     public boolean isNameConflicting(String name) throws IOException {
-      return delegate.isNameConflicting(name);
+      return git.getRefDatabase().isNameConflicting(name);
     }
 
     @Override
@@ -201,25 +194,50 @@
 
     @Override
     public Ref exactRef(String name) throws IOException {
-      Ref ref = delegate.exactRef(name);
+      Ref ref = git.getRefDatabase().exactRef(name);
       if (ref == null) {
         return null;
       }
-      return refFilter.filter(ImmutableMap.of(name, ref), true).get(name);
+      try {
+        return perm.filter(
+                ImmutableMap.of(name, ref),
+                git,
+                RefFilterOptions.builder().setFilterTagsSeparately(true).build())
+            .get(name);
+      } catch (PermissionBackendException e) {
+        throw new IOException(e);
+      }
     }
 
     @Override
     public Ref getRef(String name) throws IOException {
-      Ref ref = delegate.getRef(name);
+      Ref ref = git.getRefDatabase().getRef(name);
       if (ref == null) {
         return null;
       }
-      return refFilter.filter(ImmutableMap.of(ref.getName(), ref), true).get(ref.getName());
+      try {
+        return perm.filter(
+                ImmutableMap.of(ref.getName(), ref),
+                git,
+                RefFilterOptions.builder().setFilterTagsSeparately(true).build())
+            .get(ref.getName());
+      } catch (PermissionBackendException e) {
+        throw new IOException(e);
+      }
     }
 
     @Override
     public Map<String, Ref> getRefs(String prefix) throws IOException {
-      Map<String, Ref> refs = refFilter.filter(delegate.getRefs(prefix), true);
+      Map<String, Ref> refs;
+      try {
+        refs =
+            perm.filter(
+                git.getRefDatabase().getRefs(prefix),
+                git,
+                RefFilterOptions.builder().setFilterTagsSeparately(true).build());
+      } catch (PermissionBackendException e) {
+        throw new IOException(e);
+      }
       Map<String, Ref> result = Maps.newHashMapWithExpectedSize(refs.size());
       for (Ref ref : refs.values()) {
         // VisibleRefFilter adds the prefix to the keys, re-strip it.
@@ -230,7 +248,7 @@
 
     @Override
     public List<Ref> getAdditionalRefs() throws IOException {
-      List<Ref> refs = delegate.getAdditionalRefs();
+      List<Ref> refs = git.getRefDatabase().getAdditionalRefs();
       Map<String, Ref> result = Maps.newHashMapWithExpectedSize(refs.size());
       for (Ref ref : refs) {
         result.put(ref.getName(), ref);
@@ -240,7 +258,7 @@
 
     @Override
     public Ref peel(Ref ref) throws IOException {
-      return delegate.peel(ref);
+      return git.getRefDatabase().peel(ref);
     }
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitiles/GerritGitilesAccess.java b/src/main/java/com/googlesource/gerrit/plugins/gitiles/GerritGitilesAccess.java
index 61641d3..3b833ba 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gitiles/GerritGitilesAccess.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitiles/GerritGitilesAccess.java
@@ -21,13 +21,13 @@
 import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.server.CurrentUser;
 import com.google.gerrit.server.IdentifiedUser;
-import com.google.gerrit.server.config.SitePaths;
 import com.google.gerrit.server.config.AnonymousCowardName;
+import com.google.gerrit.server.config.SitePaths;
 import com.google.gerrit.server.permissions.PermissionBackendException;
-import com.google.gerrit.server.project.ListProjects;
 import com.google.gerrit.server.project.ProjectCache;
 import com.google.gerrit.server.project.ProjectJson;
 import com.google.gerrit.server.project.ProjectState;
+import com.google.gerrit.server.restapi.project.ListProjects;
 import com.google.gitiles.GitilesAccess;
 import com.google.gitiles.GitilesUrls;
 import com.google.gitiles.RepositoryDescription;
@@ -39,13 +39,13 @@
 import java.util.Map;
 import java.util.Set;
 import javax.servlet.http.HttpServletRequest;
-import org.eclipse.jgit.errors.RepositoryNotFoundException;
 import org.eclipse.jgit.errors.ConfigInvalidException;
+import org.eclipse.jgit.errors.RepositoryNotFoundException;
 import org.eclipse.jgit.lib.Config;
 import org.eclipse.jgit.storage.file.FileBasedConfig;
-import org.eclipse.jgit.util.FS;
 import org.eclipse.jgit.transport.resolver.ServiceNotAuthorizedException;
 import org.eclipse.jgit.transport.resolver.ServiceNotEnabledException;
+import org.eclipse.jgit.util.FS;
 
 class GerritGitilesAccess implements GitilesAccess {
   // Assisted injection doesn't work with the overridden method, so write the
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitiles/GitilesWeblinks.java b/src/main/java/com/googlesource/gerrit/plugins/gitiles/GitilesWeblinks.java
index 267c435..b4a206c 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gitiles/GitilesWeblinks.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitiles/GitilesWeblinks.java
@@ -63,8 +63,9 @@
 
     Config config = configFactory.getGlobalPluginConfig("gitiles");
     name = MoreObjects.firstNonNull(config.getString("gerrit", null, "linkname"), "browse");
-    baseUrl = MoreObjects.firstNonNull(config.getString("gerrit", null, "baseUrl"),
-        baseGerritUrl + "plugins/" + pluginName);
+    baseUrl =
+        MoreObjects.firstNonNull(
+            config.getString("gerrit", null, "baseUrl"), baseGerritUrl + "plugins/" + pluginName);
 
     target = MoreObjects.firstNonNull(config.getString("gerrit", null, "target"), Target.BLANK);
   }