Merge branch 'stable-2.13'

* stable-2.13:
  Update Javamelody project URL
  Update javamelody-core to 1.62.0
  Build with plugin API version 2.13.2

Change-Id: I2f1365acaefad5e89a41419e38a527aa1243c7e7
diff --git a/lib/gerrit/BUCK b/lib/gerrit/BUCK
index 881428f..47e5330 100644
--- a/lib/gerrit/BUCK
+++ b/lib/gerrit/BUCK
@@ -1,12 +1,11 @@
 include_defs('//bucklets/maven_jar.bucklet')
 
-VER = '2.13.2'
-REPO = MAVEN_CENTRAL
+VER = '2.14-SNAPSHOT'
+REPO = MAVEN_LOCAL
 
 maven_jar(
   name = 'plugin-api',
   id = 'com.google.gerrit:gerrit-plugin-api:' + VER,
-  sha1 = '3cdeb17c2b0f945e71135ef6abe5a1db59b9d313',
   license = 'Apache2.0',
   attach_source = False,
   repository = REPO,
diff --git a/src/main/java/com/googlesource/gerrit/plugins/javamelody/CapabilityChecker.java b/src/main/java/com/googlesource/gerrit/plugins/javamelody/CapabilityChecker.java
new file mode 100644
index 0000000..ab38db2
--- /dev/null
+++ b/src/main/java/com/googlesource/gerrit/plugins/javamelody/CapabilityChecker.java
@@ -0,0 +1,43 @@
+// Copyright (C) 2016 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.javamelody;
+
+import com.google.gerrit.extensions.annotations.PluginName;
+import com.google.gerrit.server.CurrentUser;
+import com.google.gerrit.server.account.CapabilityControl;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class CapabilityChecker {
+  private final Provider<CurrentUser> userProvider;
+  private final String capabilityName;
+
+  @Inject
+  CapabilityChecker(Provider<CurrentUser> userProvider,
+      @PluginName String pluginName) {
+    this.userProvider = userProvider;
+    this.capabilityName =
+        String.format("%s-%s", pluginName, MonitoringCapability.ID);
+  }
+
+  public boolean canMonitor() {
+    if (userProvider.get().isIdentifiedUser()) {
+      CapabilityControl ctl = userProvider.get().getCapabilities();
+      return ctl.canAdministrateServer()
+          || ctl.canPerform(capabilityName);
+    }
+    return false;
+  }
+}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/javamelody/GerritMonitoringFilter.java b/src/main/java/com/googlesource/gerrit/plugins/javamelody/GerritMonitoringFilter.java
index 663faf8..2919502 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/javamelody/GerritMonitoringFilter.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/javamelody/GerritMonitoringFilter.java
@@ -14,12 +14,8 @@
 
 package com.googlesource.gerrit.plugins.javamelody;
 
-import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.httpd.AllRequestFilter;
-import com.google.gerrit.server.CurrentUser;
-import com.google.gerrit.server.account.CapabilityControl;
 import com.google.inject.Inject;
-import com.google.inject.Provider;
 import com.google.inject.Singleton;
 
 import net.bull.javamelody.MonitoringFilter;
@@ -37,16 +33,13 @@
 @Singleton
 class GerritMonitoringFilter extends AllRequestFilter {
   private final JavamelodyFilter monitoring;
-  private final Provider<CurrentUser> userProvider;
-  private final String pluginName;
+  private final CapabilityChecker capabilityChecker;
 
   @Inject
   GerritMonitoringFilter(JavamelodyFilter monitoring,
-      Provider<CurrentUser> userProvider,
-      @PluginName String pluginName) {
+      CapabilityChecker capabilityChecker) {
     this.monitoring = monitoring;
-    this.userProvider = userProvider;
-    this.pluginName = pluginName;
+    this.capabilityChecker = capabilityChecker;
   }
 
   @Override
@@ -82,13 +75,7 @@
   private boolean canMonitor(HttpServletRequest httpRequest) {
     if (httpRequest.getRequestURI().equals(monitoring
         .getJavamelodyUrl(httpRequest))) {
-      if (userProvider.get().isIdentifiedUser()) {
-        CapabilityControl ctl = userProvider.get().getCapabilities();
-        return ctl.canAdministrateServer()
-            || ctl.canPerform(String.format("%s-%s",
-               pluginName, MonitoringCapability.ID));
-      }
-      return false;
+      return capabilityChecker.canMonitor();
     }
     return true;
   }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/javamelody/MonitoringTopMenu.java b/src/main/java/com/googlesource/gerrit/plugins/javamelody/MonitoringTopMenu.java
index 16baac0..7159404 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/javamelody/MonitoringTopMenu.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/javamelody/MonitoringTopMenu.java
@@ -15,29 +15,19 @@
 package com.googlesource.gerrit.plugins.javamelody;
 
 import com.google.common.collect.Lists;
-import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.extensions.client.MenuItem;
 import com.google.gerrit.extensions.webui.TopMenu;
-import com.google.gerrit.server.CurrentUser;
-import com.google.gerrit.server.account.CapabilityControl;
 import com.google.inject.Inject;
-import com.google.inject.Provider;
 
 import java.util.Collections;
 import java.util.List;
 
 public class MonitoringTopMenu implements TopMenu {
-  private final List<MenuEntry> menuEntries;
-  private final Provider<CurrentUser> userProvider;
-  private final String pluginName;
+  private final List<MenuEntry> menuEntries = Lists.newArrayList();
 
   @Inject
-  public MonitoringTopMenu(Provider<CurrentUser> userProvider,
-      @PluginName String pluginName) {
-    this.userProvider = userProvider;
-    this.pluginName = pluginName;
-    menuEntries = Lists.newArrayList();
-    if (canMonitor()) {
+  public MonitoringTopMenu(CapabilityChecker capabilityChecker) {
+    if (capabilityChecker.canMonitor()) {
       menuEntries.add(new MenuEntry("Monitoring", Collections
           .singletonList(new MenuItem("JavaMelody", "monitoring"))));
     }
@@ -47,14 +37,4 @@
   public List<MenuEntry> getEntries() {
     return menuEntries;
   }
-
-  private boolean canMonitor() {
-    if (userProvider.get().isIdentifiedUser()) {
-      CapabilityControl ctl = userProvider.get().getCapabilities();
-      return ctl.canAdministrateServer()
-          || ctl.canPerform(String.format("%s-%s",
-             pluginName, MonitoringCapability.ID));
-    }
-    return false;
-  }
 }