Adapt to PermissionBackend API Change-Id: I1b982fc54f9aa53dedb2c403f2bebc50a1e56c76
diff --git a/pom.xml b/pom.xml index 15a4f17..e2b7b28 100644 --- a/pom.xml +++ b/pom.xml
@@ -23,7 +23,7 @@ <artifactId>metrics-reporter-prometheus</artifactId> <name>metrics-reporter-prometheus</name> <packaging>jar</packaging> - <version>2.14</version> + <version>2.15</version> <properties> <Gerrit-ApiType>plugin</Gerrit-ApiType> <Gerrit-ApiVersion>${project.version}</Gerrit-ApiVersion>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/metricsreporters/CapabilityChecker.java b/src/main/java/com/googlesource/gerrit/plugins/metricsreporters/CapabilityChecker.java index 32ca8f6..b574e40 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/metricsreporters/CapabilityChecker.java +++ b/src/main/java/com/googlesource/gerrit/plugins/metricsreporters/CapabilityChecker.java
@@ -13,26 +13,43 @@ // limitations under the License. package com.googlesource.gerrit.plugins.metricsreporters; +import com.google.common.collect.ImmutableSet; import com.google.gerrit.extensions.annotations.PluginName; +import com.google.gerrit.extensions.api.access.PluginPermission; +import com.google.gerrit.extensions.restapi.AuthException; import com.google.gerrit.server.CurrentUser; -import com.google.gerrit.server.account.CapabilityControl; +import com.google.gerrit.server.permissions.GlobalPermission; +import com.google.gerrit.server.permissions.PermissionBackend; +import com.google.gerrit.server.permissions.PermissionBackendException; import com.google.inject.Inject; import com.google.inject.Provider; +import com.google.inject.Singleton; +@Singleton public class CapabilityChecker { + private final PermissionBackend permissionBackend; private final Provider<CurrentUser> userProvider; - private final String capabilityName; - + private final String pluginName; @Inject - CapabilityChecker(Provider<CurrentUser> userProvider, + CapabilityChecker( + PermissionBackend permissionBackend, + Provider<CurrentUser> userProvider, @PluginName String pluginName) { + this.permissionBackend = permissionBackend; this.userProvider = userProvider; - this.capabilityName = String.format("%s-%s", pluginName, - ViewMetricsCapability.ID); + this.pluginName = pluginName; } - public boolean canViewMetrics() { - CapabilityControl ctl = userProvider.get().getCapabilities(); - return ctl.canAdministrateServer() || ctl.canPerform(capabilityName); + try { + permissionBackend + .user(userProvider) + .checkAny( + ImmutableSet.of( + GlobalPermission.ADMINISTRATE_SERVER, + new PluginPermission(pluginName, ViewMetricsCapability.ID))); + return true; + } catch (AuthException | PermissionBackendException e) { + return false; + } } } \ No newline at end of file