Skip to content

Commit 7449eea

Browse files
committed
Suppress NPE (#52)
Address #52 try/catch upon snapshot retrieval to suppress NPE possible cause: network fail / cable disconnect should not happen normally and might still need a bundle restart to work again after connection is restored?
1 parent e289688 commit 7449eea

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

src/main/java/org/openhab/binding/synologysurveillancestation/internal/thread/SynoApiThreadSnapshot.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
import org.openhab.core.thing.Channel;
2222
import org.openhab.core.thing.Thing;
2323
import org.openhab.core.types.UnDefType;
24+
import org.slf4j.Logger;
25+
import org.slf4j.LoggerFactory;
2426

2527
/**
2628
* Thread for getting snapshots
@@ -29,7 +31,7 @@
2931
*/
3032
@NonNullByDefault
3133
public class SynoApiThreadSnapshot extends SynoApiThread<SynoCameraHandler> {
32-
// private final Logger logger = LoggerFactory.getLogger(SynoApiThreadSnapshot.class);
34+
private final Logger logger = LoggerFactory.getLogger(SynoApiThreadSnapshot.class);
3335

3436
public SynoApiThreadSnapshot(SynoCameraHandler handler, int refreshRate) {
3537
super(SynoApiThread.THREAD_SNAPSHOT, handler, refreshRate);
@@ -47,8 +49,13 @@ public boolean refresh() throws Exception {
4749
Channel channel = cameraHandler.getThing().getChannel(CHANNEL_SNAPSHOT);
4850
Thing thing = cameraHandler.getThing();
4951
SynoCameraConfig config = thing.getConfiguration().as(SynoCameraConfig.class);
50-
byte[] snapshot = cameraHandler.getSynoWebApiHandler().getApiCamera()
51-
.getSnapshot(getSynoHandler().getCameraId(), getRefreshRate(), config.getSnapshotStreamId());
52+
byte[] snapshot = new byte[0];
53+
try {
54+
snapshot = cameraHandler.getSynoWebApiHandler().getApiCamera().getSnapshot(getSynoHandler().getCameraId(),
55+
getRefreshRate(), config.getSnapshotStreamId());
56+
} catch (Exception e) {
57+
logger.error("Unexpected exception while obtaining snapshot, possibly network disconnected");
58+
}
5259
if (snapshot.length < 1000) {
5360
getSynoHandler().updateState(channel.getUID(), UnDefType.UNDEF);
5461
return (snapshot.length == 2);

0 commit comments

Comments
 (0)