From 4f85ab4faadb92ed1a316380c643e1717c643f81 Mon Sep 17 00:00:00 2001 From: Leo Siepel Date: Mon, 30 Oct 2023 18:52:00 +0100 Subject: [PATCH 1/3] Warning and SAT clenaup Signed-off-by: Leo Siepel --- .../doorbird/internal/action/DoorbirdActions.java | 8 ++++++++ .../binding/doorbird/internal/api/DoorbirdAPI.java | 2 +- .../doorbird/internal/handler/DoorbellHandler.java | 14 ++++++++++---- .../internal/listener/DoorbirdUdpListener.java | 4 ++-- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/action/DoorbirdActions.java b/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/action/DoorbirdActions.java index 6e1a1decc5e4c..94153bda07682 100644 --- a/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/action/DoorbirdActions.java +++ b/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/action/DoorbirdActions.java @@ -54,8 +54,10 @@ public void setThingHandler(@Nullable ThingHandler handler) { @RuleAction(label = "restart the Doorbird", description = "Restarts the Doorbird device.") public void restart() { logger.debug("Doorbird action 'restart' called"); + DoorbellHandler handler = this.handler; if (handler != null) { handler.actionRestart(); + this.handler = handler; } else { logger.info("Doorbird Action service ThingHandler is null!"); } @@ -68,8 +70,10 @@ public static void restart(ThingActions actions) { @RuleAction(label = "hangup a SIP call", description = "Hangup SIP call.") public void sipHangup() { logger.debug("Doorbird action 'sipHangup' called"); + DoorbellHandler handler = this.handler; if (handler != null) { handler.actionSIPHangup(); + this.handler = handler; } else { logger.info("Doorbird Action service ThingHandler is null!"); } @@ -82,6 +86,7 @@ public static void sipHangup(ThingActions actions) { @RuleAction(label = "get the ring time limit", description = "Get the value of RING_TIME_LIMIT.") public @ActionOutput(name = "getRingTimeLimit", type = "java.lang.String") String getRingTimeLimit() { logger.debug("Doorbird action 'getRingTimeLimit' called"); + DoorbellHandler handler = this.handler; if (handler != null) { return handler.actionGetRingTimeLimit(); } else { @@ -97,6 +102,7 @@ public static String getRingTimeLimit(ThingActions actions) { @RuleAction(label = "get the call time limit", description = "Get the value of CALL_TIME_LIMIT.") public @ActionOutput(name = "getCallTimeLimit", type = "java.lang.String") String getCallTimeLimit() { logger.debug("Doorbird action 'getCallTimeLimit' called"); + DoorbellHandler handler = this.handler; if (handler != null) { return handler.actionGetCallTimeLimit(); } else { @@ -112,6 +118,7 @@ public static String getCallTimeLimit(ThingActions actions) { @RuleAction(label = "get the last error code", description = "Get the value of LASTERRORCODE.") public @ActionOutput(name = "getLastErrorCode", type = "java.lang.String") String getLastErrorCode() { logger.debug("Doorbird action 'getLastErrorCode' called"); + DoorbellHandler handler = this.handler; if (handler != null) { return handler.actionGetLastErrorCode(); } else { @@ -127,6 +134,7 @@ public static String getLastErrorCode(ThingActions actions) { @RuleAction(label = "get the last error text", description = "Get the value of LASTERRORTEXT.") public @ActionOutput(name = "getLastErrorText", type = "java.lang.String") String getLastErrorText() { logger.debug("Doorbird action 'getLastErrorText' called"); + DoorbellHandler handler = this.handler; if (handler != null) { return handler.actionGetLastErrorText(); } else { diff --git a/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/api/DoorbirdAPI.java b/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/api/DoorbirdAPI.java index 51ba942577cda..94af5c4368625 100644 --- a/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/api/DoorbirdAPI.java +++ b/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/api/DoorbirdAPI.java @@ -54,6 +54,7 @@ public final class DoorbirdAPI { private static final Gson GSON = new Gson(); private final Logger logger = LoggerFactory.getLogger(DoorbirdAPI.class); + private static final int CHUNK_SIZE = 256; private @Nullable Authorization authorization; private @Nullable HttpClient httpClient; @@ -191,7 +192,6 @@ public void sendAudio(InputStream audioInputStream) { // It is crucial to send data in small chunks to not overload the doorbird // It means that we have to wait the appropriate amount of time between chunk to send // real time data, as if it were live spoken. - int CHUNK_SIZE = 256; int nbByteRead = -1; long nextChunkSendTimeStamp = 0; do { diff --git a/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/handler/DoorbellHandler.java b/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/handler/DoorbellHandler.java index e625fa8a5e400..e156ce272f2df 100644 --- a/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/handler/DoorbellHandler.java +++ b/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/handler/DoorbellHandler.java @@ -365,9 +365,10 @@ private void startImageRefreshJob() { } private void stopImageRefreshJob() { + ScheduledFuture imageRefreshJob = this.imageRefreshJob; if (imageRefreshJob != null) { imageRefreshJob.cancel(true); - imageRefreshJob = null; + this.imageRefreshJob = null; logger.debug("Canceling image refresh job"); } } @@ -378,6 +379,7 @@ private void startUDPListenerJob() { } private void stopUDPListenerJob() { + ScheduledFuture listenerJob = this.listenerJob; if (listenerJob != null) { listenerJob.cancel(true); udpListener.shutdown(); @@ -390,19 +392,21 @@ private void startDoorbellOffJob() { if (offDelay == null) { return; } + ScheduledFuture doorbellOffJob = this.doorbellOffJob; if (doorbellOffJob != null) { doorbellOffJob.cancel(true); } - doorbellOffJob = scheduler.schedule(() -> { + this.doorbellOffJob = scheduler.schedule(() -> { logger.debug("Update channel 'doorbell' to OFF for thing {}", getThing().getUID()); triggerChannel(CHANNEL_DOORBELL, CommonTriggerEvents.RELEASED); }, offDelay, TimeUnit.SECONDS); } private void stopDoorbellOffJob() { + ScheduledFuture doorbellOffJob = this.doorbellOffJob; if (doorbellOffJob != null) { doorbellOffJob.cancel(true); - doorbellOffJob = null; + this.doorbellOffJob = null; logger.debug("Canceling doorbell off job"); } } @@ -412,6 +416,7 @@ private void startMotionOffJob() { if (offDelay == null) { return; } + ScheduledFuture motionOffJob = this.motionOffJob; if (motionOffJob != null) { motionOffJob.cancel(true); } @@ -422,9 +427,10 @@ private void startMotionOffJob() { } private void stopMotionOffJob() { + ScheduledFuture motionOffJob = this.motionOffJob; if (motionOffJob != null) { motionOffJob.cancel(true); - motionOffJob = null; + this.motionOffJob = null; logger.debug("Canceling motion off job"); } } diff --git a/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/listener/DoorbirdUdpListener.java b/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/listener/DoorbirdUdpListener.java index 271fe803af941..ddc21d421aaea 100644 --- a/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/listener/DoorbirdUdpListener.java +++ b/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/listener/DoorbirdUdpListener.java @@ -66,10 +66,11 @@ public void run() { } public void shutdown() { + DatagramSocket socket = this.socket; if (socket != null) { socket.close(); logger.debug("Listener closing listener socket"); - socket = null; + this.socket = null; } } @@ -97,7 +98,6 @@ private void receivePackets() { // Nothing to do on socket timeout } catch (IOException e) { logger.debug("Listener got IOException waiting for datagram: {}", e.getMessage()); - socket = null; } } logger.debug("Listener exiting"); From e97226cef8fe45e8cbcf6ec51ff94e8847950738 Mon Sep 17 00:00:00 2001 From: Leo Siepel Date: Mon, 30 Oct 2023 22:27:11 +0100 Subject: [PATCH 2/3] Review comment Signed-off-by: Leo Siepel --- .../binding/doorbird/internal/listener/DoorbirdUdpListener.java | 1 + 1 file changed, 1 insertion(+) diff --git a/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/listener/DoorbirdUdpListener.java b/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/listener/DoorbirdUdpListener.java index ddc21d421aaea..572938ed24806 100644 --- a/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/listener/DoorbirdUdpListener.java +++ b/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/listener/DoorbirdUdpListener.java @@ -98,6 +98,7 @@ private void receivePackets() { // Nothing to do on socket timeout } catch (IOException e) { logger.debug("Listener got IOException waiting for datagram: {}", e.getMessage()); + socket = null; } } logger.debug("Listener exiting"); From babf42e7ade502c0d97367d83250d07afcb184eb Mon Sep 17 00:00:00 2001 From: Leo Siepel Date: Sat, 4 Nov 2023 09:18:07 +0100 Subject: [PATCH 3/3] Review comments Signed-off-by: Leo Siepel --- .../binding/doorbird/internal/action/DoorbirdActions.java | 2 -- .../binding/doorbird/internal/handler/DoorbellHandler.java | 3 ++- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/action/DoorbirdActions.java b/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/action/DoorbirdActions.java index 94153bda07682..d335e194bdfcf 100644 --- a/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/action/DoorbirdActions.java +++ b/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/action/DoorbirdActions.java @@ -57,7 +57,6 @@ public void restart() { DoorbellHandler handler = this.handler; if (handler != null) { handler.actionRestart(); - this.handler = handler; } else { logger.info("Doorbird Action service ThingHandler is null!"); } @@ -73,7 +72,6 @@ public void sipHangup() { DoorbellHandler handler = this.handler; if (handler != null) { handler.actionSIPHangup(); - this.handler = handler; } else { logger.info("Doorbird Action service ThingHandler is null!"); } diff --git a/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/handler/DoorbellHandler.java b/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/handler/DoorbellHandler.java index e156ce272f2df..45dadd0f78b08 100644 --- a/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/handler/DoorbellHandler.java +++ b/bundles/org.openhab.binding.doorbird/src/main/java/org/openhab/binding/doorbird/internal/handler/DoorbellHandler.java @@ -383,6 +383,7 @@ private void stopUDPListenerJob() { if (listenerJob != null) { listenerJob.cancel(true); udpListener.shutdown(); + this.listenerJob = null; logger.debug("Canceling listener job"); } } @@ -420,7 +421,7 @@ private void startMotionOffJob() { if (motionOffJob != null) { motionOffJob.cancel(true); } - motionOffJob = scheduler.schedule(() -> { + this.motionOffJob = scheduler.schedule(() -> { logger.debug("Update channel 'motion' to OFF for thing {}", getThing().getUID()); updateState(CHANNEL_MOTION, OnOffType.OFF); }, offDelay, TimeUnit.SECONDS);