From aecadc529b602cf2beb39f12f0d4428fcd15a13a Mon Sep 17 00:00:00 2001 From: bwssystems Date: Sun, 15 Jan 2017 13:28:52 -0600 Subject: [PATCH] addded logging for url item json decoding, fixed harmony activity json decoding --- pom.xml | 2 +- .../com/bwssystems/HABridge/hue/HueMulator.java | 13 +++++++++++-- .../HABridge/plugins/harmony/HarmonyHome.java | 2 +- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 950776c..eba1ed7 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.bwssystems.HABridge ha-bridge - 4beta3.3 + 4beta3.4 jar HA Bridge diff --git a/src/main/java/com/bwssystems/HABridge/hue/HueMulator.java b/src/main/java/com/bwssystems/HABridge/hue/HueMulator.java index ce8958e..87829fc 100644 --- a/src/main/java/com/bwssystems/HABridge/hue/HueMulator.java +++ b/src/main/java/com/bwssystems/HABridge/hue/HueMulator.java @@ -20,6 +20,7 @@ import com.bwssystems.HABridge.plugins.hue.HueHome; import com.bwssystems.HABridge.util.JsonTransformer; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import com.google.gson.JsonSyntaxException; import static spark.Spark.get; import static spark.Spark.options; @@ -746,9 +747,17 @@ public class HueMulator { } else if(!url.startsWith("[{\"item\"")) url = "[{\"item\":" + url + "}]"; + log.debug("Decode Json for url items: " + url); CallItem[] callItems = null; - callItems = aGsonHandler.fromJson(url, CallItem[].class); - + try { + callItems = aGsonHandler.fromJson(url, CallItem[].class); + } catch(JsonSyntaxException e) { + log.warn("Could not decode Json for url items: " + lightId + " for hue state change request: " + userId + " from " + + ipAddress + " body: " + body + " url items: " + url); + return aGsonHandler.toJson(HueErrorResponse.createResponse("3", "/lights/" + lightId, + "Could decode json in request", "/lights/" + lightId, null, null).getTheErrors(), HueError[].class); + } + for (int i = 0; callItems != null && i < callItems.length; i++) { if(!filterByRequester(callItems[i].getFilterIPs(), ipAddress)) { log.debug("filter for requester address not present in list: " + callItems[i].getFilterIPs() + " with request ip of: " + ipAddress); diff --git a/src/main/java/com/bwssystems/HABridge/plugins/harmony/HarmonyHome.java b/src/main/java/com/bwssystems/HABridge/plugins/harmony/HarmonyHome.java index 0c099d4..e02bde4 100644 --- a/src/main/java/com/bwssystems/HABridge/plugins/harmony/HarmonyHome.java +++ b/src/main/java/com/bwssystems/HABridge/plugins/harmony/HarmonyHome.java @@ -135,7 +135,7 @@ public class HarmonyHome implements Home { } else { if(anItem.getType().trim().equalsIgnoreCase(DeviceMapTypes.HARMONY_ACTIVITY[DeviceMapTypes.typeIndex])) { - RunActivity anActivity = aGsonHandler.fromJson(anItem.getItem().getAsString(), RunActivity.class); + RunActivity anActivity = aGsonHandler.fromJson(anItem.getItem(), RunActivity.class); if(anActivity.getHub() == null || anActivity.getHub().isEmpty()) anActivity.setHub(device.getTargetDevice()); HarmonyHandler myHarmony = getHarmonyHandler(anActivity.getHub());