Showing
6 changed files
with
30 additions
and
19 deletions
common/transport/coap/src/main/java/org/thingsboard/server/transport/coap/CoapTransportResource.java
@@ -24,6 +24,7 @@ import org.eclipse.californium.core.network.ExchangeObserver; | @@ -24,6 +24,7 @@ import org.eclipse.californium.core.network.ExchangeObserver; | ||
24 | import org.eclipse.californium.core.server.resources.CoapExchange; | 24 | import org.eclipse.californium.core.server.resources.CoapExchange; |
25 | import org.eclipse.californium.core.server.resources.Resource; | 25 | import org.eclipse.californium.core.server.resources.Resource; |
26 | import org.springframework.util.ReflectionUtils; | 26 | import org.springframework.util.ReflectionUtils; |
27 | +import org.thingsboard.server.common.data.DeviceTransportType; | ||
27 | import org.thingsboard.server.common.data.security.DeviceTokenCredentials; | 28 | import org.thingsboard.server.common.data.security.DeviceTokenCredentials; |
28 | import org.thingsboard.server.common.msg.session.FeatureType; | 29 | import org.thingsboard.server.common.msg.session.FeatureType; |
29 | import org.thingsboard.server.common.msg.session.SessionMsgType; | 30 | import org.thingsboard.server.common.msg.session.SessionMsgType; |
@@ -145,7 +146,7 @@ public class CoapTransportResource extends CoapResource { | @@ -145,7 +146,7 @@ public class CoapTransportResource extends CoapResource { | ||
145 | return; | 146 | return; |
146 | } | 147 | } |
147 | 148 | ||
148 | - transportService.process(TransportProtos.ValidateDeviceTokenRequestMsg.newBuilder().setToken(credentials.get().getCredentialsId()).build(), | 149 | + transportService.process(DeviceTransportType.DEFAULT, TransportProtos.ValidateDeviceTokenRequestMsg.newBuilder().setToken(credentials.get().getCredentialsId()).build(), |
149 | new DeviceAuthCallback(transportContext, exchange, sessionInfo -> { | 150 | new DeviceAuthCallback(transportContext, exchange, sessionInfo -> { |
150 | UUID sessionId = new UUID(sessionInfo.getSessionIdMSB(), sessionInfo.getSessionIdLSB()); | 151 | UUID sessionId = new UUID(sessionInfo.getSessionIdMSB(), sessionInfo.getSessionIdLSB()); |
151 | try { | 152 | try { |
@@ -30,6 +30,7 @@ import org.springframework.web.bind.annotation.RequestMethod; | @@ -30,6 +30,7 @@ import org.springframework.web.bind.annotation.RequestMethod; | ||
30 | import org.springframework.web.bind.annotation.RequestParam; | 30 | import org.springframework.web.bind.annotation.RequestParam; |
31 | import org.springframework.web.bind.annotation.RestController; | 31 | import org.springframework.web.bind.annotation.RestController; |
32 | import org.springframework.web.context.request.async.DeferredResult; | 32 | import org.springframework.web.context.request.async.DeferredResult; |
33 | +import org.thingsboard.server.common.data.DeviceTransportType; | ||
33 | import org.thingsboard.server.common.data.id.DeviceId; | 34 | import org.thingsboard.server.common.data.id.DeviceId; |
34 | import org.thingsboard.server.common.transport.SessionMsgListener; | 35 | import org.thingsboard.server.common.transport.SessionMsgListener; |
35 | import org.thingsboard.server.common.transport.TransportContext; | 36 | import org.thingsboard.server.common.transport.TransportContext; |
@@ -78,7 +79,7 @@ public class DeviceApiController { | @@ -78,7 +79,7 @@ public class DeviceApiController { | ||
78 | @RequestParam(value = "sharedKeys", required = false, defaultValue = "") String sharedKeys, | 79 | @RequestParam(value = "sharedKeys", required = false, defaultValue = "") String sharedKeys, |
79 | HttpServletRequest httpRequest) { | 80 | HttpServletRequest httpRequest) { |
80 | DeferredResult<ResponseEntity> responseWriter = new DeferredResult<>(); | 81 | DeferredResult<ResponseEntity> responseWriter = new DeferredResult<>(); |
81 | - transportContext.getTransportService().process(ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(), | 82 | + transportContext.getTransportService().process(DeviceTransportType.DEFAULT, ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(), |
82 | new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> { | 83 | new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> { |
83 | GetAttributeRequestMsg.Builder request = GetAttributeRequestMsg.newBuilder().setRequestId(0); | 84 | GetAttributeRequestMsg.Builder request = GetAttributeRequestMsg.newBuilder().setRequestId(0); |
84 | List<String> clientKeySet = !StringUtils.isEmpty(clientKeys) ? Arrays.asList(clientKeys.split(",")) : null; | 85 | List<String> clientKeySet = !StringUtils.isEmpty(clientKeys) ? Arrays.asList(clientKeys.split(",")) : null; |
@@ -100,7 +101,7 @@ public class DeviceApiController { | @@ -100,7 +101,7 @@ public class DeviceApiController { | ||
100 | public DeferredResult<ResponseEntity> postDeviceAttributes(@PathVariable("deviceToken") String deviceToken, | 101 | public DeferredResult<ResponseEntity> postDeviceAttributes(@PathVariable("deviceToken") String deviceToken, |
101 | @RequestBody String json, HttpServletRequest request) { | 102 | @RequestBody String json, HttpServletRequest request) { |
102 | DeferredResult<ResponseEntity> responseWriter = new DeferredResult<>(); | 103 | DeferredResult<ResponseEntity> responseWriter = new DeferredResult<>(); |
103 | - transportContext.getTransportService().process(ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(), | 104 | + transportContext.getTransportService().process(DeviceTransportType.DEFAULT, ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(), |
104 | new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> { | 105 | new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> { |
105 | TransportService transportService = transportContext.getTransportService(); | 106 | TransportService transportService = transportContext.getTransportService(); |
106 | transportService.process(sessionInfo, JsonConverter.convertToAttributesProto(new JsonParser().parse(json)), | 107 | transportService.process(sessionInfo, JsonConverter.convertToAttributesProto(new JsonParser().parse(json)), |
@@ -114,7 +115,7 @@ public class DeviceApiController { | @@ -114,7 +115,7 @@ public class DeviceApiController { | ||
114 | public DeferredResult<ResponseEntity> postTelemetry(@PathVariable("deviceToken") String deviceToken, | 115 | public DeferredResult<ResponseEntity> postTelemetry(@PathVariable("deviceToken") String deviceToken, |
115 | @RequestBody String json, HttpServletRequest request) { | 116 | @RequestBody String json, HttpServletRequest request) { |
116 | DeferredResult<ResponseEntity> responseWriter = new DeferredResult<ResponseEntity>(); | 117 | DeferredResult<ResponseEntity> responseWriter = new DeferredResult<ResponseEntity>(); |
117 | - transportContext.getTransportService().process(ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(), | 118 | + transportContext.getTransportService().process(DeviceTransportType.DEFAULT, ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(), |
118 | new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> { | 119 | new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> { |
119 | TransportService transportService = transportContext.getTransportService(); | 120 | TransportService transportService = transportContext.getTransportService(); |
120 | transportService.process(sessionInfo, JsonConverter.convertToTelemetryProto(new JsonParser().parse(json)), | 121 | transportService.process(sessionInfo, JsonConverter.convertToTelemetryProto(new JsonParser().parse(json)), |
@@ -128,7 +129,7 @@ public class DeviceApiController { | @@ -128,7 +129,7 @@ public class DeviceApiController { | ||
128 | public DeferredResult<ResponseEntity> claimDevice(@PathVariable("deviceToken") String deviceToken, | 129 | public DeferredResult<ResponseEntity> claimDevice(@PathVariable("deviceToken") String deviceToken, |
129 | @RequestBody(required = false) String json, HttpServletRequest request) { | 130 | @RequestBody(required = false) String json, HttpServletRequest request) { |
130 | DeferredResult<ResponseEntity> responseWriter = new DeferredResult<>(); | 131 | DeferredResult<ResponseEntity> responseWriter = new DeferredResult<>(); |
131 | - transportContext.getTransportService().process(ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(), | 132 | + transportContext.getTransportService().process(DeviceTransportType.DEFAULT, ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(), |
132 | new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> { | 133 | new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> { |
133 | TransportService transportService = transportContext.getTransportService(); | 134 | TransportService transportService = transportContext.getTransportService(); |
134 | DeviceId deviceId = new DeviceId(new UUID(sessionInfo.getDeviceIdMSB(), sessionInfo.getDeviceIdLSB())); | 135 | DeviceId deviceId = new DeviceId(new UUID(sessionInfo.getDeviceIdMSB(), sessionInfo.getDeviceIdLSB())); |
@@ -143,7 +144,7 @@ public class DeviceApiController { | @@ -143,7 +144,7 @@ public class DeviceApiController { | ||
143 | @RequestParam(value = "timeout", required = false, defaultValue = "0") long timeout, | 144 | @RequestParam(value = "timeout", required = false, defaultValue = "0") long timeout, |
144 | HttpServletRequest httpRequest) { | 145 | HttpServletRequest httpRequest) { |
145 | DeferredResult<ResponseEntity> responseWriter = new DeferredResult<>(); | 146 | DeferredResult<ResponseEntity> responseWriter = new DeferredResult<>(); |
146 | - transportContext.getTransportService().process(ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(), | 147 | + transportContext.getTransportService().process(DeviceTransportType.DEFAULT, ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(), |
147 | new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> { | 148 | new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> { |
148 | TransportService transportService = transportContext.getTransportService(); | 149 | TransportService transportService = transportContext.getTransportService(); |
149 | transportService.registerSyncSession(sessionInfo, new HttpSessionListener(responseWriter), | 150 | transportService.registerSyncSession(sessionInfo, new HttpSessionListener(responseWriter), |
@@ -160,7 +161,7 @@ public class DeviceApiController { | @@ -160,7 +161,7 @@ public class DeviceApiController { | ||
160 | @PathVariable("requestId") Integer requestId, | 161 | @PathVariable("requestId") Integer requestId, |
161 | @RequestBody String json, HttpServletRequest request) { | 162 | @RequestBody String json, HttpServletRequest request) { |
162 | DeferredResult<ResponseEntity> responseWriter = new DeferredResult<ResponseEntity>(); | 163 | DeferredResult<ResponseEntity> responseWriter = new DeferredResult<ResponseEntity>(); |
163 | - transportContext.getTransportService().process(ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(), | 164 | + transportContext.getTransportService().process(DeviceTransportType.DEFAULT, ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(), |
164 | new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> { | 165 | new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> { |
165 | TransportService transportService = transportContext.getTransportService(); | 166 | TransportService transportService = transportContext.getTransportService(); |
166 | transportService.process(sessionInfo, ToDeviceRpcResponseMsg.newBuilder().setRequestId(requestId).setPayload(json).build(), new HttpOkCallback(responseWriter)); | 167 | transportService.process(sessionInfo, ToDeviceRpcResponseMsg.newBuilder().setRequestId(requestId).setPayload(json).build(), new HttpOkCallback(responseWriter)); |
@@ -172,7 +173,7 @@ public class DeviceApiController { | @@ -172,7 +173,7 @@ public class DeviceApiController { | ||
172 | public DeferredResult<ResponseEntity> postRpcRequest(@PathVariable("deviceToken") String deviceToken, | 173 | public DeferredResult<ResponseEntity> postRpcRequest(@PathVariable("deviceToken") String deviceToken, |
173 | @RequestBody String json, HttpServletRequest httpRequest) { | 174 | @RequestBody String json, HttpServletRequest httpRequest) { |
174 | DeferredResult<ResponseEntity> responseWriter = new DeferredResult<ResponseEntity>(); | 175 | DeferredResult<ResponseEntity> responseWriter = new DeferredResult<ResponseEntity>(); |
175 | - transportContext.getTransportService().process(ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(), | 176 | + transportContext.getTransportService().process(DeviceTransportType.DEFAULT, ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(), |
176 | new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> { | 177 | new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> { |
177 | JsonObject request = new JsonParser().parse(json).getAsJsonObject(); | 178 | JsonObject request = new JsonParser().parse(json).getAsJsonObject(); |
178 | TransportService transportService = transportContext.getTransportService(); | 179 | TransportService transportService = transportContext.getTransportService(); |
@@ -190,7 +191,7 @@ public class DeviceApiController { | @@ -190,7 +191,7 @@ public class DeviceApiController { | ||
190 | @RequestParam(value = "timeout", required = false, defaultValue = "0") long timeout, | 191 | @RequestParam(value = "timeout", required = false, defaultValue = "0") long timeout, |
191 | HttpServletRequest httpRequest) { | 192 | HttpServletRequest httpRequest) { |
192 | DeferredResult<ResponseEntity> responseWriter = new DeferredResult<>(); | 193 | DeferredResult<ResponseEntity> responseWriter = new DeferredResult<>(); |
193 | - transportContext.getTransportService().process(ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(), | 194 | + transportContext.getTransportService().process(DeviceTransportType.DEFAULT, ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(), |
194 | new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> { | 195 | new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> { |
195 | TransportService transportService = transportContext.getTransportService(); | 196 | TransportService transportService = transportContext.getTransportService(); |
196 | transportService.registerSyncSession(sessionInfo, new HttpSessionListener(responseWriter), | 197 | transportService.registerSyncSession(sessionInfo, new HttpSessionListener(responseWriter), |
@@ -24,6 +24,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; | @@ -24,6 +24,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; | ||
24 | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; | 24 | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; |
25 | import org.springframework.stereotype.Component; | 25 | import org.springframework.stereotype.Component; |
26 | import org.springframework.util.StringUtils; | 26 | import org.springframework.util.StringUtils; |
27 | +import org.thingsboard.server.common.data.DeviceTransportType; | ||
27 | import org.thingsboard.server.common.msg.EncryptionUtil; | 28 | import org.thingsboard.server.common.msg.EncryptionUtil; |
28 | import org.thingsboard.server.common.transport.TransportService; | 29 | import org.thingsboard.server.common.transport.TransportService; |
29 | import org.thingsboard.server.common.transport.TransportServiceCallback; | 30 | import org.thingsboard.server.common.transport.TransportServiceCallback; |
@@ -157,7 +158,7 @@ public class MqttSslHandlerProvider { | @@ -157,7 +158,7 @@ public class MqttSslHandlerProvider { | ||
157 | String sha3Hash = EncryptionUtil.getSha3Hash(strCert); | 158 | String sha3Hash = EncryptionUtil.getSha3Hash(strCert); |
158 | final String[] credentialsBodyHolder = new String[1]; | 159 | final String[] credentialsBodyHolder = new String[1]; |
159 | CountDownLatch latch = new CountDownLatch(1); | 160 | CountDownLatch latch = new CountDownLatch(1); |
160 | - transportService.process(TransportProtos.ValidateDeviceX509CertRequestMsg.newBuilder().setHash(sha3Hash).build(), | 161 | + transportService.process(DeviceTransportType.MQTT, TransportProtos.ValidateDeviceX509CertRequestMsg.newBuilder().setHash(sha3Hash).build(), |
161 | new TransportServiceCallback<ValidateDeviceCredentialsResponse>() { | 162 | new TransportServiceCallback<ValidateDeviceCredentialsResponse>() { |
162 | @Override | 163 | @Override |
163 | public void onSuccess(ValidateDeviceCredentialsResponse msg) { | 164 | public void onSuccess(ValidateDeviceCredentialsResponse msg) { |
@@ -39,6 +39,7 @@ import io.netty.util.concurrent.Future; | @@ -39,6 +39,7 @@ import io.netty.util.concurrent.Future; | ||
39 | import io.netty.util.concurrent.GenericFutureListener; | 39 | import io.netty.util.concurrent.GenericFutureListener; |
40 | import lombok.extern.slf4j.Slf4j; | 40 | import lombok.extern.slf4j.Slf4j; |
41 | import org.springframework.util.StringUtils; | 41 | import org.springframework.util.StringUtils; |
42 | +import org.thingsboard.server.common.data.DeviceTransportType; | ||
42 | import org.thingsboard.server.common.data.device.profile.MqttTopics; | 43 | import org.thingsboard.server.common.data.device.profile.MqttTopics; |
43 | import org.thingsboard.server.common.msg.EncryptionUtil; | 44 | import org.thingsboard.server.common.msg.EncryptionUtil; |
44 | import org.thingsboard.server.common.transport.SessionMsgListener; | 45 | import org.thingsboard.server.common.transport.SessionMsgListener; |
@@ -366,7 +367,7 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement | @@ -366,7 +367,7 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement | ||
366 | ctx.writeAndFlush(createMqttConnAckMsg(CONNECTION_REFUSED_BAD_USER_NAME_OR_PASSWORD)); | 367 | ctx.writeAndFlush(createMqttConnAckMsg(CONNECTION_REFUSED_BAD_USER_NAME_OR_PASSWORD)); |
367 | ctx.close(); | 368 | ctx.close(); |
368 | } else { | 369 | } else { |
369 | - transportService.process(ValidateDeviceTokenRequestMsg.newBuilder().setToken(userName).build(), | 370 | + transportService.process(DeviceTransportType.MQTT, ValidateDeviceTokenRequestMsg.newBuilder().setToken(userName).build(), |
370 | new TransportServiceCallback<ValidateDeviceCredentialsResponse>() { | 371 | new TransportServiceCallback<ValidateDeviceCredentialsResponse>() { |
371 | @Override | 372 | @Override |
372 | public void onSuccess(ValidateDeviceCredentialsResponse msg) { | 373 | public void onSuccess(ValidateDeviceCredentialsResponse msg) { |
@@ -387,7 +388,7 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement | @@ -387,7 +388,7 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement | ||
387 | try { | 388 | try { |
388 | String strCert = SslUtil.getX509CertificateString(cert); | 389 | String strCert = SslUtil.getX509CertificateString(cert); |
389 | String sha3Hash = EncryptionUtil.getSha3Hash(strCert); | 390 | String sha3Hash = EncryptionUtil.getSha3Hash(strCert); |
390 | - transportService.process(ValidateDeviceX509CertRequestMsg.newBuilder().setHash(sha3Hash).build(), | 391 | + transportService.process(DeviceTransportType.MQTT, ValidateDeviceX509CertRequestMsg.newBuilder().setHash(sha3Hash).build(), |
391 | new TransportServiceCallback<ValidateDeviceCredentialsResponse>() { | 392 | new TransportServiceCallback<ValidateDeviceCredentialsResponse>() { |
392 | @Override | 393 | @Override |
393 | public void onSuccess(ValidateDeviceCredentialsResponse msg) { | 394 | public void onSuccess(ValidateDeviceCredentialsResponse msg) { |
@@ -16,6 +16,7 @@ | @@ -16,6 +16,7 @@ | ||
16 | package org.thingsboard.server.common.transport; | 16 | package org.thingsboard.server.common.transport; |
17 | 17 | ||
18 | import org.thingsboard.server.common.data.DeviceProfile; | 18 | import org.thingsboard.server.common.data.DeviceProfile; |
19 | +import org.thingsboard.server.common.data.DeviceTransportType; | ||
19 | import org.thingsboard.server.common.data.id.DeviceProfileId; | 20 | import org.thingsboard.server.common.data.id.DeviceProfileId; |
20 | import org.thingsboard.server.common.transport.auth.GetOrCreateDeviceFromGatewayResponse; | 21 | import org.thingsboard.server.common.transport.auth.GetOrCreateDeviceFromGatewayResponse; |
21 | import org.thingsboard.server.common.transport.auth.ValidateDeviceCredentialsResponse; | 22 | import org.thingsboard.server.common.transport.auth.ValidateDeviceCredentialsResponse; |
@@ -45,10 +46,10 @@ public interface TransportService { | @@ -45,10 +46,10 @@ public interface TransportService { | ||
45 | 46 | ||
46 | GetTenantRoutingInfoResponseMsg getRoutingInfo(GetTenantRoutingInfoRequestMsg msg); | 47 | GetTenantRoutingInfoResponseMsg getRoutingInfo(GetTenantRoutingInfoRequestMsg msg); |
47 | 48 | ||
48 | - void process(ValidateDeviceTokenRequestMsg msg, | 49 | + void process(DeviceTransportType transportType, ValidateDeviceTokenRequestMsg msg, |
49 | TransportServiceCallback<ValidateDeviceCredentialsResponse> callback); | 50 | TransportServiceCallback<ValidateDeviceCredentialsResponse> callback); |
50 | 51 | ||
51 | - void process(ValidateDeviceX509CertRequestMsg msg, | 52 | + void process(DeviceTransportType transportType, ValidateDeviceX509CertRequestMsg msg, |
52 | TransportServiceCallback<ValidateDeviceCredentialsResponse> callback); | 53 | TransportServiceCallback<ValidateDeviceCredentialsResponse> callback); |
53 | 54 | ||
54 | void process(GetOrCreateDeviceFromGatewayRequestMsg msg, | 55 | void process(GetOrCreateDeviceFromGatewayRequestMsg msg, |
@@ -27,6 +27,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; | @@ -27,6 +27,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; | ||
27 | import org.springframework.stereotype.Service; | 27 | import org.springframework.stereotype.Service; |
28 | import org.thingsboard.common.util.ThingsBoardThreadFactory; | 28 | import org.thingsboard.common.util.ThingsBoardThreadFactory; |
29 | import org.thingsboard.server.common.data.DeviceProfile; | 29 | import org.thingsboard.server.common.data.DeviceProfile; |
30 | +import org.thingsboard.server.common.data.DeviceTransportType; | ||
30 | import org.thingsboard.server.common.data.EntityType; | 31 | import org.thingsboard.server.common.data.EntityType; |
31 | import org.thingsboard.server.common.data.id.DeviceId; | 32 | import org.thingsboard.server.common.data.id.DeviceId; |
32 | import org.thingsboard.server.common.data.id.DeviceProfileId; | 33 | import org.thingsboard.server.common.data.id.DeviceProfileId; |
@@ -252,20 +253,20 @@ public class DefaultTransportService implements TransportService { | @@ -252,20 +253,20 @@ public class DefaultTransportService implements TransportService { | ||
252 | } | 253 | } |
253 | 254 | ||
254 | @Override | 255 | @Override |
255 | - public void process(TransportProtos.ValidateDeviceTokenRequestMsg msg, TransportServiceCallback<ValidateDeviceCredentialsResponse> callback) { | 256 | + public void process(DeviceTransportType transportType, TransportProtos.ValidateDeviceTokenRequestMsg msg, TransportServiceCallback<ValidateDeviceCredentialsResponse> callback) { |
256 | log.trace("Processing msg: {}", msg); | 257 | log.trace("Processing msg: {}", msg); |
257 | TbProtoQueueMsg<TransportApiRequestMsg> protoMsg = new TbProtoQueueMsg<>(UUID.randomUUID(), TransportApiRequestMsg.newBuilder().setValidateTokenRequestMsg(msg).build()); | 258 | TbProtoQueueMsg<TransportApiRequestMsg> protoMsg = new TbProtoQueueMsg<>(UUID.randomUUID(), TransportApiRequestMsg.newBuilder().setValidateTokenRequestMsg(msg).build()); |
258 | - doProcess(protoMsg, callback); | 259 | + doProcess(transportType, protoMsg, callback); |
259 | } | 260 | } |
260 | 261 | ||
261 | @Override | 262 | @Override |
262 | - public void process(TransportProtos.ValidateDeviceX509CertRequestMsg msg, TransportServiceCallback<ValidateDeviceCredentialsResponse> callback) { | 263 | + public void process(DeviceTransportType transportType, TransportProtos.ValidateDeviceX509CertRequestMsg msg, TransportServiceCallback<ValidateDeviceCredentialsResponse> callback) { |
263 | log.trace("Processing msg: {}", msg); | 264 | log.trace("Processing msg: {}", msg); |
264 | TbProtoQueueMsg<TransportApiRequestMsg> protoMsg = new TbProtoQueueMsg<>(UUID.randomUUID(), TransportApiRequestMsg.newBuilder().setValidateX509CertRequestMsg(msg).build()); | 265 | TbProtoQueueMsg<TransportApiRequestMsg> protoMsg = new TbProtoQueueMsg<>(UUID.randomUUID(), TransportApiRequestMsg.newBuilder().setValidateX509CertRequestMsg(msg).build()); |
265 | - doProcess(protoMsg, callback); | 266 | + doProcess(transportType, protoMsg, callback); |
266 | } | 267 | } |
267 | 268 | ||
268 | - private void doProcess(TbProtoQueueMsg<TransportApiRequestMsg> protoMsg, TransportServiceCallback<ValidateDeviceCredentialsResponse> callback) { | 269 | + private void doProcess(DeviceTransportType transportType, TbProtoQueueMsg<TransportApiRequestMsg> protoMsg, TransportServiceCallback<ValidateDeviceCredentialsResponse> callback) { |
269 | ListenableFuture<ValidateDeviceCredentialsResponse> response = Futures.transform(transportApiRequestTemplate.send(protoMsg), tmp -> { | 270 | ListenableFuture<ValidateDeviceCredentialsResponse> response = Futures.transform(transportApiRequestTemplate.send(protoMsg), tmp -> { |
270 | TransportProtos.ValidateDeviceCredentialsResponseMsg msg = tmp.getValue().getValidateTokenResponseMsg(); | 271 | TransportProtos.ValidateDeviceCredentialsResponseMsg msg = tmp.getValue().getValidateTokenResponseMsg(); |
271 | ValidateDeviceCredentialsResponse.ValidateDeviceCredentialsResponseBuilder result = ValidateDeviceCredentialsResponse.builder(); | 272 | ValidateDeviceCredentialsResponse.ValidateDeviceCredentialsResponseBuilder result = ValidateDeviceCredentialsResponse.builder(); |
@@ -283,6 +284,11 @@ public class DefaultTransportService implements TransportService { | @@ -283,6 +284,11 @@ public class DefaultTransportService implements TransportService { | ||
283 | deviceProfiles.put(tdi.getDeviceProfileId(), profile); | 284 | deviceProfiles.put(tdi.getDeviceProfileId(), profile); |
284 | } | 285 | } |
285 | } | 286 | } |
287 | + if (transportType != DeviceTransportType.DEFAULT | ||
288 | + && profile != null && profile.getTransportType() != DeviceTransportType.DEFAULT && profile.getTransportType() != transportType) { | ||
289 | + log.debug("[{}] Device profile [{}] has different transport type: {}, expected: {}", tdi.getDeviceId(), tdi.getDeviceProfileId(), profile.getTransportType(), transportType); | ||
290 | + throw new IllegalStateException("Device profile has different transport type: " + profile.getTransportType() + ". Expected: " + transportType); | ||
291 | + } | ||
286 | result.deviceProfile(profile); | 292 | result.deviceProfile(profile); |
287 | } | 293 | } |
288 | } | 294 | } |