From c42a0bbb871e8564e0c9704b4c6ee2f02e5a084b Mon Sep 17 00:00:00 2001 From: Matt Willer Date: Fri, 9 Nov 2018 16:46:57 -0800 Subject: [PATCH] Add global setting for max requests --- src/main/java/com/box/sdk/BoxAPIConnection.java | 2 +- src/main/java/com/box/sdk/BoxAPIRequest.java | 2 +- .../java/com/box/sdk/BoxGlobalSettings.java | 17 +++++++++++++++++ .../java/com/box/sdk/BoxAPIConnectionTest.java | 15 +++++++++++++++ 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/box/sdk/BoxAPIConnection.java b/src/main/java/com/box/sdk/BoxAPIConnection.java index 8a920764f..6cff50e67 100644 --- a/src/main/java/com/box/sdk/BoxAPIConnection.java +++ b/src/main/java/com/box/sdk/BoxAPIConnection.java @@ -95,7 +95,7 @@ public BoxAPIConnection(String clientID, String clientSecret, String accessToken this.baseURL = DEFAULT_BASE_URL; this.baseUploadURL = DEFAULT_BASE_UPLOAD_URL; this.autoRefresh = true; - this.maxRequestAttempts = DEFAULT_MAX_ATTEMPTS; + this.maxRequestAttempts = BoxGlobalSettings.getMaxRequestAttempts(); this.refreshLock = new ReentrantReadWriteLock(); this.userAgent = "Box Java SDK v" + SDK_VERSION + " (Java " + JAVA_VERSION + ")"; this.listeners = new ArrayList(); diff --git a/src/main/java/com/box/sdk/BoxAPIRequest.java b/src/main/java/com/box/sdk/BoxAPIRequest.java index 9560f4634..5ace6f38c 100644 --- a/src/main/java/com/box/sdk/BoxAPIRequest.java +++ b/src/main/java/com/box/sdk/BoxAPIRequest.java @@ -323,7 +323,7 @@ public BoxAPIResponse send() { */ public BoxAPIResponse send(ProgressListener listener) { if (this.api == null) { - this.backoffCounter.reset(BoxAPIConnection.DEFAULT_MAX_ATTEMPTS); + this.backoffCounter.reset(BoxGlobalSettings.getMaxRequestAttempts()); } else { this.backoffCounter.reset(this.api.getMaxRequestAttempts()); } diff --git a/src/main/java/com/box/sdk/BoxGlobalSettings.java b/src/main/java/com/box/sdk/BoxGlobalSettings.java index 28e8204a9..b385168f1 100644 --- a/src/main/java/com/box/sdk/BoxGlobalSettings.java +++ b/src/main/java/com/box/sdk/BoxGlobalSettings.java @@ -6,6 +6,7 @@ public final class BoxGlobalSettings { private static int connectTimeout = 0; private static int readTimeout = 0; + private static int maxRequestAttempts = BoxAPIConnection.DEFAULT_MAX_ATTEMPTS; private BoxGlobalSettings() { } @@ -41,4 +42,20 @@ public static int getReadTimeout() { public static void setReadTimeout(int readTimeout) { BoxGlobalSettings.readTimeout = readTimeout; } + + /** + * Returns the global maximum number of request attempts. + * @return max number of request attempts + */ + public static int getMaxRequestAttempts() { + return maxRequestAttempts; + } + + /** + * Sets the global default maximum number of request attempts. + * @param maxRequestAttempts maximum number of request attempts + */ + public static void setMaxRequestAttempts(int maxRequestAttempts) { + BoxGlobalSettings.maxRequestAttempts = maxRequestAttempts; + } } diff --git a/src/test/java/com/box/sdk/BoxAPIConnectionTest.java b/src/test/java/com/box/sdk/BoxAPIConnectionTest.java index a9eae01af..b5f54c9a3 100644 --- a/src/test/java/com/box/sdk/BoxAPIConnectionTest.java +++ b/src/test/java/com/box/sdk/BoxAPIConnectionTest.java @@ -662,4 +662,19 @@ public String getJSON() { BoxFile.Info info = new BoxFile(api, "98765").getInfo(); } + + @Test + @Category(UnitTest.class) + public void shouldUseGlobalMaxRequests() { + + int defaultMaxRequests = BoxGlobalSettings.getMaxRequestAttempts(); + int newMaxRequests = defaultMaxRequests + 5; + BoxGlobalSettings.setMaxRequestAttempts(newMaxRequests); + + BoxAPIConnection api = new BoxAPIConnection(""); + assertEquals(newMaxRequests, api.getMaxRequestAttempts()); + + // Set back the original number to not interfere with other test cases + BoxGlobalSettings.setMaxRequestAttempts(defaultMaxRequests); + } }