[digitalstrom] fixes StringIndexOutOfBoundsException (#9194)
* [digitalstrom] catch issues when adding devices Signed-off-by: Gaétan Collaud <gaetancollaud@gmail.com> * Update bundles/org.openhab.binding.digitalstrom/src/main/java/org/openhab/binding/digitalstrom/internal/discovery/DiscoveryServiceManager.java Signed-off-by: Gaétan Collaud <gaetancollaud@gmail.com>
This commit is contained in:
parent
7582117759
commit
f9866b2c77
@ -40,6 +40,8 @@ import org.openhab.core.thing.ThingTypeUID;
|
|||||||
import org.openhab.core.thing.type.ThingType;
|
import org.openhab.core.thing.type.ThingType;
|
||||||
import org.osgi.framework.BundleContext;
|
import org.osgi.framework.BundleContext;
|
||||||
import org.osgi.framework.ServiceRegistration;
|
import org.osgi.framework.ServiceRegistration;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The {@link DiscoveryServiceManager} manages the different scene and device discovery services and informs them about
|
* The {@link DiscoveryServiceManager} manages the different scene and device discovery services and informs them about
|
||||||
@ -51,6 +53,8 @@ import org.osgi.framework.ServiceRegistration;
|
|||||||
public class DiscoveryServiceManager
|
public class DiscoveryServiceManager
|
||||||
implements SceneStatusListener, DeviceStatusListener, TemperatureControlStatusListener {
|
implements SceneStatusListener, DeviceStatusListener, TemperatureControlStatusListener {
|
||||||
|
|
||||||
|
private final Logger logger = LoggerFactory.getLogger(DiscoveryServiceManager.class);
|
||||||
|
|
||||||
private final Map<String, AbstractDiscoveryService> discoveryServices;
|
private final Map<String, AbstractDiscoveryService> discoveryServices;
|
||||||
private final Map<String, ServiceRegistration<?>> discoveryServiceRegs = new HashMap<>();
|
private final Map<String, ServiceRegistration<?>> discoveryServiceRegs = new HashMap<>();
|
||||||
private final String bridgeUID;
|
private final String bridgeUID;
|
||||||
@ -194,6 +198,7 @@ public class DiscoveryServiceManager
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDeviceAdded(GeneralDeviceInformation device) {
|
public void onDeviceAdded(GeneralDeviceInformation device) {
|
||||||
|
try {
|
||||||
if (device instanceof Device) {
|
if (device instanceof Device) {
|
||||||
String id = ((Device) device).getHWinfo().substring(0, 2);
|
String id = ((Device) device).getHWinfo().substring(0, 2);
|
||||||
if (((Device) device).isSensorDevice()) {
|
if (((Device) device).isSensorDevice()) {
|
||||||
@ -206,9 +211,13 @@ public class DiscoveryServiceManager
|
|||||||
if (device instanceof Circuit) {
|
if (device instanceof Circuit) {
|
||||||
if (discoveryServices.get(DsDeviceThingTypeProvider.SupportedThingTypes.circuit.toString()) != null) {
|
if (discoveryServices.get(DsDeviceThingTypeProvider.SupportedThingTypes.circuit.toString()) != null) {
|
||||||
((DeviceDiscoveryService) discoveryServices
|
((DeviceDiscoveryService) discoveryServices
|
||||||
.get(DsDeviceThingTypeProvider.SupportedThingTypes.circuit.toString())).onDeviceAdded(device);
|
.get(DsDeviceThingTypeProvider.SupportedThingTypes.circuit.toString()))
|
||||||
|
.onDeviceAdded(device);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} catch (RuntimeException ex) {
|
||||||
|
logger.warn("Unable to add devices {}", device, ex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user