Upgrade to Gerrit v2.15.2

CapabilityControl is now AccountLimits on the latest stable-2.15.
It is not possibly anymore to keep support for legacy CapabilityControl
and thus compatibility with Gerrit <= 2.14 is now broken.

Change-Id: I3220658a1cd8cd40c6365d7af10e1bbf02724744
diff --git a/build.sbt b/build.sbt
index 62635ef..3cc7a6b 100644
--- a/build.sbt
+++ b/build.sbt
@@ -6,7 +6,7 @@
 
 scalaVersion := "2.11.8"
 
-val gerritVersion = "2.15.1"
+val gerritVersion = "2.15.2"
 
 val scalatraV = "2.4.+"
 
diff --git a/src/main/scala/com/googlesource/gerrit/plugins/support/GerritFacade.scala b/src/main/scala/com/googlesource/gerrit/plugins/support/GerritFacade.scala
index 1bb9b0c..7f4a9f8 100644
--- a/src/main/scala/com/googlesource/gerrit/plugins/support/GerritFacade.scala
+++ b/src/main/scala/com/googlesource/gerrit/plugins/support/GerritFacade.scala
@@ -17,12 +17,11 @@
 package com.googlesource.gerrit.plugins.support
 
 import com.google.gerrit.extensions.restapi.TopLevelResource
-import com.google.gerrit.server.account.CapabilityControl
+import com.google.gerrit.server.account.AccountLimits
 import com.google.gerrit.server.plugins.{ListPlugins, PluginsCollection}
 import com.google.gson.JsonElement
 import com.google.inject.{ImplementedBy, Inject}
 import com.googlesource.gerrit.plugins.support.latest.LatestCapabilityControl
-import com.googlesource.gerrit.plugins.support.legacy.LegacyCapabilityControl
 
 import scala.util.{Failure, Success, Try}
 
@@ -30,11 +29,10 @@
 
   class PluginName(val value: String) extends AnyRef
 
-  implicit class PimpedCapabilityControl(val cc: CapabilityControl) extends AnyVal {
+  implicit class PimpedCapabilityControl(val cc: AccountLimits) extends AnyVal {
 
     def canDo(operation: String)(implicit pluginName: PluginName) =
       LatestCapabilityControl(cc).canPerform(operation)
-        .orElse(LegacyCapabilityControl(cc).canPerform(operation))
         .get
   }
 }
diff --git a/src/main/scala/com/googlesource/gerrit/plugins/support/GerritSupportServlet.scala b/src/main/scala/com/googlesource/gerrit/plugins/support/GerritSupportServlet.scala
index 60bc037..e223db6 100644
--- a/src/main/scala/com/googlesource/gerrit/plugins/support/GerritSupportServlet.scala
+++ b/src/main/scala/com/googlesource/gerrit/plugins/support/GerritSupportServlet.scala
@@ -20,6 +20,7 @@
 
 import com.google.gerrit.extensions.annotations.{PluginName => GerritPlugiName}
 import com.google.gerrit.server.CurrentUser
+import com.google.gerrit.server.account.AccountLimits
 import com.google.inject.{Inject, Provider, Singleton}
 import com.googlesource.gerrit.plugins.support.GerritFacade._
 import com.googlesource.gerrit.plugins.support.latest.CollectServerDataCapability._
@@ -36,6 +37,7 @@
                                      bundleFactory: SupportBundleFile,
                                      mimeDetector: ExtensionMimeDetector,
                                      currentUserProvider: Provider[CurrentUser],
+                                     accountLimitsFactory: AccountLimits.Factory,
                                      @GerritPlugiName gerritPluginName: String)
   extends ScalatraServlet with Mimes {
   val log = LoggerFactory.getLogger(classOf[GerritSupportServlet])
@@ -75,7 +77,7 @@
   private def requireAdministrateServerPermissions(block: => ActionResult) = {
     val currentUser = currentUserProvider.get
     currentUser match {
-      case user if user.isIdentifiedUser && user.getCapabilities.canDo(COLLECT_SERVER_DATA) => block
+      case user if user.isIdentifiedUser && accountLimitsFactory.create(user).canDo(COLLECT_SERVER_DATA) => block
       case _ => Forbidden("NOT ALLOWED to collect server data")
     }
   }
diff --git a/src/main/scala/com/googlesource/gerrit/plugins/support/latest/LatestCapabilityControl.scala b/src/main/scala/com/googlesource/gerrit/plugins/support/latest/LatestCapabilityControl.scala
index b2430ca..71d20cd 100644
--- a/src/main/scala/com/googlesource/gerrit/plugins/support/latest/LatestCapabilityControl.scala
+++ b/src/main/scala/com/googlesource/gerrit/plugins/support/latest/LatestCapabilityControl.scala
@@ -16,13 +16,13 @@
 
 package com.googlesource.gerrit.plugins.support.latest
 
-import com.google.gerrit.server.account.CapabilityControl
+import com.google.gerrit.server.account.AccountLimits
 import com.googlesource.gerrit.plugins.support.GerritFacade.PluginName
 
 import scala.util.Try
 import com.googlesource.gerrit.plugins.support.TryAll
 
-class LatestCapabilityControl(val capabilityControl: CapabilityControl)(implicit pluginName: PluginName) {
+class LatestCapabilityControl(val capabilityControl: AccountLimits)(implicit pluginName: PluginName) {
 
   import LatestCapabilityControl._
 
@@ -52,8 +52,8 @@
   }.flatten
 
   lazy val checkPermissionMethod = TryAll {
-    GlobalOrPluginPermissionClass.map(classOf[CapabilityControl].getMethod("doCanForDefaultPermissionBackend", _))
+    GlobalOrPluginPermissionClass.map(classOf[AccountLimits].getMethod("doCanForDefaultPermissionBackend", _))
   }.flatten
 
-  def apply(cc: CapabilityControl)(implicit pluginName: PluginName) = new LatestCapabilityControl(cc)
+  def apply(cc: AccountLimits)(implicit pluginName: PluginName) = new LatestCapabilityControl(cc)
 }
diff --git a/src/main/scala/com/googlesource/gerrit/plugins/support/legacy/LegacyCapabilityControl.scala b/src/main/scala/com/googlesource/gerrit/plugins/support/legacy/LegacyCapabilityControl.scala
deleted file mode 100644
index b00e988..0000000
--- a/src/main/scala/com/googlesource/gerrit/plugins/support/legacy/LegacyCapabilityControl.scala
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.googlesource.gerrit.plugins.support.legacy
-
-import com.google.gerrit.server.account.CapabilityControl
-import com.googlesource.gerrit.plugins.support.GerritFacade.PluginName
-import com.googlesource.gerrit.plugins.support.TryAll
-
-import scala.util.Try
-
-class LegacyCapabilityControl(val capabilityControl: CapabilityControl)(implicit pluginName: PluginName) {
-
-  import LegacyCapabilityControl._
-
-  def canPerform(operation: String): Try[Boolean] = TryAll {
-    canPerformMethod.map(_.invoke(capabilityControl, s"${pluginName.value}-$operation").asInstanceOf[Boolean])
-  }.flatten
-}
-
-object LegacyCapabilityControl {
-  lazy val canPerformMethod = TryAll {
-    classOf[CapabilityControl].getMethod("canPerform", classOf[String])
-  }
-
-  def apply(cc: CapabilityControl)(implicit pluginName: PluginName) = new LegacyCapabilityControl(cc)
-}