From 53fddc2c3423acdf01594c3090054d1ca0de0dc0 Mon Sep 17 00:00:00 2001 From: lolodomo Date: Tue, 6 Apr 2021 17:37:19 +0200 Subject: [PATCH] [bindings d-e] Fix exception handling (Jetty HTTP client) (#10476) Fixes #10474 Signed-off-by: Laurent Garnier --- .../daikin/internal/DaikinWebTargets.java | 7 +++- .../daikin/internal/api/BasicInfo.java | 4 +-- .../internal/api/EnergyInfoDayAndWeek.java | 6 ++-- .../daikin/internal/api/EnergyInfoYear.java | 1 - .../api/airbase/AirbaseBasicInfo.java | 4 +-- .../internal/handler/DaikinAcUnitHandler.java | 6 ++-- .../config/DarkSkyChannelConfiguration.java | 6 +++- .../connection/DarkSkyConnection.java | 6 +++- .../DenonMarantzTelnetClientThread.java | 1 + .../telnet/DenonMarantzTelnetConnector.java | 1 + .../internal/handler/DenonMarantzHandler.java | 15 ++++++--- .../internal/DLinkHNAPCommunication.java | 3 ++ .../DLinkMotionSensorCommunication.java | 3 ++ bundles/org.openhab.binding.ecobee/README.md | 1 + .../ecobee/internal/api/EcobeeAuth.java | 1 + .../connection/EnturNoConnection.java | 6 +++- .../internal/api/EtherRainCommunication.java | 6 +++- .../evohome/internal/api/ApiAccess.java | 5 ++- .../internal/api/EvohomeApiClient.java | 21 +----------- .../handler/EvohomeAccountBridgeHandler.java | 32 +++++++------------ 20 files changed, 73 insertions(+), 62 deletions(-) diff --git a/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/DaikinWebTargets.java b/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/DaikinWebTargets.java index 3ebe999a07bac..3df15c12cc5f7 100644 --- a/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/DaikinWebTargets.java +++ b/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/DaikinWebTargets.java @@ -15,7 +15,9 @@ import java.io.IOException; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; import java.util.stream.Collectors; import org.eclipse.jdt.annotation.NonNullByDefault; @@ -234,8 +236,11 @@ private String executeUrl(String url) throws DaikinCommunicationException { return response.getContentAsString(); } catch (DaikinCommunicationException e) { throw e; - } catch (Exception e) { + } catch (ExecutionException | TimeoutException e) { throw new DaikinCommunicationException("Daikin HTTP error", e); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new DaikinCommunicationException("Daikin HTTP interrupted", e); } } diff --git a/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/api/BasicInfo.java b/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/api/BasicInfo.java index c37fba2788a31..be87721cceba0 100644 --- a/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/api/BasicInfo.java +++ b/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/api/BasicInfo.java @@ -28,7 +28,7 @@ */ @NonNullByDefault public class BasicInfo { - private static final Logger logger = LoggerFactory.getLogger(BasicInfo.class); + private static final Logger LOGGER = LoggerFactory.getLogger(BasicInfo.class); public String mac = ""; public String ret = ""; @@ -38,7 +38,7 @@ private BasicInfo() { } public static BasicInfo parse(String response) { - logger.debug("Parsing string: \"{}\"", response); + LOGGER.debug("Parsing string: \"{}\"", response); Map responseMap = InfoParser.parse(response); diff --git a/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/api/EnergyInfoDayAndWeek.java b/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/api/EnergyInfoDayAndWeek.java index 88995529858d3..ddcbab2d9511f 100644 --- a/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/api/EnergyInfoDayAndWeek.java +++ b/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/api/EnergyInfoDayAndWeek.java @@ -36,7 +36,7 @@ public class EnergyInfoDayAndWeek { public Optional energyCoolingThisWeek = Optional.empty(); public Optional energyCoolingLastWeek = Optional.empty(); - private static final Logger logger = LoggerFactory.getLogger(EnergyInfoDayAndWeek.class); + private static final Logger LOGGER = LoggerFactory.getLogger(EnergyInfoDayAndWeek.class); private EnergyInfoDayAndWeek() { } @@ -44,7 +44,7 @@ private EnergyInfoDayAndWeek() { public static EnergyInfoDayAndWeek parse(String response) { EnergyInfoDayAndWeek info = new EnergyInfoDayAndWeek(); - logger.trace("Parsing string: \"{}\"", response); + LOGGER.trace("Parsing string: \"{}\"", response); // /aircon/get_week_power_ex // ret=OK,s_dayw=0,week_heat=1/1/1/1/1/5/2/1/1/1/1/2/1/1,week_cool=0/0/0/0/0/0/0/0/0/0/0/0/0/0 @@ -94,7 +94,7 @@ public static EnergyInfoDayAndWeek parse(String response) { info.energyCoolingLastWeek = Optional.of(previousWeekEnergy / 10); } } else { - logger.debug("did not receive 'ret=OK' from adapter"); + LOGGER.debug("did not receive 'ret=OK' from adapter"); } return info; } diff --git a/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/api/EnergyInfoYear.java b/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/api/EnergyInfoYear.java index 2d4b126381f0c..de3ca69ac934b 100644 --- a/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/api/EnergyInfoYear.java +++ b/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/api/EnergyInfoYear.java @@ -37,7 +37,6 @@ private EnergyInfoYear() { } public static EnergyInfoYear parse(String response) { - LOGGER.trace("Parsing string: \"{}\"", response); Map responseMap = InfoParser.parse(response); diff --git a/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/api/airbase/AirbaseBasicInfo.java b/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/api/airbase/AirbaseBasicInfo.java index 235da931e8f14..4b15fc1e78c0e 100644 --- a/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/api/airbase/AirbaseBasicInfo.java +++ b/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/api/airbase/AirbaseBasicInfo.java @@ -29,7 +29,7 @@ */ @NonNullByDefault public class AirbaseBasicInfo { - private static final Logger logger = LoggerFactory.getLogger(AirbaseBasicInfo.class); + private static final Logger LOGGER = LoggerFactory.getLogger(AirbaseBasicInfo.class); public String mac = ""; public String ret = ""; @@ -39,7 +39,7 @@ private AirbaseBasicInfo() { } public static AirbaseBasicInfo parse(String response) { - logger.debug("Parsing string: \"{}\"", response); + LOGGER.debug("Parsing string: \"{}\"", response); Map responseMap = InfoParser.parse(response); diff --git a/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/handler/DaikinAcUnitHandler.java b/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/handler/DaikinAcUnitHandler.java index 6a88283df4d78..ce46d611cc5ca 100644 --- a/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/handler/DaikinAcUnitHandler.java +++ b/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/handler/DaikinAcUnitHandler.java @@ -54,7 +54,7 @@ * @author Paul Smedley - Modifications to support Airbase Controllers * @author Lukas Agethen - Added support for Energy Year reading, compressor frequency and powerful mode * @author Wouter Denayer - Added to support for weekly & daily energy reading - * + * */ @NonNullByDefault public class DaikinAcUnitHandler extends DaikinBaseHandler { @@ -281,7 +281,7 @@ maybePower. map( } /** - * + * * @param channel * @param maybePower */ @@ -304,7 +304,7 @@ protected void registerUuid(@Nullable String key) { return; } webTargets.registerUuid(key); - } catch (Exception e) { + } catch (DaikinCommunicationException e) { // suppress exceptions logger.debug("registerUuid({}) error: {}", key, e.getMessage()); } diff --git a/bundles/org.openhab.binding.darksky/src/main/java/org/openhab/binding/darksky/internal/config/DarkSkyChannelConfiguration.java b/bundles/org.openhab.binding.darksky/src/main/java/org/openhab/binding/darksky/internal/config/DarkSkyChannelConfiguration.java index 976b0cf7211e1..ac2c6d9acd24e 100644 --- a/bundles/org.openhab.binding.darksky/src/main/java/org/openhab/binding/darksky/internal/config/DarkSkyChannelConfiguration.java +++ b/bundles/org.openhab.binding.darksky/src/main/java/org/openhab/binding/darksky/internal/config/DarkSkyChannelConfiguration.java @@ -14,6 +14,7 @@ import java.time.Duration; import java.util.regex.Pattern; +import java.util.regex.PatternSyntaxException; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -85,11 +86,14 @@ private long getMinutesFromTime(@Nullable String configTime) { throw new NumberFormatException(); } else { String[] splittedConfigTime = time.split(TIME_SEPARATOR); + if (splittedConfigTime.length < 2) { + throw new NumberFormatException(); + } int hour = Integer.parseInt(splittedConfigTime[0]); int minutes = Integer.parseInt(splittedConfigTime[1]); return Duration.ofMinutes(minutes).plusHours(hour).toMinutes(); } - } catch (Exception ex) { + } catch (PatternSyntaxException | NumberFormatException | ArithmeticException ex) { logger.warn("Cannot parse channel configuration '{}' to hour and minutes, use pattern hh:mm, ignoring!", time); } diff --git a/bundles/org.openhab.binding.darksky/src/main/java/org/openhab/binding/darksky/internal/connection/DarkSkyConnection.java b/bundles/org.openhab.binding.darksky/src/main/java/org/openhab/binding/darksky/internal/connection/DarkSkyConnection.java index 6b4fb5345c9d3..aae205c62e97c 100644 --- a/bundles/org.openhab.binding.darksky/src/main/java/org/openhab/binding/darksky/internal/connection/DarkSkyConnection.java +++ b/bundles/org.openhab.binding.darksky/src/main/java/org/openhab/binding/darksky/internal/connection/DarkSkyConnection.java @@ -211,9 +211,13 @@ private String getResponse(String url) { } else { throw new DarkSkyCommunicationException(errorMessage, e.getCause()); } - } catch (InterruptedException | TimeoutException e) { + } catch (TimeoutException e) { logger.debug("Exception occurred during execution: {}", e.getLocalizedMessage(), e); throw new DarkSkyCommunicationException(e.getLocalizedMessage(), e.getCause()); + } catch (InterruptedException e) { + logger.debug("Execution interrupted: {}", e.getLocalizedMessage(), e); + Thread.currentThread().interrupt(); + throw new DarkSkyCommunicationException(e.getLocalizedMessage(), e.getCause()); } } diff --git a/bundles/org.openhab.binding.denonmarantz/src/main/java/org/openhab/binding/denonmarantz/internal/connector/telnet/DenonMarantzTelnetClientThread.java b/bundles/org.openhab.binding.denonmarantz/src/main/java/org/openhab/binding/denonmarantz/internal/connector/telnet/DenonMarantzTelnetClientThread.java index 6062c1ea7d59d..3a258052faa5e 100644 --- a/bundles/org.openhab.binding.denonmarantz/src/main/java/org/openhab/binding/denonmarantz/internal/connector/telnet/DenonMarantzTelnetClientThread.java +++ b/bundles/org.openhab.binding.denonmarantz/src/main/java/org/openhab/binding/denonmarantz/internal/connector/telnet/DenonMarantzTelnetClientThread.java @@ -145,6 +145,7 @@ private void connectTelnetSocket() { listener.telnetClientConnected(false); } catch (InterruptedException e) { logger.debug("Interrupted while connecting to {}", config.getHost(), e); + Thread.currentThread().interrupt(); } delay = RECONNECT_DELAY; } diff --git a/bundles/org.openhab.binding.denonmarantz/src/main/java/org/openhab/binding/denonmarantz/internal/connector/telnet/DenonMarantzTelnetConnector.java b/bundles/org.openhab.binding.denonmarantz/src/main/java/org/openhab/binding/denonmarantz/internal/connector/telnet/DenonMarantzTelnetConnector.java index fbdb8d666f978..df158222666be 100644 --- a/bundles/org.openhab.binding.denonmarantz/src/main/java/org/openhab/binding/denonmarantz/internal/connector/telnet/DenonMarantzTelnetConnector.java +++ b/bundles/org.openhab.binding.denonmarantz/src/main/java/org/openhab/binding/denonmarantz/internal/connector/telnet/DenonMarantzTelnetConnector.java @@ -127,6 +127,7 @@ private void refreshState() { Thread.sleep(300); } catch (InterruptedException e) { logger.trace("requestStateOverTelnet() - Interrupted while requesting state."); + Thread.currentThread().interrupt(); } } }); diff --git a/bundles/org.openhab.binding.denonmarantz/src/main/java/org/openhab/binding/denonmarantz/internal/handler/DenonMarantzHandler.java b/bundles/org.openhab.binding.denonmarantz/src/main/java/org/openhab/binding/denonmarantz/internal/handler/DenonMarantzHandler.java index 614bf55ca41b5..0be9348c12d9c 100644 --- a/bundles/org.openhab.binding.denonmarantz/src/main/java/org/openhab/binding/denonmarantz/internal/handler/DenonMarantzHandler.java +++ b/bundles/org.openhab.binding.denonmarantz/src/main/java/org/openhab/binding/denonmarantz/internal/handler/DenonMarantzHandler.java @@ -200,7 +200,7 @@ public boolean checkConfiguration() { * Try to auto configure the connection type (Telnet or HTTP) * for Things not added through Paper UI. */ - private void autoConfigure() { + private void autoConfigure() throws InterruptedException { /* * The isTelnet parameter has no default. * When not set we will try to auto-detect the correct values @@ -223,7 +223,7 @@ private void autoConfigure() { telnetEnable = false; httpApiUsable = true; } - } catch (InterruptedException | TimeoutException | ExecutionException e) { + } catch (TimeoutException | ExecutionException e) { logger.debug("Error when trying to access AVR using HTTP on port 80, reverting to Telnet mode.", e); } @@ -239,7 +239,7 @@ private void autoConfigure() { httpPort = 8080; httpApiUsable = true; } - } catch (InterruptedException | TimeoutException | ExecutionException e) { + } catch (TimeoutException | ExecutionException e) { logger.debug("Additionally tried to connect to port 8080, this also failed", e); } } @@ -255,7 +255,7 @@ private void autoConfigure() { response = httpClient.newRequest("http://" + host + ":" + httpPort + "/goform/Deviceinfo.xml") .timeout(3, TimeUnit.SECONDS).send(); status = response.getStatus(); - } catch (InterruptedException | TimeoutException | ExecutionException e) { + } catch (TimeoutException | ExecutionException e) { logger.debug("Failed in fetching the Deviceinfo.xml to determine zone count", e); } @@ -303,7 +303,12 @@ public void initialize() { // Configure Connection type (Telnet/HTTP) and number of zones // Note: this only happens for discovered Things - autoConfigure(); + try { + autoConfigure(); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + return; + } if (!checkConfiguration()) { return; diff --git a/bundles/org.openhab.binding.dlinksmarthome/src/main/java/org/openhab/binding/dlinksmarthome/internal/DLinkHNAPCommunication.java b/bundles/org.openhab.binding.dlinksmarthome/src/main/java/org/openhab/binding/dlinksmarthome/internal/DLinkHNAPCommunication.java index f18a1dbced342..bcac91e1691c9 100644 --- a/bundles/org.openhab.binding.dlinksmarthome/src/main/java/org/openhab/binding/dlinksmarthome/internal/DLinkHNAPCommunication.java +++ b/bundles/org.openhab.binding.dlinksmarthome/src/main/java/org/openhab/binding/dlinksmarthome/internal/DLinkHNAPCommunication.java @@ -363,6 +363,9 @@ protected void login(final int timeout) { } catch (final NoSuchAlgorithmException e) { logger.debug("login - Internal error", e); status = HNAPStatus.INTERNAL_ERROR; + } catch (final InterruptedException e) { + status = HNAPStatus.COMMUNICATION_ERROR; + Thread.currentThread().interrupt(); } catch (final Exception e) { // Assume there has been some problem trying to send one of the messages if (status != HNAPStatus.COMMUNICATION_ERROR) { diff --git a/bundles/org.openhab.binding.dlinksmarthome/src/main/java/org/openhab/binding/dlinksmarthome/internal/motionsensor/DLinkMotionSensorCommunication.java b/bundles/org.openhab.binding.dlinksmarthome/src/main/java/org/openhab/binding/dlinksmarthome/internal/motionsensor/DLinkMotionSensorCommunication.java index 936803a9e0469..39b78008b950d 100644 --- a/bundles/org.openhab.binding.dlinksmarthome/src/main/java/org/openhab/binding/dlinksmarthome/internal/motionsensor/DLinkMotionSensorCommunication.java +++ b/bundles/org.openhab.binding.dlinksmarthome/src/main/java/org/openhab/binding/dlinksmarthome/internal/motionsensor/DLinkMotionSensorCommunication.java @@ -278,6 +278,9 @@ private boolean getLastDetection(final boolean isRetry) { } else { unexpectedResult("getLastDetection - Unexpected response", soapResponse); } + } catch (final InterruptedException e) { + status = DeviceStatus.COMMUNICATION_ERROR; + Thread.currentThread().interrupt(); } catch (final Exception e) { // Assume there has been some problem trying to send one of the messages if (status != DeviceStatus.COMMUNICATION_ERROR) { diff --git a/bundles/org.openhab.binding.ecobee/README.md b/bundles/org.openhab.binding.ecobee/README.md index d7a450b1b4f2d..1ba91fa6b9543 100644 --- a/bundles/org.openhab.binding.ecobee/README.md +++ b/bundles/org.openhab.binding.ecobee/README.md @@ -47,6 +47,7 @@ Once logged in, select the **Developer** option from the menu. If you don't see the **Developer** option on the menu, then something went wrong with the previous step. 4. Finally, create a new application. + Give the application a name and fill in the application summary. Select the **Ecobee PIN** Authorization Method, then press **Create**. You now should see the **API key** for the application you just created. diff --git a/bundles/org.openhab.binding.ecobee/src/main/java/org/openhab/binding/ecobee/internal/api/EcobeeAuth.java b/bundles/org.openhab.binding.ecobee/src/main/java/org/openhab/binding/ecobee/internal/api/EcobeeAuth.java index 06958b89d12cf..cafea05ca2890 100644 --- a/bundles/org.openhab.binding.ecobee/src/main/java/org/openhab/binding/ecobee/internal/api/EcobeeAuth.java +++ b/bundles/org.openhab.binding.ecobee/src/main/java/org/openhab/binding/ecobee/internal/api/EcobeeAuth.java @@ -262,6 +262,7 @@ private boolean isPinExpired() { } } catch (InterruptedException e) { logger.debug("InterruptedException on call to Ecobee authorization API: {}", e.getMessage()); + Thread.currentThread().interrupt(); } return null; } diff --git a/bundles/org.openhab.binding.enturno/src/main/java/org/openhab/binding/enturno/internal/connection/EnturNoConnection.java b/bundles/org.openhab.binding.enturno/src/main/java/org/openhab/binding/enturno/internal/connection/EnturNoConnection.java index 5dc92dfd19bee..70ecd71b23cda 100644 --- a/bundles/org.openhab.binding.enturno/src/main/java/org/openhab/binding/enturno/internal/connection/EnturNoConnection.java +++ b/bundles/org.openhab.binding.enturno/src/main/java/org/openhab/binding/enturno/internal/connection/EnturNoConnection.java @@ -160,9 +160,13 @@ private String getResponse(String url, Map params) { String errorMessage = e.getLocalizedMessage(); logger.debug("Exception occurred during execution: {}", errorMessage, e); throw new EnturCommunicationException(errorMessage, e); - } catch (InterruptedException | TimeoutException | IOException e) { + } catch (TimeoutException | IOException e) { logger.debug("Exception occurred during execution: {}", e.getLocalizedMessage(), e); throw new EnturCommunicationException(e.getLocalizedMessage(), e); + } catch (InterruptedException e) { + logger.debug("Execution interrupted: {}", e.getLocalizedMessage(), e); + Thread.currentThread().interrupt(); + throw new EnturCommunicationException(e.getLocalizedMessage(), e); } } diff --git a/bundles/org.openhab.binding.etherrain/src/main/java/org/openhab/binding/etherrain/internal/api/EtherRainCommunication.java b/bundles/org.openhab.binding.etherrain/src/main/java/org/openhab/binding/etherrain/internal/api/EtherRainCommunication.java index 67589fa9af11b..a10417d93395b 100644 --- a/bundles/org.openhab.binding.etherrain/src/main/java/org/openhab/binding/etherrain/internal/api/EtherRainCommunication.java +++ b/bundles/org.openhab.binding.etherrain/src/main/java/org/openhab/binding/etherrain/internal/api/EtherRainCommunication.java @@ -191,9 +191,13 @@ private synchronized List sendGet(String command) throws IOException { logger.warn("Etherrain return status other than HTTP_OK : {}", response.getStatus()); return Collections.emptyList(); } - } catch (InterruptedException | TimeoutException | ExecutionException e) { + } catch (TimeoutException | ExecutionException e) { logger.warn("Could not connect to Etherrain with exception: {}", e.getMessage()); return Collections.emptyList(); + } catch (InterruptedException e) { + logger.warn("Connect to Etherrain interrupted: {}", e.getMessage()); + Thread.currentThread().interrupt(); + return Collections.emptyList(); } return new BufferedReader(new StringReader(response.getContentAsString())).lines().collect(Collectors.toList()); diff --git a/bundles/org.openhab.binding.evohome/src/main/java/org/openhab/binding/evohome/internal/api/ApiAccess.java b/bundles/org.openhab.binding.evohome/src/main/java/org/openhab/binding/evohome/internal/api/ApiAccess.java index a53d0d963f89a..2d49c2bddef68 100644 --- a/bundles/org.openhab.binding.evohome/src/main/java/org/openhab/binding/evohome/internal/api/ApiAccess.java +++ b/bundles/org.openhab.binding.evohome/src/main/java/org/openhab/binding/evohome/internal/api/ApiAccess.java @@ -119,8 +119,11 @@ public TOut doRequest(HttpMethod method, String url, Map retVal = new Gson().fromJson(reply, outClass); } } - } catch (InterruptedException | ExecutionException e) { + } catch (ExecutionException e) { logger.debug("Error in handling request: ", e); + } catch (InterruptedException e) { + logger.debug("Handling request interrupted: ", e); + Thread.currentThread().interrupt(); } return retVal; diff --git a/bundles/org.openhab.binding.evohome/src/main/java/org/openhab/binding/evohome/internal/api/EvohomeApiClient.java b/bundles/org.openhab.binding.evohome/src/main/java/org/openhab/binding/evohome/internal/api/EvohomeApiClient.java index 48939b1819d04..af9caf58b78d9 100644 --- a/bundles/org.openhab.binding.evohome/src/main/java/org/openhab/binding/evohome/internal/api/EvohomeApiClient.java +++ b/bundles/org.openhab.binding.evohome/src/main/java/org/openhab/binding/evohome/internal/api/EvohomeApiClient.java @@ -48,7 +48,6 @@ public class EvohomeApiClient { private static final String CLIENT_SECRET = "1a15cdb8-42de-407b-add0-059f92c530cb"; private final Logger logger = LoggerFactory.getLogger(EvohomeApiClient.class); - private final HttpClient httpClient; private final EvohomeAccountConfiguration configuration; private final ApiAccess apiAccess; @@ -60,19 +59,9 @@ public class EvohomeApiClient { * Creates a new API client based on the V2 API interface * * @param configuration The configuration of the account to use - * @throws Exception */ - public EvohomeApiClient(EvohomeAccountConfiguration configuration, HttpClient httpClient) throws Exception { + public EvohomeApiClient(EvohomeAccountConfiguration configuration, HttpClient httpClient) { this.configuration = configuration; - this.httpClient = httpClient; - - try { - httpClient.start(); - } catch (Exception e) { - logger.error("Could not start http client", e); - throw new EvohomeApiClientException("Could not start http client", e); - } - apiAccess = new ApiAccess(httpClient); apiAccess.setApplicationId(APPLICATION_ID); } @@ -85,14 +74,6 @@ public void close() { useraccount = null; locations = null; locationsStatus = null; - - if (httpClient.isStarted()) { - try { - httpClient.stop(); - } catch (Exception e) { - logger.debug("Could not stop http client.", e); - } - } } public boolean login() { diff --git a/bundles/org.openhab.binding.evohome/src/main/java/org/openhab/binding/evohome/internal/handler/EvohomeAccountBridgeHandler.java b/bundles/org.openhab.binding.evohome/src/main/java/org/openhab/binding/evohome/internal/handler/EvohomeAccountBridgeHandler.java index 5c64f717afa7c..069e0ca1b4b82 100644 --- a/bundles/org.openhab.binding.evohome/src/main/java/org/openhab/binding/evohome/internal/handler/EvohomeAccountBridgeHandler.java +++ b/bundles/org.openhab.binding.evohome/src/main/java/org/openhab/binding/evohome/internal/handler/EvohomeAccountBridgeHandler.java @@ -74,30 +74,22 @@ public void initialize() { configuration = getConfigAs(EvohomeAccountConfiguration.class); if (checkConfig()) { - try { - apiClient = new EvohomeApiClient(configuration, this.httpClient); - } catch (Exception e) { - logger.error("Could not start API client", e); - updateAccountStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "Could not create evohome API client"); - } + apiClient = new EvohomeApiClient(configuration, this.httpClient); - if (apiClient != null) { - // Initialization can take a while, so kick it off on a separate thread - scheduler.schedule(() -> { - if (apiClient.login()) { - if (checkInstallationInfoHasDuplicateIds(apiClient.getInstallationInfo())) { - startRefreshTask(); - } else { - updateAccountStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "System Information Sanity Check failed"); - } + // Initialization can take a while, so kick it off on a separate thread + scheduler.schedule(() -> { + if (apiClient.login()) { + if (checkInstallationInfoHasDuplicateIds(apiClient.getInstallationInfo())) { + startRefreshTask(); } else { updateAccountStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "Authentication failed"); + "System Information Sanity Check failed"); } - }, 0, TimeUnit.SECONDS); - } + } else { + updateAccountStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, + "Authentication failed"); + } + }, 0, TimeUnit.SECONDS); } }