From 52d7d790f6f5c2b2e54af45dd99190157ef0a443 Mon Sep 17 00:00:00 2001 From: Viacheslav Kukhtyn Date: Sat, 21 Nov 2020 17:18:19 +0200 Subject: [PATCH] Update device and session infos in context --- .../server/common/msg/session/SessionContext.java | 2 +- .../server/transport/mqtt/MqttTransportHandler.java | 4 ++-- .../transport/mqtt/session/DeviceSessionCtx.java | 5 +++++ .../server/common/transport/SessionMsgListener.java | 2 +- .../transport/service/DefaultTransportService.java | 2 +- .../transport/session/DeviceAwareSessionContext.java | 10 ++++++++-- 6 files changed, 18 insertions(+), 7 deletions(-) diff --git a/common/message/src/main/java/org/thingsboard/server/common/msg/session/SessionContext.java b/common/message/src/main/java/org/thingsboard/server/common/msg/session/SessionContext.java index a8500b8e09..47f2af1c84 100644 --- a/common/message/src/main/java/org/thingsboard/server/common/msg/session/SessionContext.java +++ b/common/message/src/main/java/org/thingsboard/server/common/msg/session/SessionContext.java @@ -28,5 +28,5 @@ public interface SessionContext { void onProfileUpdate(DeviceProfile deviceProfile); - void onDeviceUpdate(Device device); + void onDeviceProfileUpdate(Device device); } diff --git a/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttTransportHandler.java b/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttTransportHandler.java index eadfab729e..335158af32 100644 --- a/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttTransportHandler.java +++ b/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttTransportHandler.java @@ -706,7 +706,7 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement } @Override - public void onDeviceUpdate(Device device) { - deviceSessionCtx.onDeviceUpdate(device); + public void onDeviceProfileUpdate(Device device) { + deviceSessionCtx.onDeviceProfileUpdate(device); } } diff --git a/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/session/DeviceSessionCtx.java b/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/session/DeviceSessionCtx.java index b45dc5add5..4451045899 100644 --- a/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/session/DeviceSessionCtx.java +++ b/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/session/DeviceSessionCtx.java @@ -20,6 +20,7 @@ import io.netty.channel.ChannelHandlerContext; import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; +import org.thingsboard.server.common.data.Device; import org.thingsboard.server.common.data.DeviceProfile; import org.thingsboard.server.common.data.DeviceTransportType; import org.thingsboard.server.common.data.TransportPayloadType; @@ -113,6 +114,10 @@ public class DeviceSessionCtx extends MqttDeviceAwareSessionContext { updateTopicFilters(deviceProfile); } + @Override + public void onDeviceProfileUpdate(Device device) { + super.onDeviceProfileUpdate(device); + } private void updateTopicFilters(DeviceProfile deviceProfile) { DeviceProfileTransportConfiguration transportConfiguration = deviceProfile.getProfileData().getTransportConfiguration(); diff --git a/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/SessionMsgListener.java b/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/SessionMsgListener.java index c7f1a254f7..28a9d6d727 100644 --- a/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/SessionMsgListener.java +++ b/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/SessionMsgListener.java @@ -41,6 +41,6 @@ public interface SessionMsgListener { default void onProfileUpdate(DeviceProfile deviceProfile) { } - default void onDeviceUpdate(Device device) { + default void onDeviceProfileUpdate(Device device) { } } diff --git a/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/service/DefaultTransportService.java b/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/service/DefaultTransportService.java index c9336862a2..68040b3d67 100644 --- a/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/service/DefaultTransportService.java +++ b/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/service/DefaultTransportService.java @@ -689,7 +689,7 @@ public class DefaultTransportService implements TransportService { && md.getSessionInfo().getDeviceIdLSB() == deviceIdLSB) && (md.getSessionInfo().getDeviceProfileIdMSB() != deviceProfileIdMSB && md.getSessionInfo().getDeviceProfileIdLSB() != deviceProfileIdLSB)) { - transportCallbackExecutor.submit(() -> md.getListener().onDeviceUpdate(device)); + transportCallbackExecutor.submit(() -> md.getListener().onDeviceProfileUpdate(device)); } }); } diff --git a/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/session/DeviceAwareSessionContext.java b/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/session/DeviceAwareSessionContext.java index 46c7ca67c7..73b6694666 100644 --- a/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/session/DeviceAwareSessionContext.java +++ b/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/session/DeviceAwareSessionContext.java @@ -18,6 +18,7 @@ package org.thingsboard.server.common.transport.session; import lombok.Data; import lombok.Getter; import lombok.Setter; +import lombok.extern.slf4j.Slf4j; import org.thingsboard.server.common.data.Device; import org.thingsboard.server.common.data.DeviceProfile; import org.thingsboard.server.common.data.id.DeviceId; @@ -65,9 +66,14 @@ public abstract class DeviceAwareSessionContext implements SessionContext { this.sessionInfo = TransportProtos.SessionInfoProto.newBuilder().mergeFrom(sessionInfo).setDeviceType(deviceProfile.getName()).build(); } - @Override - public void onDeviceUpdate(Device device) { + public void onDeviceProfileUpdate(Device device) { this.deviceInfo.setDeviceProfileId(device.getDeviceProfileId()); + this.deviceInfo.setDeviceType(device.getType()); + this.sessionInfo = TransportProtos.SessionInfoProto.newBuilder().mergeFrom(sessionInfo) + .setDeviceProfileIdMSB(device.getDeviceProfileId().getId().getMostSignificantBits()) + .setDeviceProfileIdLSB(device.getDeviceProfileId().getId().getLeastSignificantBits()) + .setDeviceType(device.getType()) + .build(); } public boolean isConnected() {