[digitalstrom] fix NPE (#8992)

* fix NPE
* fix formatting

Signed-off-by: Jan N. Klug <jan.n.klug@rub.de>
This commit is contained in:
J-N-K 2020-11-10 08:43:13 +01:00 committed by GitHub
parent 132f05bba5
commit c0118930be
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

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