Skip to content

Commit 6584dda

Browse files
committed
added better error handling for the sonnen http client
1 parent 64f73cd commit 6584dda

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

IoTSonnenUploader/src/main/java/com/oracle/demo/timg/iot/iotsonnenuploader/sonnencontroller/SonnenBatteryClient.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ Software and the Larger Work(s), and to sublicense the foregoing rights on
4646
import io.micronaut.http.annotation.Get;
4747
import io.micronaut.http.annotation.Header;
4848
import io.micronaut.http.client.annotation.Client;
49+
import io.micronaut.http.client.exceptions.HttpClientException;
4950

5051
@Client(id = "sonnenbattery", path = "/api/v2")
5152
@Header(name = USER_AGENT, value = "Micronaut HTTP Client")
@@ -54,9 +55,11 @@ Software and the Larger Work(s), and to sublicense the foregoing rights on
5455
public interface SonnenBatteryClient {
5556

5657
@Get("/configurations")
57-
public SonnenConfiguration fetchConfiguration();
58+
// @Error(exception = ReadTimeoutException.class)
59+
public SonnenConfiguration fetchConfiguration() throws HttpClientException;
5860

5961
@Get("/status")
60-
public SonnenStatus fetchStatus();
62+
// @Error(exception = ReadTimeoutException.class)
63+
public SonnenStatus fetchStatus() throws HttpClientException;
6164

6265
}

IoTSonnenUploader/src/main/java/com/oracle/demo/timg/iot/iotsonnenuploader/uploader/Uploader.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ Software and the Larger Work(s), and to sublicense the foregoing rights on
4444
import com.oracle.demo.timg.iot.iotsonnenuploader.sonnencontroller.SonnenBatteryClient;
4545

4646
import io.micronaut.context.event.StartupEvent;
47+
import io.micronaut.http.client.exceptions.HttpClientException;
4748
import io.micronaut.runtime.event.annotation.EventListener;
4849
import io.micronaut.scheduling.TaskExecutors;
4950
import io.micronaut.scheduling.annotation.ExecuteOn;
@@ -63,7 +64,14 @@ public class Uploader {
6364
@Scheduled(fixedRate = "120s", initialDelay = "5s")
6465
@ExecuteOn(TaskExecutors.IO)
6566
public SonnenConfiguration processConfiguration() {
66-
SonnenConfiguration conf = client.fetchConfiguration();
67+
SonnenConfiguration conf;
68+
try {
69+
conf = client.fetchConfiguration();
70+
} catch (HttpClientException e) {
71+
log.warning("HttpClientException getting configuration from sonnen, no data to upload for service "
72+
+ e.getServiceId());
73+
return null;
74+
}
6775
log.info("Retrieved configuration from battery : " + conf);
6876
CompletableFuture<Void> publishResp = mqttSonnenBatteryPublisher.publishSonnenConfiguration(conf);
6977
publishResp.thenRun(() -> log.info("Published configuration as object"));
@@ -73,7 +81,14 @@ public SonnenConfiguration processConfiguration() {
7381
@Scheduled(fixedRate = "10s", initialDelay = "10s")
7482
@ExecuteOn(TaskExecutors.IO)
7583
public SonnenStatus processStatus() {
76-
SonnenStatus status = client.fetchStatus();
84+
SonnenStatus status;
85+
try {
86+
status = client.fetchStatus();
87+
} catch (HttpClientException e) {
88+
log.warning("HttpClientExcepton getting configuration from sonnen, no data to upload, for service "
89+
+ e.getServiceId());
90+
return null;
91+
}
7792
log.info("Retrieved status from battery : " + status);
7893
CompletableFuture<Void> publishResp = mqttSonnenBatteryPublisher.publishSonnenStatus(status);
7994
publishResp.thenRun(() -> log.info("Published status as object"));

0 commit comments

Comments
 (0)