[bondhome] Fix fatal Null Pointer errors (#14103)
* Fix fatal Null Pointer errors Signed-off-by: Michael Lobstein <michael.lobstein@gmail.com>
This commit is contained in:
parent
dbaf081daa
commit
dd8eb4701e
|
@ -35,6 +35,7 @@ public enum BondDeviceType {
|
||||||
FIREPLACE(THING_TYPE_BOND_FIREPLACE),
|
FIREPLACE(THING_TYPE_BOND_FIREPLACE),
|
||||||
@SerializedName("GX")
|
@SerializedName("GX")
|
||||||
GENERIC_DEVICE(THING_TYPE_BOND_GENERIC);
|
GENERIC_DEVICE(THING_TYPE_BOND_GENERIC);
|
||||||
|
// TODO: add Light ("LT") type
|
||||||
|
|
||||||
private ThingTypeUID deviceTypeUid;
|
private ThingTypeUID deviceTypeUid;
|
||||||
|
|
||||||
|
|
|
@ -120,7 +120,9 @@ public class BondHttpApi {
|
||||||
String json = request("/v2/devices/" + deviceId);
|
String json = request("/v2/devices/" + deviceId);
|
||||||
logger.trace("BondHome device info : {}", json);
|
logger.trace("BondHome device info : {}", json);
|
||||||
try {
|
try {
|
||||||
return Objects.requireNonNull(gson.fromJson(json, BondDevice.class));
|
BondDevice device = Objects.requireNonNull(gson.fromJson(json, BondDevice.class));
|
||||||
|
device.actions.removeIf(Objects::isNull);
|
||||||
|
return device;
|
||||||
} catch (JsonParseException e) {
|
} catch (JsonParseException e) {
|
||||||
logger.debug("Could not parse device {}'s JSON '{}'", deviceId, json, e);
|
logger.debug("Could not parse device {}'s JSON '{}'", deviceId, json, e);
|
||||||
throw new BondException("@text/offline.comm-error.unparseable-response");
|
throw new BondException("@text/offline.comm-error.unparseable-response");
|
||||||
|
@ -250,7 +252,7 @@ public class BondHttpApi {
|
||||||
logger.debug("Repeated Bond API calls to {} failed.", uri);
|
logger.debug("Repeated Bond API calls to {} failed.", uri);
|
||||||
bridgeHandler.setBridgeOffline(ThingStatusDetail.COMMUNICATION_ERROR,
|
bridgeHandler.setBridgeOffline(ThingStatusDetail.COMMUNICATION_ERROR,
|
||||||
"@text/offline.comm-error.api-call-failed");
|
"@text/offline.comm-error.api-call-failed");
|
||||||
throw new BondException("@text/offline.conf-error.api-call-failed", true);
|
throw new BondException("@text/offline.comm-error.api-call-failed", true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} while (true);
|
} while (true);
|
||||||
|
|
|
@ -96,7 +96,7 @@ public class BondDiscoveryService extends AbstractDiscoveryService implements Th
|
||||||
for (final String deviceId : deviceList) {
|
for (final String deviceId : deviceList) {
|
||||||
BondDevice thisDevice = api.getDevice(deviceId);
|
BondDevice thisDevice = api.getDevice(deviceId);
|
||||||
String deviceName;
|
String deviceName;
|
||||||
if ((deviceName = thisDevice.name) != null) {
|
if (thisDevice.type != null && (deviceName = thisDevice.name) != null) {
|
||||||
final ThingUID deviceUid = new ThingUID(thisDevice.type.getThingTypeUID(), bridgeUid, deviceId);
|
final ThingUID deviceUid = new ThingUID(thisDevice.type.getThingTypeUID(), bridgeUid, deviceId);
|
||||||
final DiscoveryResult discoveryResult = DiscoveryResultBuilder.create(deviceUid)
|
final DiscoveryResult discoveryResult = DiscoveryResultBuilder.create(deviceUid)
|
||||||
.withBridge(bridgeUid).withLabel(thisDevice.name)
|
.withBridge(bridgeUid).withLabel(thisDevice.name)
|
||||||
|
|
|
@ -82,7 +82,7 @@ channel-type.bondhome.timerChannelType.description = Starts a timer for s second
|
||||||
|
|
||||||
# thing status descriptions
|
# thing status descriptions
|
||||||
|
|
||||||
offline.comm-error.api-call-failed = Bond API call to {} failed: {}
|
offline.comm-error.api-call-failed = Bond API call failed.
|
||||||
offline.comm-error.device-not-found = No Bond device found with the given device id.
|
offline.comm-error.device-not-found = No Bond device found with the given device id.
|
||||||
offline.comm-error.no-api = Bond Bridge API not available.
|
offline.comm-error.no-api = Bond Bridge API not available.
|
||||||
offline.comm-error.no-response = No response received!
|
offline.comm-error.no-response = No response received!
|
||||||
|
|
Loading…
Reference in New Issue