From 493906f04018e52b575041b0daefd9d4f9db1aad Mon Sep 17 00:00:00 2001 From: Bertrik Sikken Date: Sat, 11 May 2019 23:49:53 +0200 Subject: [PATCH] Specify habitat timeout as a Duration. --- .../main/java/nl/sikken/bertrik/ITtnHabBridgeConfig.java | 6 ++++-- .../main/java/nl/sikken/bertrik/TtnHabBridgeConfig.java | 8 +++++--- .../nl/sikken/bertrik/hab/habitat/HabitatUploader.java | 8 +++----- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/ttnhabbridge/src/main/java/nl/sikken/bertrik/ITtnHabBridgeConfig.java b/ttnhabbridge/src/main/java/nl/sikken/bertrik/ITtnHabBridgeConfig.java index 5cbed1a..2f5d503 100644 --- a/ttnhabbridge/src/main/java/nl/sikken/bertrik/ITtnHabBridgeConfig.java +++ b/ttnhabbridge/src/main/java/nl/sikken/bertrik/ITtnHabBridgeConfig.java @@ -1,5 +1,7 @@ package nl.sikken.bertrik; +import java.time.Duration; + /** * Configuration interface for the application. */ @@ -11,9 +13,9 @@ public interface ITtnHabBridgeConfig { String getHabitatUrl(); /** - * @return timeout (ms) for communication with the habitat server + * @return timeout for communication with the habitat server */ - int getHabitatTimeout(); + Duration getHabitatTimeout(); /** * @return the URL of the TTN MQTT server diff --git a/ttnhabbridge/src/main/java/nl/sikken/bertrik/TtnHabBridgeConfig.java b/ttnhabbridge/src/main/java/nl/sikken/bertrik/TtnHabBridgeConfig.java index f5e6b49..e734803 100644 --- a/ttnhabbridge/src/main/java/nl/sikken/bertrik/TtnHabBridgeConfig.java +++ b/ttnhabbridge/src/main/java/nl/sikken/bertrik/TtnHabBridgeConfig.java @@ -1,5 +1,7 @@ package nl.sikken.bertrik; +import java.time.Duration; + /** * Configuration class. */ @@ -10,7 +12,7 @@ final class TtnHabBridgeConfig extends BaseConfig implements ITtnHabBridgeConfig */ private enum EConfigItem { HABITAT_URL("habitat.url", "http://habitat.habhub.org", "URL of the habitat server"), - HABITAT_TIMEOUT("habitat.timeout", "3000", "Timeout in milliseconds"), + HABITAT_TIMEOUT_MS("habitat.timeout", "3000", "Timeout in milliseconds"), TTN_MQTT_URL("ttn.mqtt.url", "tcp://eu.thethings.network", "URL of the TTN MQTT server"), TTN_APP_ID("ttn.app.id", "habhub", "TTN Application Id (e.g. habhub, ttnmapper, etc.)"), @@ -43,8 +45,8 @@ final class TtnHabBridgeConfig extends BaseConfig implements ITtnHabBridgeConfig } @Override - public int getHabitatTimeout() { - return Integer.parseInt(get(EConfigItem.HABITAT_TIMEOUT.key)); + public Duration getHabitatTimeout() { + return Duration.ofMillis(Integer.parseInt(get(EConfigItem.HABITAT_TIMEOUT_MS.key))); } @Override diff --git a/ttnhabbridge/src/main/java/nl/sikken/bertrik/hab/habitat/HabitatUploader.java b/ttnhabbridge/src/main/java/nl/sikken/bertrik/hab/habitat/HabitatUploader.java index 5edd40f..6813ba2 100644 --- a/ttnhabbridge/src/main/java/nl/sikken/bertrik/hab/habitat/HabitatUploader.java +++ b/ttnhabbridge/src/main/java/nl/sikken/bertrik/hab/habitat/HabitatUploader.java @@ -4,6 +4,7 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; +import java.time.Duration; import java.time.Instant; import java.util.Base64; import java.util.Base64.Encoder; @@ -11,7 +12,6 @@ import java.util.List; import java.util.Locale; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; import javax.xml.bind.DatatypeConverter; @@ -50,13 +50,11 @@ public final class HabitatUploader { * @param timeout the connect and read timeout (ms) * @return a new REST client */ - public static IHabitatRestApi newRestClient(String url, int timeout) { + public static IHabitatRestApi newRestClient(String url, Duration timeout) { // create the REST client LOG.info("Creating new habitat REST client with timeout {} for {}", timeout, url); OkHttpClient client = new OkHttpClient().newBuilder() - .connectTimeout(timeout, TimeUnit.MILLISECONDS) - .writeTimeout(timeout, TimeUnit.MILLISECONDS) - .readTimeout(timeout, TimeUnit.MILLISECONDS) + .callTimeout(timeout) .build(); Retrofit retrofit = new Retrofit.Builder() .baseUrl(url)