Disable retries if maxAllowedRetries is 0

Allow admins to disable retries globally.

Change-Id: I5394c450104f1adf86a0287a0fa7ac1ae0af97a5
diff --git a/src/main/java/com/googlesource/gerrit/plugins/webhooks/Configuration.java b/src/main/java/com/googlesource/gerrit/plugins/webhooks/Configuration.java
index 3c3f67b..fbe38bc 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/webhooks/Configuration.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/webhooks/Configuration.java
@@ -37,6 +37,7 @@
   public static final String MAX_ALLOWED_TRIES = "maxAllowedTries";
   public static final String MAX_ALLOWED_RETRY_INTERVAL = "maxAllowedRetryInterval";
 
+  public static final int UNSET_CONFIG_INT = -1;
   public static final int DEFAULT_TIMEOUT_MS = 5000;
   public static final int DEFAULT_MAX_TRIES = 5;
   public static final int DEFAULT_RETRY_INTERVAL = 1000;
@@ -69,7 +70,7 @@
     allowedUrlPatterns = cfg.getStringList(ALLOWED_URL_PATTERN);
     maxAllowedConnectionTimeout = cfg.getInt(MAX_ALLOWED_CONNECTION_TIMEOUT, 0);
     maxAllowedSocketTimeout = cfg.getInt(MAX_ALLOWED_SOCKET_TIMEOUT, 0);
-    maxAllowedTries = cfg.getInt(MAX_ALLOWED_TRIES, 0);
+    maxAllowedTries = cfg.getInt(MAX_ALLOWED_TRIES, UNSET_CONFIG_INT);
     maxAllowedRetryInterval = cfg.getInt(MAX_ALLOWED_RETRY_INTERVAL, 0);
   }
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/webhooks/RemoteConfig.java b/src/main/java/com/googlesource/gerrit/plugins/webhooks/RemoteConfig.java
index 5b9686a..2949b90 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/webhooks/RemoteConfig.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/webhooks/RemoteConfig.java
@@ -14,6 +14,8 @@
 
 package com.googlesource.gerrit.plugins.webhooks;
 
+import static com.googlesource.gerrit.plugins.webhooks.Configuration.UNSET_CONFIG_INT;
+
 import com.google.inject.Inject;
 import com.google.inject.assistedinject.Assisted;
 import java.util.Arrays;
@@ -83,9 +85,10 @@
   }
 
   public int getMaxTries() {
+    int maxAllowedRetries = global.getMaxAllowedTries();
     int maxTries = config.getInt(REMOTE, name, MAX_TRIES, global.getMaxTries());
-    return (global.getMaxAllowedTries() > 0)
-        ? Math.min(maxTries, global.getMaxAllowedTries())
+    return (maxAllowedRetries != UNSET_CONFIG_INT)
+        ? Math.min(maxTries, maxAllowedRetries)
         : maxTries;
   }
 
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md
index f4b3250..af1fbed 100644
--- a/src/main/resources/Documentation/config.md
+++ b/src/main/resources/Documentation/config.md
@@ -89,6 +89,7 @@
 @PLUGIN@.maxAllowedTries
 :   Maximum allowed value for the retries. If a value greater than this is
     configured in the @PLUGIN@.config, this value will be chosen instead.
+    If this is set to 0, retries are disabled.
 
 @PLUGIN@.maxAllowedRetryInterval
 :   Maximum allowed value for the retry interval. If a value greater than