From 79dfb43e42b5f6f978511a226359f7ae9ebaf58a Mon Sep 17 00:00:00 2001 From: Fabian Wolter Date: Tue, 12 Jan 2021 22:05:12 +0100 Subject: [PATCH] [lcn] Fix displaying of "not enough licenses" message (#9761) Signed-off-by: Fabian Wolter --- .../connection/AbstractConnectionState.java | 18 ++++++++++ ...bstractConnectionStateSendCredentials.java | 2 +- .../connection/ConnectionStateConnecting.java | 2 +- ...ectionStateGracePeriodBeforeReconnect.java | 6 ++++ .../connection/ConnectionStateMachine.java | 15 +++----- .../connection/ConnectionStateShutdown.java | 6 ++++ ...ConnectionStateWaitForLcnBusConnected.java | 35 +++++++++++-------- 7 files changed, 58 insertions(+), 26 deletions(-) diff --git a/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/AbstractConnectionState.java b/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/AbstractConnectionState.java index 78c1e0cc2ba..e2151f1a5f7 100644 --- a/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/AbstractConnectionState.java +++ b/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/AbstractConnectionState.java @@ -17,6 +17,7 @@ import java.nio.channels.Channel; import java.util.concurrent.ScheduledExecutorService; import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; import org.openhab.binding.lcn.internal.common.LcnAddr; import org.openhab.binding.lcn.internal.common.LcnDefs; @@ -84,6 +85,23 @@ public abstract class AbstractConnectionState extends AbstractState context.handleConnectionFailed( + () -> handleConnectionFailed( new LcnException("Network timeout in state " + getClass().getSimpleName())), connection.getSettings().getTimeout(), TimeUnit.MILLISECONDS)); } diff --git a/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/ConnectionStateConnecting.java b/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/ConnectionStateConnecting.java index aee67ed1c3b..26b9c00c745 100644 --- a/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/ConnectionStateConnecting.java +++ b/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/ConnectionStateConnecting.java @@ -86,7 +86,7 @@ public class ConnectionStateConnecting extends AbstractConnectionState { message = e.getMessage(); } connection.getCallback().onOffline(Objects.requireNonNullElse(message, "")); - context.handleConnectionFailed(e); + handleConnectionFailed(e); } @Override diff --git a/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/ConnectionStateGracePeriodBeforeReconnect.java b/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/ConnectionStateGracePeriodBeforeReconnect.java index 3781a533774..34775b7cb5f 100644 --- a/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/ConnectionStateGracePeriodBeforeReconnect.java +++ b/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/ConnectionStateGracePeriodBeforeReconnect.java @@ -15,6 +15,7 @@ package org.openhab.binding.lcn.internal.connection; import java.util.concurrent.TimeUnit; import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; /** * This state is active when the connection failed. A grace period is enforced to prevent fast cycling through the @@ -42,4 +43,9 @@ public class ConnectionStateGracePeriodBeforeReconnect extends AbstractConnectio public void onPckMessageReceived(String data) { // nothing } + + @Override + public void handleConnectionFailed(@Nullable Throwable e) { + // nothing + } } diff --git a/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/ConnectionStateMachine.java b/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/ConnectionStateMachine.java index cb75755433d..5e97faf0cc7 100644 --- a/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/ConnectionStateMachine.java +++ b/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/connection/ConnectionStateMachine.java @@ -46,7 +46,7 @@ public class ConnectionStateMachine extends AbstractStateMachine localLegacyTimer = legacyTimer; - if (data.equals(LcnDefs.LCNCONNSTATE_DISCONNECTED)) { - if (localLegacyTimer != null) { - localLegacyTimer.cancel(true); - } - connection.getCallback().onOffline("LCN bus not connected to LCN-PCHK/PKE"); - } else if (data.equals(LcnDefs.LCNCONNSTATE_CONNECTED)) { - if (localLegacyTimer != null) { - localLegacyTimer.cancel(true); - } - connection.getCallback().onOnline(); - nextState(ConnectionStateSendDimMode::new); - } else if (data.equals(LcnDefs.INSUFFICIENT_LICENSES)) { - context.handleConnectionFailed( - new LcnException("LCN-PCHK/PKE has not enough licenses to handle this connection")); + if (localLegacyTimer != null) { + localLegacyTimer.cancel(true); } } }