From e216a111830ce2b025d321254f35341abe0161ec Mon Sep 17 00:00:00 2001 From: Nate Harris Date: Fri, 28 Jan 2022 15:48:03 -0700 Subject: [PATCH 1/7] T38121 [Java CL] Add Getters/Setters for the Request and Connection Timeouts - Add setters/getters for all three timeouts - Add test to check that setters/getters operate as expected - Code rearrangement per file layout rules --- .../com/easypost/net/EasyPostResource.java | 59 +++++++++++++++++-- src/test/java/com/easypost/EasyPostTest.java | 13 +++- 2 files changed, 67 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/easypost/net/EasyPostResource.java b/src/main/java/com/easypost/net/EasyPostResource.java index ead83b36f..2c4652e1d 100644 --- a/src/main/java/com/easypost/net/EasyPostResource.java +++ b/src/main/java/com/easypost/net/EasyPostResource.java @@ -59,10 +59,13 @@ public abstract class EasyPostResource { new ArrayList<>(Arrays.asList("getCreatedAt", "getUpdatedAt", "getFees")); private static final int DEFAULT_CONNECT_TIMEOUT_MILLISECONDS = 30000; private static final int DEFAULT_READ_TIMEOUT_MILLISECONDS = 60000; - private static final double APP_ENGINE_DEFAULT_TIMEOUT_SECONDS = 20.0; + private static final double DEFAULT_APP_ENGINE_TIMEOUT_SECONDS = 20.0; private static final String DNS_CACHE_TTL_PROPERTY_NAME = "networkaddress.cache.ttl"; // Set this property to override your environment's default URLStreamHandler. private static final String CUSTOM_URL_STREAM_HANDLER_PROPERTY_NAME = "com.easypost.net.customURLStreamHandler"; + private static int connectTimeoutMilliseconds = DEFAULT_CONNECT_TIMEOUT_MILLISECONDS; + private static int readTimeoutMilliseconds = DEFAULT_READ_TIMEOUT_MILLISECONDS; + private static double appEngineTimeoutSeconds = DEFAULT_APP_ENGINE_TIMEOUT_SECONDS; private Date createdAt; private Date updatedAt; private ArrayList fees; @@ -150,13 +153,13 @@ private static javax.net.ssl.HttpsURLConnection createEasyPostConnection(final S easypostURL = new URL(url); } javax.net.ssl.HttpsURLConnection conn = (javax.net.ssl.HttpsURLConnection) easypostURL.openConnection(); - conn.setConnectTimeout(DEFAULT_CONNECT_TIMEOUT_MILLISECONDS); + conn.setConnectTimeout(getConnectTimeoutMilliseconds()); int readTimeout; if (EasyPost.readTimeout != 0) { readTimeout = EasyPost.readTimeout; } else { - readTimeout = DEFAULT_READ_TIMEOUT_MILLISECONDS; + readTimeout = getReadTimeoutMilliseconds(); } conn.setReadTimeout(readTimeout); @@ -470,7 +473,7 @@ private static EasyPostResponse makeAppEngineRequest(final RequestMethod method, // Heroku times out after 30s, so leave some time for the API to return a response fetchOptionsClass.getDeclaredMethod("setDeadline", java.lang.Double.class) - .invoke(fetchOptions, APP_ENGINE_DEFAULT_TIMEOUT_SECONDS); + .invoke(fetchOptions, getAppEngineTimeoutSeconds()); Class requestClass = Class.forName("com.google.appengine.api.urlfetch.HTTPRequest"); @@ -525,6 +528,54 @@ private static EasyPostResponse makeAppEngineRequest(final RequestMethod method, } } + /** + * Get the timeout in milliseconds for normal API requests. + * @return the timeout in milliseconds + */ + public static int getConnectTimeoutMilliseconds() { + return connectTimeoutMilliseconds; + } + + /** + * Set the timeout in milliseconds for normal API requests. + * @param milliseconds the timeout in milliseconds + */ + public static void setConnectTimeoutMilliseconds(int milliseconds) { + connectTimeoutMilliseconds = milliseconds; + } + + /** + * Get the timeout in milliseconds for reading API responses. + * @return the timeout in milliseconds + */ + public static int getReadTimeoutMilliseconds() { + return readTimeoutMilliseconds; + } + + /** + * Set the timeout in milliseconds for reading API responses. + * @param milliseconds the timeout in milliseconds + */ + public static void setReadTimeoutMilliseconds(int milliseconds) { + readTimeoutMilliseconds = milliseconds; + } + + /** + * Get the timeout in milliseconds for App Engine API requests. + * @return the timeout in milliseconds + */ + public static double getAppEngineTimeoutSeconds() { + return appEngineTimeoutSeconds; + } + + /** + * Set the timeout in seconds for App Engine API requests. + * @param seconds the timeout in seconds + */ + public static void setAppEngineTimeoutSeconds(double seconds) { + appEngineTimeoutSeconds = seconds; + } + /** * Returns a string representation of the object. */ diff --git a/src/test/java/com/easypost/EasyPostTest.java b/src/test/java/com/easypost/EasyPostTest.java index e3e9b6e13..06125461a 100644 --- a/src/test/java/com/easypost/EasyPostTest.java +++ b/src/test/java/com/easypost/EasyPostTest.java @@ -128,7 +128,7 @@ public static void setUp() { canadaToAddress.put("zip", "t8n2m4"); canadaToAddress.put("country", "CA"); } - + @Test public void testShipmentWithTracker() throws EasyPostException { // create and buy shipment @@ -1070,6 +1070,17 @@ public void testScanForm() throws EasyPostException { assertEquals("IDs do not match", scanForms.getScanForms().get(0).getId(), scanForm.getId()); } + @Test + public void testClientTimeout() throws EasyPostException { + int timeout = 1; + Order.setConnectTimeoutMilliseconds(timeout); + Order.setReadTimeoutMilliseconds(timeout); + Order.setAppEngineTimeoutSeconds((double) timeout); + assertEquals(Order.getConnectTimeoutMilliseconds(), timeout); + assertEquals(Order.getReadTimeoutMilliseconds(), timeout); + assertEquals(Order.getAppEngineTimeoutSeconds(), timeout, 0.001); + } + //This test needs to have new set of dates to avoid "report already exists" error /* From ecf35de536970e0a435641c8dbb3c5a8f3170522 Mon Sep 17 00:00:00 2001 From: Nate Harris Date: Mon, 31 Jan 2022 12:20:41 -0700 Subject: [PATCH 2/7] - Minor auto-formatting after rebase --- src/main/java/com/easypost/model/EventDeserializer.java | 4 ++-- src/main/java/com/easypost/model/Shipment.java | 6 +++--- src/main/java/com/easypost/net/EasyPostResource.java | 6 ++++++ 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/easypost/model/EventDeserializer.java b/src/main/java/com/easypost/model/EventDeserializer.java index 8749a7407..e4cb34ff2 100644 --- a/src/main/java/com/easypost/model/EventDeserializer.java +++ b/src/main/java/com/easypost/model/EventDeserializer.java @@ -89,8 +89,8 @@ private Object deserializeJsonElement(final JsonElement element) { } else if (element.isJsonArray()) { return deserializeJsonArray(element.getAsJsonArray()); } else { - System.err.printf("Unknown JSON element type for element %s. Please email us at %s.%n", - element.toString(), EasyPostResource.EASYPOST_SUPPORT_EMAIL); + System.err.printf("Unknown JSON element type for element %s. Please email us at %s.%n", element, + EasyPostResource.EASYPOST_SUPPORT_EMAIL); return null; } } diff --git a/src/main/java/com/easypost/model/Shipment.java b/src/main/java/com/easypost/model/Shipment.java index 0e0f983e6..71c5fe133 100644 --- a/src/main/java/com/easypost/model/Shipment.java +++ b/src/main/java/com/easypost/model/Shipment.java @@ -787,9 +787,9 @@ public List getSmartrates(final String apiKey) throws EasyPostException { * @throws EasyPostException when the request fails. */ public List getSmartrates(final Map params, final String apiKey) throws EasyPostException { - SmartrateCollection smartrateCollection = request(RequestMethod.GET, - String.format("%s/smartrate", instanceURL(Shipment.class, this.getId())), params, - SmartrateCollection.class, apiKey); + SmartrateCollection smartrateCollection = + request(RequestMethod.GET, String.format("%s/smartrate", instanceURL(Shipment.class, this.getId())), + params, SmartrateCollection.class, apiKey); return smartrateCollection.getRates(); } diff --git a/src/main/java/com/easypost/net/EasyPostResource.java b/src/main/java/com/easypost/net/EasyPostResource.java index 2c4652e1d..621d51b6b 100644 --- a/src/main/java/com/easypost/net/EasyPostResource.java +++ b/src/main/java/com/easypost/net/EasyPostResource.java @@ -530,6 +530,7 @@ private static EasyPostResponse makeAppEngineRequest(final RequestMethod method, /** * Get the timeout in milliseconds for normal API requests. + * * @return the timeout in milliseconds */ public static int getConnectTimeoutMilliseconds() { @@ -538,6 +539,7 @@ public static int getConnectTimeoutMilliseconds() { /** * Set the timeout in milliseconds for normal API requests. + * * @param milliseconds the timeout in milliseconds */ public static void setConnectTimeoutMilliseconds(int milliseconds) { @@ -546,6 +548,7 @@ public static void setConnectTimeoutMilliseconds(int milliseconds) { /** * Get the timeout in milliseconds for reading API responses. + * * @return the timeout in milliseconds */ public static int getReadTimeoutMilliseconds() { @@ -554,6 +557,7 @@ public static int getReadTimeoutMilliseconds() { /** * Set the timeout in milliseconds for reading API responses. + * * @param milliseconds the timeout in milliseconds */ public static void setReadTimeoutMilliseconds(int milliseconds) { @@ -562,6 +566,7 @@ public static void setReadTimeoutMilliseconds(int milliseconds) { /** * Get the timeout in milliseconds for App Engine API requests. + * * @return the timeout in milliseconds */ public static double getAppEngineTimeoutSeconds() { @@ -570,6 +575,7 @@ public static double getAppEngineTimeoutSeconds() { /** * Set the timeout in seconds for App Engine API requests. + * * @param seconds the timeout in seconds */ public static void setAppEngineTimeoutSeconds(double seconds) { From bdf73b13768eab48c2ae89c5cc00cdaf7be4c2a3 Mon Sep 17 00:00:00 2001 From: Nate Harris Date: Mon, 31 Jan 2022 12:27:10 -0700 Subject: [PATCH 3/7] - Remove orphaned comments --- src/main/java/com/easypost/net/EasyPostResource.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/easypost/net/EasyPostResource.java b/src/main/java/com/easypost/net/EasyPostResource.java index 621d51b6b..03df042f7 100644 --- a/src/main/java/com/easypost/net/EasyPostResource.java +++ b/src/main/java/com/easypost/net/EasyPostResource.java @@ -760,7 +760,6 @@ protected enum RequestMethod { PUT } - // represents Errors returned as JSON private static class ErrorContainer { private EasyPostResource.Error error; } From f9e17202ada76e8b74d4ad39882a92db7e1a29cf Mon Sep 17 00:00:00 2001 From: Nate Harris Date: Mon, 31 Jan 2022 14:23:35 -0700 Subject: [PATCH 4/7] Update src/main/java/com/easypost/net/EasyPostResource.java Co-authored-by: Justin Hammond <39606064+Justintime50@users.noreply.github.com> --- src/main/java/com/easypost/net/EasyPostResource.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/easypost/net/EasyPostResource.java b/src/main/java/com/easypost/net/EasyPostResource.java index 03df042f7..43df3061d 100644 --- a/src/main/java/com/easypost/net/EasyPostResource.java +++ b/src/main/java/com/easypost/net/EasyPostResource.java @@ -529,7 +529,7 @@ private static EasyPostResponse makeAppEngineRequest(final RequestMethod method, } /** - * Get the timeout in milliseconds for normal API requests. + * Get the timeout in milliseconds for connecting to the API. * * @return the timeout in milliseconds */ From 01ef9301512e355e1b282423ffbbae147be38e06 Mon Sep 17 00:00:00 2001 From: Nate Harris Date: Mon, 31 Jan 2022 14:23:41 -0700 Subject: [PATCH 5/7] Update src/main/java/com/easypost/net/EasyPostResource.java Co-authored-by: Justin Hammond <39606064+Justintime50@users.noreply.github.com> --- src/main/java/com/easypost/net/EasyPostResource.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/easypost/net/EasyPostResource.java b/src/main/java/com/easypost/net/EasyPostResource.java index 43df3061d..192314405 100644 --- a/src/main/java/com/easypost/net/EasyPostResource.java +++ b/src/main/java/com/easypost/net/EasyPostResource.java @@ -538,7 +538,7 @@ public static int getConnectTimeoutMilliseconds() { } /** - * Set the timeout in milliseconds for normal API requests. + * Set the timeout in milliseconds for connecting to the API. * * @param milliseconds the timeout in milliseconds */ From 377ed9a25f03f93a03c38c93b1099032ef08bff7 Mon Sep 17 00:00:00 2001 From: Nate Harris Date: Mon, 31 Jan 2022 14:26:43 -0700 Subject: [PATCH 6/7] - Fix bad indent --- src/test/java/com/easypost/EasyPostTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/easypost/EasyPostTest.java b/src/test/java/com/easypost/EasyPostTest.java index 06125461a..07ce8925b 100644 --- a/src/test/java/com/easypost/EasyPostTest.java +++ b/src/test/java/com/easypost/EasyPostTest.java @@ -128,7 +128,7 @@ public static void setUp() { canadaToAddress.put("zip", "t8n2m4"); canadaToAddress.put("country", "CA"); } - + @Test public void testShipmentWithTracker() throws EasyPostException { // create and buy shipment @@ -1075,7 +1075,7 @@ public void testClientTimeout() throws EasyPostException { int timeout = 1; Order.setConnectTimeoutMilliseconds(timeout); Order.setReadTimeoutMilliseconds(timeout); - Order.setAppEngineTimeoutSeconds((double) timeout); + Order.setAppEngineTimeoutSeconds(timeout); assertEquals(Order.getConnectTimeoutMilliseconds(), timeout); assertEquals(Order.getReadTimeoutMilliseconds(), timeout); assertEquals(Order.getAppEngineTimeoutSeconds(), timeout, 0.001); From 4abf9d99e51db1a72a17ccd0409c0e5bd1b56535 Mon Sep 17 00:00:00 2001 From: Nate Harris Date: Mon, 31 Jan 2022 16:08:32 -0700 Subject: [PATCH 7/7] - Remove improper comment about URL_STREAM_HANDLER --- src/main/java/com/easypost/net/EasyPostResource.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/easypost/net/EasyPostResource.java b/src/main/java/com/easypost/net/EasyPostResource.java index 192314405..db92bd736 100644 --- a/src/main/java/com/easypost/net/EasyPostResource.java +++ b/src/main/java/com/easypost/net/EasyPostResource.java @@ -61,7 +61,6 @@ public abstract class EasyPostResource { private static final int DEFAULT_READ_TIMEOUT_MILLISECONDS = 60000; private static final double DEFAULT_APP_ENGINE_TIMEOUT_SECONDS = 20.0; private static final String DNS_CACHE_TTL_PROPERTY_NAME = "networkaddress.cache.ttl"; - // Set this property to override your environment's default URLStreamHandler. private static final String CUSTOM_URL_STREAM_HANDLER_PROPERTY_NAME = "com.easypost.net.customURLStreamHandler"; private static int connectTimeoutMilliseconds = DEFAULT_CONNECT_TIMEOUT_MILLISECONDS; private static int readTimeoutMilliseconds = DEFAULT_READ_TIMEOUT_MILLISECONDS;