]> git.basschouten.com Git - openhab-addons.git/commitdiff
[digitalstrom] fix NPE (#8992)
authorJ-N-K <J-N-K@users.noreply.github.com>
Tue, 10 Nov 2020 07:43:13 +0000 (08:43 +0100)
committerGitHub <noreply@github.com>
Tue, 10 Nov 2020 07:43:13 +0000 (23:43 -0800)
* fix NPE
* fix formatting

Signed-off-by: Jan N. Klug <jan.n.klug@rub.de>
bundles/org.openhab.binding.digitalstrom/src/main/java/org/openhab/binding/digitalstrom/internal/lib/event/EventListener.java

index fa324ccbe2e80b55414ccd7da1b3b27954ed49e0..0460d659e00cd694b676a57ed929854a33028f8f 100644 (file)
@@ -14,7 +14,6 @@ package org.openhab.binding.digitalstrom.internal.lib.event;
 
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.concurrent.ScheduledExecutorService;
@@ -137,14 +136,21 @@ public class EventListener {
         return isStarted;
     }
 
-    private void internalStop() {
-        if (subscriptionScheduler != null && !subscriptionScheduler.isCancelled()) {
+    private void stopSubscriptionScheduler() {
+        final ScheduledFuture<?> subscriptionScheduler = this.subscriptionScheduler;
+        if (subscriptionScheduler != null) {
             subscriptionScheduler.cancel(true);
-            subscriptionScheduler = null;
+            this.subscriptionScheduler = null;
         }
-        if (pollingScheduler != null && !pollingScheduler.isCancelled()) {
+    }
+
+    private void internalStop() {
+        stopSubscriptionScheduler();
+
+        ScheduledFuture<?> pollingScheduler = this.pollingScheduler;
+        if (pollingScheduler != null) {
             pollingScheduler.cancel(true);
-            pollingScheduler = null;
+            this.pollingScheduler = null;
             unsubscribe();
             logger.debug("internal stop EventListener");
         }
@@ -347,17 +353,10 @@ public class EventListener {
         return subscribed;
     }
 
-    private void subscribe(final List<String> evetNames) {
-        final Iterator<String> eventNameIter = evetNames.iterator();
-        subscriptionScheduler = scheduler.scheduleWithFixedDelay(new Runnable() {
-
-            @Override
-            public void run() {
-                while (eventNameIter.hasNext()) {
-                    subscribe(eventNameIter.next());
-                }
-                subscriptionScheduler.cancel(true);
-            }
+    private void subscribe(final List<String> eventNames) {
+        subscriptionScheduler = scheduler.scheduleWithFixedDelay(() -> {
+            eventNames.forEach(this::subscribe);
+            stopSubscriptionScheduler();
         }, 0, SUBSCRIBE_DELAY, TimeUnit.MILLISECONDS);
     }