]> git.basschouten.com Git - openhab-addons.git/commitdiff
[openuv] Correcting an uncatched exception in json deserialization (#12511)
authorGaël L'hopital <gael@lhopital.org>
Thu, 24 Mar 2022 13:59:33 +0000 (14:59 +0100)
committerGitHub <noreply@github.com>
Thu, 24 Mar 2022 13:59:33 +0000 (14:59 +0100)
* Correcting an uncatched exception in json deserialization

Signed-off-by: clinique <gael@lhopital.org>
bundles/org.openhab.binding.openuv/src/main/java/org/openhab/binding/openuv/internal/OpenUVBindingConstants.java
bundles/org.openhab.binding.openuv/src/main/java/org/openhab/binding/openuv/internal/OpenUVHandlerFactory.java
bundles/org.openhab.binding.openuv/src/main/java/org/openhab/binding/openuv/internal/discovery/OpenUVDiscoveryService.java
bundles/org.openhab.binding.openuv/src/main/java/org/openhab/binding/openuv/internal/handler/OpenUVBridgeHandler.java
bundles/org.openhab.binding.openuv/src/main/java/org/openhab/binding/openuv/internal/handler/OpenUVReportHandler.java

index 63ed883568187ee259e4de08bce3aaef492149e4..00eb53cbe8ef7cae4fad68620d3aaf3a268840f6 100644 (file)
@@ -47,6 +47,6 @@ public class OpenUVBindingConstants {
     public static final String SAFE_EXPOSURE = "SafeExposure";
     public static final String ELEVATION = "elevation";
 
-    public static final Set<ThingTypeUID> BRIDGE_THING_TYPES_UIDS = Set.of(APIBRIDGE_THING_TYPE);
-    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(LOCATION_REPORT_THING_TYPE);
+    public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(APIBRIDGE_THING_TYPE,
+            LOCATION_REPORT_THING_TYPE);
 }
index f34e7150a92dabdf5da875ab064da1e39d98e4ca..90cae2868b26b09166d4fe573cf3533d44b0fa1d 100644 (file)
@@ -71,7 +71,7 @@ public class OpenUVHandlerFactory extends BaseThingHandlerFactory {
 
     @Override
     public boolean supportsThingType(ThingTypeUID thingTypeUID) {
-        return SUPPORTED_THING_TYPES_UIDS.contains(thingTypeUID) || BRIDGE_THING_TYPES_UIDS.contains(thingTypeUID);
+        return SUPPORTED_THING_TYPES_UIDS.contains(thingTypeUID);
     }
 
     @Override
index 29092f49047444eccbc139888d48c5b250803b38..db825f6c0337c46b487fe34ba222e03253b3a682 100644 (file)
 package org.openhab.binding.openuv.internal.discovery;
 
 import static org.openhab.binding.openuv.internal.OpenUVBindingConstants.*;
+import static org.openhab.binding.openuv.internal.config.ReportConfiguration.LOCATION;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
-import org.openhab.binding.openuv.internal.config.ReportConfiguration;
 import org.openhab.binding.openuv.internal.handler.OpenUVBridgeHandler;
 import org.openhab.core.config.discovery.AbstractDiscoveryService;
 import org.openhab.core.config.discovery.DiscoveryResultBuilder;
@@ -75,11 +75,11 @@ public class OpenUVDiscoveryService extends AbstractDiscoveryService implements
             PointType location = bridge.getLocation();
             if (location != null) {
                 ThingUID bridgeUID = bridge.getThing().getUID();
-                thingDiscovered(DiscoveryResultBuilder
-                        .create(new ThingUID(LOCATION_REPORT_THING_TYPE, bridgeUID, LOCAL))
-                        .withLabel("@text/discovery.openuv.uvreport.local.label")
-                        .withProperty(ReportConfiguration.LOCATION, location.toString())
-                        .withRepresentationProperty(ReportConfiguration.LOCATION).withBridge(bridgeUID).build());
+                thingDiscovered(
+                        DiscoveryResultBuilder.create(new ThingUID(LOCATION_REPORT_THING_TYPE, bridgeUID, LOCAL))
+                                .withLabel("@text/discovery.openuv.uvreport.local.label")
+                                .withProperty(LOCATION, location.toString()).withRepresentationProperty(LOCATION)
+                                .withBridge(bridgeUID).build());
             } else {
                 logger.debug("LocationProvider.getLocation() is not set -> Will not provide any discovery results");
             }
index 4868bf5034f7f06976b1186c80b1e9025f3c43b3..541b53409b599da6bc145b8386d848eec00a83d0 100644 (file)
@@ -46,6 +46,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.gson.Gson;
+import com.google.gson.JsonSyntaxException;
 
 /**
  * {@link OpenUVBridgeHandler} is the handler for OpenUV API and connects it
@@ -114,9 +115,10 @@ public class OpenUVBridgeHandler extends BaseBridgeHandler {
     }
 
     public @Nullable OpenUVResult getUVData(String latitude, String longitude, String altitude) {
+        String url = String.format(QUERY_URL, latitude, longitude, altitude);
+        String jsonData = "";
         try {
-            String jsonData = HttpUtil.executeUrl("GET", String.format(QUERY_URL, latitude, longitude, altitude),
-                    header, null, null, REQUEST_TIMEOUT_MS);
+            jsonData = HttpUtil.executeUrl("GET", url, header, null, null, REQUEST_TIMEOUT_MS);
             OpenUVResponse uvResponse = gson.fromJson(jsonData, OpenUVResponse.class);
             if (uvResponse != null) {
                 String error = uvResponse.getError();
@@ -126,13 +128,13 @@ public class OpenUVBridgeHandler extends BaseBridgeHandler {
                 }
                 throw new OpenUVException(error);
             }
+        } catch (JsonSyntaxException e) {
+            logger.debug("No valid json received when calling `{}` : {}", url, jsonData);
         } catch (IOException e) {
             updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, e.getMessage());
         } catch (OpenUVException e) {
             if (e.isQuotaError()) {
-                LocalDate today = LocalDate.now();
-                LocalDate tomorrow = today.plusDays(1);
-                LocalDateTime tomorrowMidnight = tomorrow.atStartOfDay().plusMinutes(2);
+                LocalDateTime tomorrowMidnight = LocalDate.now().plusDays(1).atStartOfDay().plusMinutes(2);
 
                 updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, String
                         .format("@text/offline.comm-error-quota-exceeded [ \"%s\" ]", tomorrowMidnight.toString()));
index a51a59f0a1320ec6fb3a77954ddcac0cfecfd797..30940a74d30ee48a5e8103a34e5e3da711439fbe 100644 (file)
@@ -159,13 +159,13 @@ public class OpenUVReportHandler extends BaseThingHandler {
     @Override
     public void dispose() {
         logger.debug("Disposing the OpenUV handler.");
-        ScheduledFuture<?> refresh = this.refreshJob;
+        ScheduledFuture<?> refresh = refreshJob;
         if (refresh != null && !refresh.isCancelled()) {
             refresh.cancel(true);
         }
         refreshJob = null;
 
-        ScheduledFuture<?> uxMax = this.uvMaxJob;
+        ScheduledFuture<?> uxMax = uvMaxJob;
         if (uxMax != null && !uxMax.isCancelled()) {
             uxMax.cancel(true);
         }