From a82717744e1cec364033e58b646246671d3d9820 Mon Sep 17 00:00:00 2001 From: Lars Finander Date: Tue, 9 Feb 2016 13:45:19 -0800 Subject: [PATCH] DVCSMP-1480 Fixed ArrayIndexOutOfBoundsException Fixed ArrayIndexOutOfBoundsException from events that lack values to some fields in a few LAN Connect SmartApps. --- .../samsung-tv-connect.groovy | 48 +++++------------ .../wemo-connect.src/wemo-connect.groovy | 52 ++++++------------- 2 files changed, 30 insertions(+), 70 deletions(-) diff --git a/smartapps/smartthings/samsung-tv-connect.src/samsung-tv-connect.groovy b/smartapps/smartthings/samsung-tv-connect.src/samsung-tv-connect.groovy index 6a15dc9..79bcb68 100644 --- a/smartapps/smartthings/samsung-tv-connect.src/samsung-tv-connect.groovy +++ b/smartapps/smartthings/samsung-tv-connect.src/samsung-tv-connect.groovy @@ -316,60 +316,40 @@ private def parseEventMessage(String description) { parts.each { part -> part = part.trim() if (part.startsWith('devicetype:')) { - def valueString = part.split(":")[1].trim() - event.devicetype = valueString + part -= "devicetype:" + event.devicetype = part.trim() } else if (part.startsWith('mac:')) { - def valueString = part.split(":")[1].trim() - if (valueString) { - event.mac = valueString - } + part -= "mac:" + event.mac = part.trim() } else if (part.startsWith('networkAddress:')) { - def valueString = part.split(":")[1].trim() - if (valueString) { - event.ip = valueString - } + part -= "networkAddress:" + event.ip = part.trim() } else if (part.startsWith('deviceAddress:')) { - def valueString = part.split(":")[1].trim() - if (valueString) { - event.port = valueString - } + part -= "deviceAddress:" + event.port = part.trim() } else if (part.startsWith('ssdpPath:')) { - def valueString = part.split(":")[1].trim() - if (valueString) { - event.ssdpPath = valueString - } + part -= "ssdpPath:" + event.ssdpPath = part.trim() } else if (part.startsWith('ssdpUSN:')) { part -= "ssdpUSN:" - def valueString = part.trim() - if (valueString) { - event.ssdpUSN = valueString - } + event.ssdpUSN = part.trim() } else if (part.startsWith('ssdpTerm:')) { part -= "ssdpTerm:" - def valueString = part.trim() - if (valueString) { - event.ssdpTerm = valueString - } + event.ssdpTerm = part.trim() } else if (part.startsWith('headers')) { part -= "headers:" - def valueString = part.trim() - if (valueString) { - event.headers = valueString - } + event.headers = part.trim() } else if (part.startsWith('body')) { part -= "body:" - def valueString = part.trim() - if (valueString) { - event.body = valueString - } + event.body = part.trim() } } event diff --git a/smartapps/smartthings/wemo-connect.src/wemo-connect.groovy b/smartapps/smartthings/wemo-connect.src/wemo-connect.groovy index 1f12c15..a5819e1 100644 --- a/smartapps/smartthings/wemo-connect.src/wemo-connect.groovy +++ b/smartapps/smartthings/wemo-connect.src/wemo-connect.groovy @@ -473,68 +473,48 @@ private def parseXmlBody(def body) { } private def parseDiscoveryMessage(String description) { - def device = [:] + def event = [:] def parts = description.split(',') parts.each { part -> part = part.trim() if (part.startsWith('devicetype:')) { - def valueString = part.split(":")[1].trim() - device.devicetype = valueString + part -= "devicetype:" + event.devicetype = part.trim() } else if (part.startsWith('mac:')) { - def valueString = part.split(":")[1].trim() - if (valueString) { - device.mac = valueString - } + part -= "mac:" + event.mac = part.trim() } else if (part.startsWith('networkAddress:')) { - def valueString = part.split(":")[1].trim() - if (valueString) { - device.ip = valueString - } + part -= "networkAddress:" + event.ip = part.trim() } else if (part.startsWith('deviceAddress:')) { - def valueString = part.split(":")[1].trim() - if (valueString) { - device.port = valueString - } + part -= "deviceAddress:" + event.port = part.trim() } else if (part.startsWith('ssdpPath:')) { - def valueString = part.split(":")[1].trim() - if (valueString) { - device.ssdpPath = valueString - } + part -= "ssdpPath:" + event.ssdpPath = part.trim() } else if (part.startsWith('ssdpUSN:')) { part -= "ssdpUSN:" - def valueString = part.trim() - if (valueString) { - device.ssdpUSN = valueString - } + event.ssdpUSN = part.trim() } else if (part.startsWith('ssdpTerm:')) { part -= "ssdpTerm:" - def valueString = part.trim() - if (valueString) { - device.ssdpTerm = valueString - } + event.ssdpTerm = part.trim() } else if (part.startsWith('headers')) { part -= "headers:" - def valueString = part.trim() - if (valueString) { - device.headers = valueString - } + event.headers = part.trim() } else if (part.startsWith('body')) { part -= "body:" - def valueString = part.trim() - if (valueString) { - device.body = valueString - } + event.body = part.trim() } } - device + event } def doDeviceSync(){