Commit 52ef95ac1be6988d5be7ef8e93fd98ff7911d53e

Authored by Andrew Shvayka
1 parent cc5b18f3

Refactoring of MQTT Transport and removing data structures

Showing 71 changed files with 136 additions and 1950 deletions
@@ -42,12 +42,8 @@ import org.thingsboard.server.common.msg.TbMsgDataType; @@ -42,12 +42,8 @@ import org.thingsboard.server.common.msg.TbMsgDataType;
42 import org.thingsboard.server.common.msg.TbMsgMetaData; 42 import org.thingsboard.server.common.msg.TbMsgMetaData;
43 import org.thingsboard.server.common.msg.cluster.ClusterEventMsg; 43 import org.thingsboard.server.common.msg.cluster.ClusterEventMsg;
44 import org.thingsboard.server.common.msg.cluster.ServerAddress; 44 import org.thingsboard.server.common.msg.cluster.ServerAddress;
45 -import org.thingsboard.server.common.msg.core.ActorSystemToDeviceSessionActorMsg;  
46 -import org.thingsboard.server.common.msg.core.RuleEngineError;  
47 -import org.thingsboard.server.common.msg.core.RuleEngineErrorMsg;  
48 import org.thingsboard.server.common.msg.rpc.ToDeviceRpcRequest; 45 import org.thingsboard.server.common.msg.rpc.ToDeviceRpcRequest;
49 import org.thingsboard.server.common.msg.session.SessionMsgType; 46 import org.thingsboard.server.common.msg.session.SessionMsgType;
50 -import org.thingsboard.server.common.msg.session.ToDeviceMsg;  
51 import org.thingsboard.server.common.msg.timeout.DeviceActorClientSideRpcTimeoutMsg; 47 import org.thingsboard.server.common.msg.timeout.DeviceActorClientSideRpcTimeoutMsg;
52 import org.thingsboard.server.common.msg.timeout.DeviceActorServerSideRpcTimeoutMsg; 48 import org.thingsboard.server.common.msg.timeout.DeviceActorServerSideRpcTimeoutMsg;
53 import org.thingsboard.server.gen.transport.TransportProtos; 49 import org.thingsboard.server.gen.transport.TransportProtos;
@@ -481,17 +477,6 @@ public class DeviceActorMessageProcessor extends AbstractContextAwareMsgProcesso @@ -481,17 +477,6 @@ public class DeviceActorMessageProcessor extends AbstractContextAwareMsgProcesso
481 } 477 }
482 } 478 }
483 479
484 - private void sendMsgToSessionActor(ActorSystemToDeviceSessionActorMsg response, Optional<ServerAddress> sessionAddress) {  
485 - if (sessionAddress.isPresent()) {  
486 - ServerAddress address = sessionAddress.get();  
487 - logger.debug("{} Forwarding msg: {}", address, response);  
488 - systemContext.getRpcService().tell(systemContext.getEncodingService()  
489 - .convertToProtoDataMessage(sessionAddress.get(), response));  
490 - } else {  
491 -// systemContext.getSessionManagerActor().tell(response, ActorRef.noSender());  
492 - }  
493 - }  
494 -  
495 void processCredentialsUpdate() { 480 void processCredentialsUpdate() {
496 sessions.forEach(this::closeSession); 481 sessions.forEach(this::closeSession);
497 attributeSubscriptions.clear(); 482 attributeSubscriptions.clear();
@@ -37,7 +37,6 @@ import org.thingsboard.server.common.data.id.EntityId; @@ -37,7 +37,6 @@ import org.thingsboard.server.common.data.id.EntityId;
37 import org.thingsboard.server.common.data.id.TenantId; 37 import org.thingsboard.server.common.data.id.TenantId;
38 import org.thingsboard.server.common.data.plugin.ComponentLifecycleEvent; 38 import org.thingsboard.server.common.data.plugin.ComponentLifecycleEvent;
39 import org.thingsboard.server.common.msg.TbActorMsg; 39 import org.thingsboard.server.common.msg.TbActorMsg;
40 -import org.thingsboard.server.common.msg.aware.SessionAwareMsg;  
41 import org.thingsboard.server.common.msg.cluster.ClusterEventMsg; 40 import org.thingsboard.server.common.msg.cluster.ClusterEventMsg;
42 import org.thingsboard.server.common.msg.cluster.SendToClusterMsg; 41 import org.thingsboard.server.common.msg.cluster.SendToClusterMsg;
43 import org.thingsboard.server.common.msg.cluster.ServerAddress; 42 import org.thingsboard.server.common.msg.cluster.ServerAddress;
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.actors.shared;  
17 -  
18 -import lombok.Data;  
19 -import org.thingsboard.server.common.msg.MsgType;  
20 -import org.thingsboard.server.common.msg.TbActorMsg;  
21 -  
22 -import java.io.Serializable;  
23 -  
24 -@Data  
25 -public class SessionTimeoutMsg implements Serializable, TbActorMsg {  
26 -  
27 - private static final long serialVersionUID = 1L;  
28 -  
29 - private final SessionId sessionId;  
30 -  
31 - @Override  
32 - public MsgType getMsgType() {  
33 - return MsgType.SESSION_TIMEOUT_MSG;  
34 - }  
35 -}  
@@ -59,7 +59,6 @@ import org.thingsboard.server.common.data.kv.ReadTsKvQuery; @@ -59,7 +59,6 @@ import org.thingsboard.server.common.data.kv.ReadTsKvQuery;
59 import org.thingsboard.server.common.data.kv.StringDataEntry; 59 import org.thingsboard.server.common.data.kv.StringDataEntry;
60 import org.thingsboard.server.common.data.kv.TsKvEntry; 60 import org.thingsboard.server.common.data.kv.TsKvEntry;
61 import org.thingsboard.server.common.msg.cluster.SendToClusterMsg; 61 import org.thingsboard.server.common.msg.cluster.SendToClusterMsg;
62 -import org.thingsboard.server.common.msg.core.TelemetryUploadRequest;  
63 import org.thingsboard.server.common.transport.adaptor.JsonConverter; 62 import org.thingsboard.server.common.transport.adaptor.JsonConverter;
64 import org.thingsboard.server.dao.attributes.AttributesService; 63 import org.thingsboard.server.dao.attributes.AttributesService;
65 import org.thingsboard.server.dao.timeseries.TimeseriesService; 64 import org.thingsboard.server.dao.timeseries.TimeseriesService;
@@ -352,7 +351,7 @@ public class TelemetryController extends BaseController { @@ -352,7 +351,7 @@ public class TelemetryController extends BaseController {
352 } 351 }
353 352
354 private DeferredResult<ResponseEntity> saveTelemetry(EntityId entityIdSrc, String requestBody, long ttl) throws ThingsboardException { 353 private DeferredResult<ResponseEntity> saveTelemetry(EntityId entityIdSrc, String requestBody, long ttl) throws ThingsboardException {
355 - TelemetryUploadRequest telemetryRequest; 354 + Map<Long, List<KvEntry>> telemetryRequest;
356 JsonElement telemetryJson; 355 JsonElement telemetryJson;
357 try { 356 try {
358 telemetryJson = new JsonParser().parse(requestBody); 357 telemetryJson = new JsonParser().parse(requestBody);
@@ -360,12 +359,12 @@ public class TelemetryController extends BaseController { @@ -360,12 +359,12 @@ public class TelemetryController extends BaseController {
360 return getImmediateDeferredResult("Unable to parse timeseries payload: Invalid JSON body!", HttpStatus.BAD_REQUEST); 359 return getImmediateDeferredResult("Unable to parse timeseries payload: Invalid JSON body!", HttpStatus.BAD_REQUEST);
361 } 360 }
362 try { 361 try {
363 - telemetryRequest = JsonConverter.convertToTelemetry(telemetryJson); 362 + telemetryRequest = JsonConverter.convertToTelemetry(telemetryJson, System.currentTimeMillis());
364 } catch (Exception e) { 363 } catch (Exception e) {
365 return getImmediateDeferredResult("Unable to parse timeseries payload. Invalid JSON body: " + e.getMessage(), HttpStatus.BAD_REQUEST); 364 return getImmediateDeferredResult("Unable to parse timeseries payload. Invalid JSON body: " + e.getMessage(), HttpStatus.BAD_REQUEST);
366 } 365 }
367 List<TsKvEntry> entries = new ArrayList<>(); 366 List<TsKvEntry> entries = new ArrayList<>();
368 - for (Map.Entry<Long, List<KvEntry>> entry : telemetryRequest.getData().entrySet()) { 367 + for (Map.Entry<Long, List<KvEntry>> entry : telemetryRequest.entrySet()) {
369 for (KvEntry kv : entry.getValue()) { 368 for (KvEntry kv : entry.getValue()) {
370 entries.add(new BasicTsKvEntry(entry.getKey(), kv)); 369 entries.add(new BasicTsKvEntry(entry.getKey(), kv));
371 } 370 }
@@ -22,11 +22,8 @@ import org.thingsboard.rule.engine.api.msg.ToDeviceActorNotificationMsg; @@ -22,11 +22,8 @@ import org.thingsboard.rule.engine.api.msg.ToDeviceActorNotificationMsg;
22 import org.thingsboard.server.common.data.id.DeviceId; 22 import org.thingsboard.server.common.data.id.DeviceId;
23 import org.thingsboard.server.common.data.id.TenantId; 23 import org.thingsboard.server.common.data.id.TenantId;
24 import org.thingsboard.server.common.msg.MsgType; 24 import org.thingsboard.server.common.msg.MsgType;
25 -import org.thingsboard.server.common.msg.cluster.ServerAddress;  
26 import org.thingsboard.server.common.msg.core.ToServerRpcResponseMsg; 25 import org.thingsboard.server.common.msg.core.ToServerRpcResponseMsg;
27 26
28 -import java.util.Optional;  
29 -  
30 /** 27 /**
31 * Created by ashvayka on 16.04.18. 28 * Created by ashvayka on 16.04.18.
32 */ 29 */
1 /** 1 /**
2 * Copyright © 2016-2018 The Thingsboard Authors 2 * Copyright © 2016-2018 The Thingsboard Authors
3 - * <p> 3 + *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at 6 * You may obtain a copy of the License at
7 - * <p>  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - * <p> 7 + *
  8 + * http://www.apache.org/licenses/LICENSE-2.0
  9 + *
10 * Unless required by applicable law or agreed to in writing, software 10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS, 11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.aware;  
17 -  
18 -public interface SessionAwareMsg {  
19 -  
20 - SessionId getSessionId();  
21 -  
22 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -import org.thingsboard.server.common.msg.TbActorMsg;  
19 -import org.thingsboard.server.common.msg.aware.SessionAwareMsg;  
20 -import org.thingsboard.server.common.msg.session.ToDeviceMsg;  
21 -  
22 -import java.io.Serializable;  
23 -  
24 -/**  
25 - * @author Andrew Shvayka  
26 - */  
27 -public interface ActorSystemToDeviceSessionActorMsg extends SessionAwareMsg, Serializable, TbActorMsg {  
28 -  
29 - ToDeviceMsg getMsg();  
30 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -import org.thingsboard.server.common.msg.session.FromDeviceMsg;  
19 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
20 -  
21 -/**  
22 - * @author Andrew Shvayka  
23 - */  
24 -public class AttributesSubscribeMsg implements FromDeviceMsg {  
25 - @Override  
26 - public SessionMsgType getMsgType() {  
27 - return SessionMsgType.SUBSCRIBE_ATTRIBUTES_REQUEST;  
28 - }  
29 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -import org.thingsboard.server.common.msg.session.FromDeviceMsg;  
19 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
20 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
21 -  
22 -/**  
23 - * @author Andrew Shvayka  
24 - */  
25 -public class AttributesUnsubscribeMsg implements FromDeviceMsg {  
26 - @Override  
27 - public SessionMsgType getMsgType() {  
28 - return SessionMsgType.UNSUBSCRIBE_ATTRIBUTES_REQUEST;  
29 - }  
30 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -import lombok.ToString;  
19 -import org.thingsboard.server.common.msg.kv.AttributesKVMsg;  
20 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
21 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
22 -import org.thingsboard.server.common.msg.session.ToDeviceMsg;  
23 -  
24 -@ToString  
25 -public class AttributesUpdateNotification implements ToDeviceMsg {  
26 -  
27 - private static final long serialVersionUID = 1L;  
28 -  
29 - private AttributesKVMsg data;  
30 -  
31 - public AttributesUpdateNotification(AttributesKVMsg data) {  
32 - this.data = data;  
33 - }  
34 -  
35 - @Override  
36 - public boolean isSuccess() {  
37 - return true;  
38 - }  
39 -  
40 - public SessionMsgType getSessionMsgType() {  
41 - return SessionMsgType.ATTRIBUTES_UPDATE_NOTIFICATION;  
42 - }  
43 -  
44 - public AttributesKVMsg getData() {  
45 - return data;  
46 - }  
47 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -import java.util.Set;  
19 -  
20 -import org.thingsboard.server.common.data.kv.AttributeKvEntry;  
21 -import org.thingsboard.server.common.msg.session.FromDeviceMsg;  
22 -import org.thingsboard.server.common.msg.session.FromDeviceRequestMsg;  
23 -  
24 -public interface AttributesUpdateRequest extends FromDeviceRequestMsg {  
25 -  
26 - Set<AttributeKvEntry> getAttributes();  
27 -  
28 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -import java.util.Collection;  
19 -import java.util.LinkedHashSet;  
20 -import java.util.Set;  
21 -  
22 -import org.thingsboard.server.common.data.kv.AttributeKvEntry;  
23 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
24 -  
25 -public class BasicAttributesUpdateRequest extends BasicRequest implements AttributesUpdateRequest {  
26 -  
27 - private static final long serialVersionUID = 1L;  
28 -  
29 - private final Set<AttributeKvEntry> data;  
30 -  
31 - public BasicAttributesUpdateRequest() {  
32 - this(DEFAULT_REQUEST_ID);  
33 - }  
34 -  
35 - public BasicAttributesUpdateRequest(Integer requestId) {  
36 - super(requestId);  
37 - this.data = new LinkedHashSet<>();  
38 - }  
39 -  
40 - public void add(AttributeKvEntry entry) {  
41 - this.data.add(entry);  
42 - }  
43 -  
44 - public void add(Collection<AttributeKvEntry> entries) {  
45 - this.data.addAll(entries);  
46 - }  
47 -  
48 - @Override  
49 - public SessionMsgType getMsgType() {  
50 - return SessionMsgType.POST_ATTRIBUTES_REQUEST;  
51 - }  
52 -  
53 - @Override  
54 - public Set<AttributeKvEntry> getAttributes() {  
55 - return data;  
56 - }  
57 -  
58 - @Override  
59 - public String toString() {  
60 - return "BasicAttributesUpdateRequest [data=" + data + "]";  
61 - }  
62 -  
63 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
19 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
20 -  
21 -public class BasicCommandAckResponse extends BasicResponseMsg<Integer> implements StatusCodeResponse {  
22 -  
23 - private static final long serialVersionUID = 1L;  
24 -  
25 - public static BasicCommandAckResponse onSuccess(SessionMsgType requestMsgType, Integer requestId) {  
26 - return BasicCommandAckResponse.onSuccess(requestMsgType, requestId, 200);  
27 - }  
28 -  
29 - public static BasicCommandAckResponse onSuccess(SessionMsgType requestMsgType, Integer requestId, Integer code) {  
30 - return new BasicCommandAckResponse(requestMsgType, requestId, true, null, code);  
31 - }  
32 -  
33 - public static BasicCommandAckResponse onError(SessionMsgType requestMsgType, Integer requestId, Exception error) {  
34 - return new BasicCommandAckResponse(requestMsgType, requestId, false, error, null);  
35 - }  
36 -  
37 - private BasicCommandAckResponse(SessionMsgType requestMsgType, Integer requestId, boolean success, Exception error, Integer code) {  
38 - super(requestMsgType, requestId, SessionMsgType.TO_DEVICE_RPC_RESPONSE_ACK, success, error, code);  
39 - }  
40 -  
41 - @Override  
42 - public String toString() {  
43 - return "BasicStatusCodeResponse []";  
44 - }  
45 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -import lombok.ToString;  
19 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
20 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
21 -  
22 -import java.util.Collections;  
23 -import java.util.Optional;  
24 -import java.util.Set;  
25 -  
26 -@ToString  
27 -public class BasicGetAttributesRequest extends BasicRequest implements GetAttributesRequest {  
28 -  
29 - private static final long serialVersionUID = 1L;  
30 -  
31 - private final Set<String> clientKeys;  
32 - private final Set<String> sharedKeys;  
33 -  
34 - public BasicGetAttributesRequest(Integer requestId) {  
35 - this(requestId, Collections.emptySet(), Collections.emptySet());  
36 - }  
37 -  
38 - public BasicGetAttributesRequest(Integer requestId, Set<String> clientKeys, Set<String> sharedKeys) {  
39 - super(requestId);  
40 - this.clientKeys = clientKeys;  
41 - this.sharedKeys = sharedKeys;  
42 - }  
43 -  
44 - @Override  
45 - public SessionMsgType getMsgType() {  
46 - return SessionMsgType.GET_ATTRIBUTES_REQUEST;  
47 - }  
48 -  
49 - @Override  
50 - public Optional<Set<String>> getClientAttributeNames() {  
51 - return Optional.ofNullable(clientKeys);  
52 - }  
53 -  
54 - @Override  
55 - public Optional<Set<String>> getSharedAttributeNames() {  
56 - return Optional.ofNullable(sharedKeys);  
57 - }  
58 -  
59 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -import lombok.ToString;  
19 -import org.thingsboard.server.common.msg.kv.AttributesKVMsg;  
20 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
21 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
22 -  
23 -@ToString  
24 -public class BasicGetAttributesResponse extends BasicResponseMsg<AttributesKVMsg> implements GetAttributesResponse {  
25 -  
26 - private static final long serialVersionUID = 1L;  
27 -  
28 - public static BasicGetAttributesResponse onSuccess(SessionMsgType requestMsgType, int requestId, AttributesKVMsg code) {  
29 - return new BasicGetAttributesResponse(requestMsgType, requestId, true, null, code);  
30 - }  
31 -  
32 - public static BasicGetAttributesResponse onError(SessionMsgType requestMsgType, int requestId, Exception error) {  
33 - return new BasicGetAttributesResponse(requestMsgType, requestId, false, error, null);  
34 - }  
35 -  
36 - private BasicGetAttributesResponse(SessionMsgType requestMsgType, int requestId, boolean success, Exception error, AttributesKVMsg code) {  
37 - super(requestMsgType, requestId, SessionMsgType.GET_ATTRIBUTES_RESPONSE, success, error, code);  
38 - }  
39 -  
40 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -import java.io.Serializable;  
19 -  
20 -/**  
21 - * @author Andrew Shvayka  
22 - */  
23 -public class BasicRequest implements Serializable {  
24 -  
25 - public static final Integer DEFAULT_REQUEST_ID = 0;  
26 -  
27 - private final Integer requestId;  
28 -  
29 - public BasicRequest(Integer requestId) {  
30 - this.requestId = requestId;  
31 - }  
32 -  
33 - public Integer getRequestId() {  
34 - return requestId;  
35 - }  
36 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -import java.io.Serializable;  
19 -import java.util.Optional;  
20 -  
21 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
22 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
23 -  
24 -  
25 -public class BasicResponseMsg<T extends Serializable> implements ResponseMsg<T> {  
26 -  
27 - private static final long serialVersionUID = 1L;  
28 -  
29 - private final SessionMsgType requestMsgType;  
30 - private final Integer requestId;  
31 - private final SessionMsgType sessionMsgType;  
32 - private final boolean success;  
33 - private final T data;  
34 - private final Exception error;  
35 -  
36 - protected BasicResponseMsg(SessionMsgType requestMsgType, Integer requestId, SessionMsgType sessionMsgType, boolean success, Exception error, T data) {  
37 - super();  
38 - this.requestMsgType = requestMsgType;  
39 - this.requestId = requestId;  
40 - this.sessionMsgType = sessionMsgType;  
41 - this.success = success;  
42 - this.error = error;  
43 - this.data = data;  
44 - }  
45 -  
46 - @Override  
47 - public SessionMsgType getRequestMsgType() {  
48 - return requestMsgType;  
49 - }  
50 -  
51 - @Override  
52 - public Integer getRequestId() {  
53 - return requestId;  
54 - }  
55 -  
56 - @Override  
57 - public boolean isSuccess() {  
58 - return success;  
59 - }  
60 -  
61 - @Override  
62 - public Optional<Exception> getError() {  
63 - return Optional.ofNullable(error);  
64 - }  
65 -  
66 - @Override  
67 - public Optional<T> getData() {  
68 - return Optional.ofNullable(data);  
69 - }  
70 -  
71 - @Override  
72 - public String toString() {  
73 - return "BasicResponseMsg [success=" + success + ", data=" + data + ", error=" + error + "]";  
74 - }  
75 -  
76 - public SessionMsgType getSessionMsgType() {  
77 - return sessionMsgType;  
78 - }  
79 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -import lombok.ToString;  
19 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
20 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
21 -  
22 -@ToString  
23 -public class BasicStatusCodeResponse extends BasicResponseMsg<Integer> implements StatusCodeResponse {  
24 -  
25 - private static final long serialVersionUID = 1L;  
26 -  
27 - public static BasicStatusCodeResponse onSuccess(SessionMsgType requestMsgType, Integer requestId) {  
28 - return BasicStatusCodeResponse.onSuccess(requestMsgType, requestId, 0);  
29 - }  
30 -  
31 - public static BasicStatusCodeResponse onSuccess(SessionMsgType requestMsgType, Integer requestId, Integer code) {  
32 - return new BasicStatusCodeResponse(requestMsgType, requestId, true, null, code);  
33 - }  
34 -  
35 - public static BasicStatusCodeResponse onError(SessionMsgType requestMsgType, Integer requestId, Exception error) {  
36 - return new BasicStatusCodeResponse(requestMsgType, requestId, false, error, null);  
37 - }  
38 -  
39 - private BasicStatusCodeResponse(SessionMsgType requestMsgType, Integer requestId, boolean success, Exception error, Integer code) {  
40 - super(requestMsgType, requestId, SessionMsgType.STATUS_CODE_RESPONSE, success, error, code);  
41 - }  
42 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -import java.util.ArrayList;  
19 -import java.util.HashMap;  
20 -import java.util.List;  
21 -import java.util.Map;  
22 -  
23 -import org.thingsboard.server.common.data.kv.KvEntry;  
24 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
25 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
26 -  
27 -public class BasicTelemetryUploadRequest extends BasicRequest implements TelemetryUploadRequest {  
28 -  
29 - private static final long serialVersionUID = 1L;  
30 -  
31 - private final Map<Long, List<KvEntry>> data;  
32 -  
33 - public BasicTelemetryUploadRequest() {  
34 - this(DEFAULT_REQUEST_ID);  
35 - }  
36 -  
37 - public BasicTelemetryUploadRequest(Integer requestId) {  
38 - super(requestId);  
39 - this.data = new HashMap<>();  
40 - }  
41 -  
42 - public void add(long ts, KvEntry entry) {  
43 - List<KvEntry> tsEntries = data.get(ts);  
44 - if (tsEntries == null) {  
45 - tsEntries = new ArrayList<>();  
46 - data.put(ts, tsEntries);  
47 - }  
48 - tsEntries.add(entry);  
49 - }  
50 -  
51 - @Override  
52 - public SessionMsgType getMsgType() {  
53 - return SessionMsgType.POST_TELEMETRY_REQUEST;  
54 - }  
55 -  
56 - @Override  
57 - public Map<Long, List<KvEntry>> getData() {  
58 - return data;  
59 - }  
60 -  
61 - @Override  
62 - public String toString() {  
63 - return "BasicTelemetryUploadRequest [data=" + data + "]";  
64 - }  
65 -  
66 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -import java.util.Optional;  
19 -import java.util.Set;  
20 -  
21 -import org.thingsboard.server.common.msg.session.FromDeviceMsg;  
22 -import org.thingsboard.server.common.msg.session.FromDeviceRequestMsg;  
23 -  
24 -public interface GetAttributesRequest extends FromDeviceRequestMsg {  
25 -  
26 - Optional<Set<String>> getClientAttributeNames();  
27 - Optional<Set<String>> getSharedAttributeNames();  
28 -  
29 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -import org.thingsboard.server.common.msg.kv.AttributesKVMsg;  
19 -  
20 -public interface GetAttributesResponse extends ResponseMsg<AttributesKVMsg> {  
21 -  
22 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -import java.io.Serializable;  
19 -import java.util.Optional;  
20 -  
21 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
22 -import org.thingsboard.server.common.msg.session.ToDeviceMsg;  
23 -  
24 -public interface ResponseMsg<T extends Serializable> extends ToDeviceMsg {  
25 -  
26 - SessionMsgType getRequestMsgType();  
27 -  
28 - Integer getRequestId();  
29 -  
30 - Optional<Exception> getError();  
31 -  
32 - Optional<T> getData();  
33 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -import org.thingsboard.server.common.msg.session.FromDeviceMsg;  
19 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
20 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
21 -  
22 -/**  
23 - * @author Andrew Shvayka  
24 - */  
25 -public class RpcSubscribeMsg implements FromDeviceMsg {  
26 - @Override  
27 - public SessionMsgType getMsgType() {  
28 - return SessionMsgType.SUBSCRIBE_RPC_COMMANDS_REQUEST;  
29 - }  
30 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -import org.thingsboard.server.common.msg.session.FromDeviceMsg;  
19 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
20 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
21 -  
22 -/**  
23 - * @author Andrew Shvayka  
24 - */  
25 -public class RpcUnsubscribeMsg implements FromDeviceMsg {  
26 - @Override  
27 - public SessionMsgType getMsgType() {  
28 - return SessionMsgType.UNSUBSCRIBE_RPC_COMMANDS_REQUEST;  
29 - }  
30 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -/**  
19 - * @author Andrew Shvayka  
20 - */  
21 -  
22 -public enum RuleEngineError {  
23 -  
24 - QUEUE_PUT_TIMEOUT(true), SERVER_ERROR(true), TIMEOUT;  
25 -  
26 - private final boolean critical;  
27 -  
28 - RuleEngineError() {  
29 - this(false);  
30 - }  
31 -  
32 - RuleEngineError(boolean critical) {  
33 - this.critical = critical;  
34 - }  
35 -  
36 - public boolean isCritical() {  
37 - return critical;  
38 - }  
39 -  
40 - public int getPriority() {  
41 - return ordinal();  
42 - }  
43 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -import lombok.Data;  
19 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
20 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
21 -import org.thingsboard.server.common.msg.session.ToDeviceMsg;  
22 -  
23 -/**  
24 - * @author Andrew Shvayka  
25 - */  
26 -@Data  
27 -public class RuleEngineErrorMsg implements ToDeviceMsg {  
28 -  
29 - private final SessionMsgType inSessionMsgType;  
30 - private final RuleEngineError error;  
31 -  
32 - @Override  
33 - public boolean isSuccess() {  
34 - return false;  
35 - }  
36 -  
37 - public SessionMsgType getSessionMsgType() {  
38 - return SessionMsgType.RULE_ENGINE_ERROR;  
39 - }  
40 -  
41 - public String getErrorMsg() {  
42 - switch (error) {  
43 - case QUEUE_PUT_TIMEOUT:  
44 - return "Timeout during persistence of the message to the queue!";  
45 - case SERVER_ERROR:  
46 - return "Error during processing of message by the server!";  
47 - case TIMEOUT:  
48 - return "Timeout during processing of message by the server!";  
49 - default:  
50 - throw new RuntimeException("Error " + error + " is not supported!");  
51 - }  
52 - }  
53 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -import org.thingsboard.server.common.msg.session.FromDeviceMsg;  
19 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
20 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
21 -  
22 -/**  
23 - * @author Andrew Shvayka  
24 - */  
25 -public class SessionCloseMsg implements FromDeviceMsg {  
26 - @Override  
27 - public SessionMsgType getMsgType() {  
28 - return SessionMsgType.SESSION_CLOSE;  
29 - }  
30 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -import lombok.ToString;  
19 -import org.thingsboard.server.common.msg.kv.AttributesKVMsg;  
20 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
21 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
22 -import org.thingsboard.server.common.msg.session.ToDeviceMsg;  
23 -  
24 -@ToString  
25 -public class SessionCloseNotification implements ToDeviceMsg {  
26 -  
27 - private static final long serialVersionUID = 1L;  
28 -  
29 - @Override  
30 - public boolean isSuccess() {  
31 - return true;  
32 - }  
33 -  
34 - public SessionMsgType getSessionMsgType() {  
35 - return SessionMsgType.SESSION_CLOSE;  
36 - }  
37 -  
38 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -import lombok.Data;  
19 -import org.thingsboard.server.common.msg.session.FromDeviceMsg;  
20 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
21 -  
22 -/**  
23 - * @author Andrew Shvayka  
24 - */  
25 -@Data  
26 -public class SessionOpenMsg implements FromDeviceMsg {  
27 -  
28 - @Override  
29 - public SessionMsgType getMsgType() {  
30 - return SessionMsgType.SESSION_OPEN;  
31 - }  
32 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -public interface StatusCodeResponse extends ResponseMsg<Integer>{  
19 -  
20 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -import java.util.List;  
19 -import java.util.Map;  
20 -  
21 -import org.thingsboard.server.common.data.kv.KvEntry;  
22 -import org.thingsboard.server.common.msg.session.FromDeviceMsg;  
23 -import org.thingsboard.server.common.msg.session.FromDeviceRequestMsg;  
24 -  
25 -public interface TelemetryUploadRequest extends FromDeviceRequestMsg {  
26 -  
27 - Map<Long, List<KvEntry>> getData();  
28 -  
29 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -import lombok.Data;  
19 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
20 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
21 -import org.thingsboard.server.common.msg.session.ToDeviceMsg;  
22 -  
23 -/**  
24 - * @author Andrew Shvayka  
25 - */  
26 -@Data  
27 -public class ToDeviceRpcRequestMsg implements ToDeviceMsg {  
28 -  
29 - private final int requestId;  
30 - private final String method;  
31 - private final String params;  
32 -  
33 - public SessionMsgType getSessionMsgType() {  
34 - return SessionMsgType.TO_DEVICE_RPC_REQUEST;  
35 - }  
36 -  
37 - @Override  
38 - public boolean isSuccess() {  
39 - return true;  
40 - }  
41 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -import lombok.Data;  
19 -import org.thingsboard.server.common.msg.session.FromDeviceMsg;  
20 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
21 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
22 -  
23 -/**  
24 - * @author Andrew Shvayka  
25 - */  
26 -@Data  
27 -public class ToDeviceRpcResponseMsg implements FromDeviceMsg {  
28 -  
29 - private final int requestId;  
30 - private final String data;  
31 -  
32 - @Override  
33 - public SessionMsgType getMsgType() {  
34 - return SessionMsgType.TO_DEVICE_RPC_RESPONSE;  
35 - }  
36 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.core;  
17 -  
18 -import lombok.Data;  
19 -import org.thingsboard.server.common.msg.session.FromDeviceRequestMsg;  
20 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
21 -  
22 -/**  
23 - * @author Andrew Shvayka  
24 - */  
25 -@Data  
26 -public class ToServerRpcRequestMsg implements FromDeviceRequestMsg {  
27 -  
28 - private final Integer requestId;  
29 - private final String method;  
30 - private final String params;  
31 -  
32 - @Override  
33 - public SessionMsgType getMsgType() {  
34 - return SessionMsgType.TO_SERVER_RPC_REQUEST;  
35 - }  
36 -}  
@@ -16,25 +16,16 @@ @@ -16,25 +16,16 @@
16 package org.thingsboard.server.common.msg.core; 16 package org.thingsboard.server.common.msg.core;
17 17
18 import lombok.Data; 18 import lombok.Data;
19 -import org.thingsboard.server.common.msg.session.FromDeviceMsg;  
20 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
21 -import org.thingsboard.server.common.msg.session.SessionMsgType;  
22 -import org.thingsboard.server.common.msg.session.ToDeviceMsg;  
23 19
24 /** 20 /**
25 * @author Andrew Shvayka 21 * @author Andrew Shvayka
26 */ 22 */
27 @Data 23 @Data
28 -public class ToServerRpcResponseMsg implements ToDeviceMsg { 24 +public class ToServerRpcResponseMsg {
29 25
30 private final int requestId; 26 private final int requestId;
31 private final String data; 27 private final String data;
32 28
33 - public SessionMsgType getSessionMsgType() {  
34 - return SessionMsgType.TO_SERVER_RPC_RESPONSE;  
35 - }  
36 -  
37 - @Override  
38 public boolean isSuccess() { 29 public boolean isSuccess() {
39 return true; 30 return true;
40 } 31 }
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.session;  
17 -  
18 -public interface AdaptorToSessionActorMsg extends SessionMsg {  
19 -  
20 - FromDeviceMsg getMsg();  
21 -  
22 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.session;  
17 -  
18 -public class BasicAdaptorToSessionActorMsg extends BasicSessionMsg implements AdaptorToSessionActorMsg {  
19 -  
20 - private final FromDeviceMsg msg;  
21 -  
22 - public BasicAdaptorToSessionActorMsg(SessionContext ctx, FromDeviceMsg msg) {  
23 - super(ctx);  
24 - this.msg = msg;  
25 - }  
26 -  
27 - @Override  
28 - public FromDeviceMsg getMsg() {  
29 - return msg;  
30 - }  
31 -  
32 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.session;  
17 -  
18 -public class BasicSessionActorToAdaptorMsg extends BasicSessionMsg implements SessionActorToAdaptorMsg {  
19 -  
20 - private final ToDeviceMsg msg;  
21 -  
22 - public BasicSessionActorToAdaptorMsg(SessionContext ctx, ToDeviceMsg msg) {  
23 - super(ctx);  
24 - this.msg = msg;  
25 - }  
26 -  
27 - @Override  
28 - public ToDeviceMsg getMsg() {  
29 - return msg;  
30 - }  
31 -  
32 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.session;  
17 -  
18 -public class BasicSessionMsg implements SessionMsg {  
19 -  
20 - private final SessionContext ctx;  
21 -  
22 - public BasicSessionMsg(SessionContext ctx) {  
23 - super();  
24 - this.ctx = ctx;  
25 - }  
26 -  
27 - @Override  
28 - public SessionId getSessionId() {  
29 - return ctx.getSessionId();  
30 - }  
31 -  
32 - @Override  
33 - public SessionContext getSessionContext() {  
34 - return ctx;  
35 - }  
36 -  
37 - @Override  
38 - public String toString() {  
39 - return "BasicSessionMsg [ctx=" + ctx + "]";  
40 - }  
41 -  
42 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.session;  
17 -  
18 -import org.thingsboard.server.common.data.Device;  
19 -import org.thingsboard.server.common.data.id.CustomerId;  
20 -import org.thingsboard.server.common.data.id.DeviceId;  
21 -import org.thingsboard.server.common.data.id.TenantId;  
22 -import org.thingsboard.server.common.msg.MsgType;  
23 -  
24 -public class BasicTransportToDeviceSessionActorMsg implements TransportToDeviceSessionActorMsg {  
25 -  
26 - private final TenantId tenantId;  
27 - private final CustomerId customerId;  
28 - private final DeviceId deviceId;  
29 - private final AdaptorToSessionActorMsg msg;  
30 -  
31 - public BasicTransportToDeviceSessionActorMsg(Device device, AdaptorToSessionActorMsg msg) {  
32 - super();  
33 - this.tenantId = device.getTenantId();  
34 - this.customerId = device.getCustomerId();  
35 - this.deviceId = device.getId();  
36 - this.msg = msg;  
37 - }  
38 -  
39 - @Override  
40 - public DeviceId getDeviceId() {  
41 - return deviceId;  
42 - }  
43 -  
44 - @Override  
45 - public CustomerId getCustomerId() {  
46 - return customerId;  
47 - }  
48 -  
49 - public TenantId getTenantId() {  
50 - return tenantId;  
51 - }  
52 -  
53 - @Override  
54 - public SessionId getSessionId() {  
55 - return msg.getSessionId();  
56 - }  
57 -  
58 - @Override  
59 - public AdaptorToSessionActorMsg getSessionMsg() {  
60 - return msg;  
61 - }  
62 -  
63 - @Override  
64 - public String toString() {  
65 - return "BasicTransportToDeviceSessionActorMsg [tenantId=" + tenantId + ", customerId=" + customerId + ", deviceId=" + deviceId + ", msg=" + msg  
66 - + "]";  
67 - }  
68 -  
69 - @Override  
70 - public MsgType getMsgType() {  
71 - return MsgType.TRANSPORT_TO_DEVICE_SESSION_ACTOR_MSG;  
72 - }  
73 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.session;  
17 -  
18 -import java.io.Serializable;  
19 -  
20 -public interface FromDeviceMsg extends Serializable {  
21 -  
22 - SessionMsgType getMsgType();  
23 -  
24 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.session;  
17 -  
18 -/**  
19 - * @author Andrew Shvayka  
20 - */  
21 -public interface FromDeviceRequestMsg extends FromDeviceMsg {  
22 -  
23 - Integer getRequestId();  
24 -  
25 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.session;  
17 -  
18 -public interface SessionActorToAdaptorMsg extends SessionMsg {  
19 -  
20 - ToDeviceMsg getMsg();  
21 -  
22 -}  
1 /** 1 /**
2 * Copyright © 2016-2018 The Thingsboard Authors 2 * Copyright © 2016-2018 The Thingsboard Authors
3 - * <p> 3 + *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at 6 * You may obtain a copy of the License at
7 - * <p>  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - * <p> 7 + *
  8 + * http://www.apache.org/licenses/LICENSE-2.0
  9 + *
10 * Unless required by applicable law or agreed to in writing, software 10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS, 11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.session;  
17 -  
18 -import org.thingsboard.server.common.msg.TbActorMsg;  
19 -import org.thingsboard.server.common.msg.aware.SessionAwareMsg;  
20 -  
21 -public interface SessionCtrlMsg extends SessionAwareMsg, TbActorMsg {  
22 -  
23 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.session;  
17 -  
18 -import org.thingsboard.server.common.msg.aware.SessionAwareMsg;  
19 -  
20 -public interface SessionMsg extends SessionAwareMsg {  
21 -  
22 - SessionContext getSessionContext();  
23 -  
24 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.session;  
17 -  
18 -public enum SessionType {  
19 -  
20 - SYNC, ASYNC;  
21 -  
22 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.session;  
17 -  
18 -import java.io.Serializable;  
19 -  
20 -public interface ToDeviceMsg extends Serializable {  
21 -  
22 - boolean isSuccess();  
23 -  
24 - SessionMsgType getSessionMsgType();  
25 -  
26 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.session;  
17 -  
18 -import org.thingsboard.server.common.msg.TbActorMsg;  
19 -import org.thingsboard.server.common.msg.aware.CustomerAwareMsg;  
20 -import org.thingsboard.server.common.msg.aware.DeviceAwareMsg;  
21 -import org.thingsboard.server.common.msg.aware.SessionAwareMsg;  
22 -import org.thingsboard.server.common.msg.aware.TenantAwareMsg;  
23 -  
24 -public interface TransportToDeviceSessionActorMsg extends DeviceAwareMsg, CustomerAwareMsg, TenantAwareMsg, SessionAwareMsg, TbActorMsg {  
25 -  
26 - AdaptorToSessionActorMsg getSessionMsg();  
27 -  
28 -}  
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.msg.session.ctrl;  
17 -  
18 -import org.thingsboard.server.common.msg.MsgType;  
19 -import org.thingsboard.server.common.msg.session.SessionCtrlMsg;  
20 -  
21 -public class SessionCloseMsg implements SessionCtrlMsg {  
22 -  
23 - private final SessionId sessionId;  
24 - private final boolean revoked;  
25 - private final boolean timeout;  
26 -  
27 - public static SessionCloseMsg onDisconnect(SessionId sessionId) {  
28 - return new SessionCloseMsg(sessionId, false, false);  
29 - }  
30 -  
31 - public static SessionCloseMsg onError(SessionId sessionId) {  
32 - return new SessionCloseMsg(sessionId, false, false);  
33 - }  
34 -  
35 - public static SessionCloseMsg onTimeout(SessionId sessionId) {  
36 - return new SessionCloseMsg(sessionId, false, true);  
37 - }  
38 -  
39 - public static SessionCloseMsg onCredentialsRevoked(SessionId sessionId) {  
40 - return new SessionCloseMsg(sessionId, true, false);  
41 - }  
42 -  
43 - private SessionCloseMsg(SessionId sessionId, boolean unauthorized, boolean timeout) {  
44 - super();  
45 - this.sessionId = sessionId;  
46 - this.revoked = unauthorized;  
47 - this.timeout = timeout;  
48 - }  
49 -  
50 - @Override  
51 - public SessionId getSessionId() {  
52 - return sessionId;  
53 - }  
54 -  
55 - public boolean isCredentialsRevoked() {  
56 - return revoked;  
57 - }  
58 -  
59 - public boolean isTimeout() {  
60 - return timeout;  
61 - }  
62 -  
63 - @Override  
64 - public MsgType getMsgType() {  
65 - return MsgType.SESSION_CTRL_MSG;  
66 - }  
67 -}  
@@ -16,7 +16,6 @@ @@ -16,7 +16,6 @@
16 package org.thingsboard.server.common.transport; 16 package org.thingsboard.server.common.transport;
17 17
18 import org.thingsboard.server.common.data.Device; 18 import org.thingsboard.server.common.data.Device;
19 -import org.thingsboard.server.common.msg.aware.SessionAwareMsg;  
20 19
21 public interface SessionMsgProcessor { 20 public interface SessionMsgProcessor {
22 21
1 /** 1 /**
2 * Copyright © 2016-2018 The Thingsboard Authors 2 * Copyright © 2016-2018 The Thingsboard Authors
3 - * <p> 3 + *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at 6 * You may obtain a copy of the License at
7 - * <p>  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - * <p> 7 + *
  8 + * http://www.apache.org/licenses/LICENSE-2.0
  9 + *
10 * Unless required by applicable law or agreed to in writing, software 10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS, 11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -31,12 +31,6 @@ import org.thingsboard.server.common.data.kv.DoubleDataEntry; @@ -31,12 +31,6 @@ import org.thingsboard.server.common.data.kv.DoubleDataEntry;
31 import org.thingsboard.server.common.data.kv.KvEntry; 31 import org.thingsboard.server.common.data.kv.KvEntry;
32 import org.thingsboard.server.common.data.kv.LongDataEntry; 32 import org.thingsboard.server.common.data.kv.LongDataEntry;
33 import org.thingsboard.server.common.data.kv.StringDataEntry; 33 import org.thingsboard.server.common.data.kv.StringDataEntry;
34 -import org.thingsboard.server.common.msg.core.AttributesUpdateRequest;  
35 -import org.thingsboard.server.common.msg.core.BasicAttributesUpdateRequest;  
36 -import org.thingsboard.server.common.msg.core.BasicRequest;  
37 -import org.thingsboard.server.common.msg.core.BasicTelemetryUploadRequest;  
38 -import org.thingsboard.server.common.msg.core.TelemetryUploadRequest;  
39 -import org.thingsboard.server.common.msg.core.ToDeviceRpcRequestMsg;  
40 import org.thingsboard.server.common.msg.kv.AttributesKVMsg; 34 import org.thingsboard.server.common.msg.kv.AttributesKVMsg;
41 import org.thingsboard.server.gen.transport.TransportProtos; 35 import org.thingsboard.server.gen.transport.TransportProtos;
42 import org.thingsboard.server.gen.transport.TransportProtos.AttributeUpdateNotificationMsg; 36 import org.thingsboard.server.gen.transport.TransportProtos.AttributeUpdateNotificationMsg;
@@ -49,8 +43,12 @@ import org.thingsboard.server.gen.transport.TransportProtos.TsKvListProto; @@ -49,8 +43,12 @@ import org.thingsboard.server.gen.transport.TransportProtos.TsKvListProto;
49 import org.thingsboard.server.gen.transport.TransportProtos.TsKvProto; 43 import org.thingsboard.server.gen.transport.TransportProtos.TsKvProto;
50 44
51 import java.util.ArrayList; 45 import java.util.ArrayList;
  46 +import java.util.HashMap;
  47 +import java.util.HashSet;
52 import java.util.List; 48 import java.util.List;
  49 +import java.util.Map;
53 import java.util.Map.Entry; 50 import java.util.Map.Entry;
  51 +import java.util.Set;
54 import java.util.function.Consumer; 52 import java.util.function.Consumer;
55 import java.util.stream.Collectors; 53 import java.util.stream.Collectors;
56 54
@@ -60,18 +58,6 @@ public class JsonConverter { @@ -60,18 +58,6 @@ public class JsonConverter {
60 private static final String CAN_T_PARSE_VALUE = "Can't parse value: "; 58 private static final String CAN_T_PARSE_VALUE = "Can't parse value: ";
61 private static final String DEVICE_PROPERTY = "device"; 59 private static final String DEVICE_PROPERTY = "device";
62 60
63 - public static TelemetryUploadRequest convertToTelemetry(JsonElement jsonObject) throws JsonSyntaxException {  
64 - return convertToTelemetry(jsonObject, BasicRequest.DEFAULT_REQUEST_ID);  
65 - }  
66 -  
67 - public static TelemetryUploadRequest convertToTelemetry(JsonElement jsonObject, long ts) throws JsonSyntaxException {  
68 - return convertToTelemetry(jsonObject, ts, BasicRequest.DEFAULT_REQUEST_ID);  
69 - }  
70 -  
71 - public static TelemetryUploadRequest convertToTelemetry(JsonElement jsonObject, int requestId) throws JsonSyntaxException {  
72 - return convertToTelemetry(jsonObject, System.currentTimeMillis(), requestId);  
73 - }  
74 -  
75 public static PostTelemetryMsg convertToTelemetryProto(JsonElement jsonObject) throws JsonSyntaxException { 61 public static PostTelemetryMsg convertToTelemetryProto(JsonElement jsonObject) throws JsonSyntaxException {
76 long systemTs = System.currentTimeMillis(); 62 long systemTs = System.currentTimeMillis();
77 PostTelemetryMsg.Builder builder = PostTelemetryMsg.newBuilder(); 63 PostTelemetryMsg.Builder builder = PostTelemetryMsg.newBuilder();
@@ -170,74 +156,11 @@ public class JsonConverter { @@ -170,74 +156,11 @@ public class JsonConverter {
170 return result; 156 return result;
171 } 157 }
172 158
173 - private static TelemetryUploadRequest convertToTelemetry(JsonElement jsonObject, long systemTs, int requestId) throws JsonSyntaxException {  
174 - BasicTelemetryUploadRequest request = new BasicTelemetryUploadRequest(requestId);  
175 - if (jsonObject.isJsonObject()) {  
176 - parseObject(request, systemTs, jsonObject);  
177 - } else if (jsonObject.isJsonArray()) {  
178 - jsonObject.getAsJsonArray().forEach(je -> {  
179 - if (je.isJsonObject()) {  
180 - parseObject(request, systemTs, je.getAsJsonObject());  
181 - } else {  
182 - throw new JsonSyntaxException(CAN_T_PARSE_VALUE + je);  
183 - }  
184 - });  
185 - } else {  
186 - throw new JsonSyntaxException(CAN_T_PARSE_VALUE + jsonObject);  
187 - }  
188 - return request;  
189 - }  
190 -  
191 public static TransportProtos.ToServerRpcRequestMsg convertToServerRpcRequest(JsonElement json, int requestId) throws JsonSyntaxException { 159 public static TransportProtos.ToServerRpcRequestMsg convertToServerRpcRequest(JsonElement json, int requestId) throws JsonSyntaxException {
192 JsonObject object = json.getAsJsonObject(); 160 JsonObject object = json.getAsJsonObject();
193 return TransportProtos.ToServerRpcRequestMsg.newBuilder().setRequestId(requestId).setMethodName(object.get("method").getAsString()).setParams(GSON.toJson(object.get("params"))).build(); 161 return TransportProtos.ToServerRpcRequestMsg.newBuilder().setRequestId(requestId).setMethodName(object.get("method").getAsString()).setParams(GSON.toJson(object.get("params"))).build();
194 } 162 }
195 163
196 - private static void parseObject(BasicTelemetryUploadRequest request, long systemTs, JsonElement jsonObject) {  
197 - JsonObject jo = jsonObject.getAsJsonObject();  
198 - if (jo.has("ts") && jo.has("values")) {  
199 - parseWithTs(request, jo);  
200 - } else {  
201 - parseWithoutTs(request, systemTs, jo);  
202 - }  
203 - }  
204 -  
205 - private static void parseWithoutTs(BasicTelemetryUploadRequest request, long systemTs, JsonObject jo) {  
206 - for (KvEntry entry : parseValues(jo)) {  
207 - request.add(systemTs, entry);  
208 - }  
209 - }  
210 -  
211 - public static void parseWithTs(BasicTelemetryUploadRequest request, JsonObject jo) {  
212 - long ts = jo.get("ts").getAsLong();  
213 - JsonObject valuesObject = jo.get("values").getAsJsonObject();  
214 - for (KvEntry entry : parseValues(valuesObject)) {  
215 - request.add(ts, entry);  
216 - }  
217 - }  
218 -  
219 - public static List<KvEntry> parseValues(JsonObject valuesObject) {  
220 - List<KvEntry> result = new ArrayList<>();  
221 - for (Entry<String, JsonElement> valueEntry : valuesObject.entrySet()) {  
222 - JsonElement element = valueEntry.getValue();  
223 - if (element.isJsonPrimitive()) {  
224 - JsonPrimitive value = element.getAsJsonPrimitive();  
225 - if (value.isString()) {  
226 - result.add(new StringDataEntry(valueEntry.getKey(), value.getAsString()));  
227 - } else if (value.isBoolean()) {  
228 - result.add(new BooleanDataEntry(valueEntry.getKey(), value.getAsBoolean()));  
229 - } else if (value.isNumber()) {  
230 - parseNumericValue(result, valueEntry, value);  
231 - } else {  
232 - throw new JsonSyntaxException(CAN_T_PARSE_VALUE + value);  
233 - }  
234 - } else {  
235 - throw new JsonSyntaxException(CAN_T_PARSE_VALUE + element);  
236 - }  
237 - }  
238 - return result;  
239 - }  
240 -  
241 private static void parseNumericValue(List<KvEntry> result, Entry<String, JsonElement> valueEntry, JsonPrimitive value) { 164 private static void parseNumericValue(List<KvEntry> result, Entry<String, JsonElement> valueEntry, JsonPrimitive value) {
242 if (value.getAsString().contains(".")) { 165 if (value.getAsString().contains(".")) {
243 result.add(new DoubleDataEntry(valueEntry.getKey(), value.getAsDouble())); 166 result.add(new DoubleDataEntry(valueEntry.getKey(), value.getAsDouble()));
@@ -251,21 +174,6 @@ public class JsonConverter { @@ -251,21 +174,6 @@ public class JsonConverter {
251 } 174 }
252 } 175 }
253 176
254 - public static AttributesUpdateRequest convertToAttributes(JsonElement element) {  
255 - return convertToAttributes(element, BasicRequest.DEFAULT_REQUEST_ID);  
256 - }  
257 -  
258 - public static AttributesUpdateRequest convertToAttributes(JsonElement element, int requestId) {  
259 - if (element.isJsonObject()) {  
260 - BasicAttributesUpdateRequest request = new BasicAttributesUpdateRequest(requestId);  
261 - long ts = System.currentTimeMillis();  
262 - request.add(parseValues(element.getAsJsonObject()).stream().map(kv -> new BaseAttributeKvEntry(kv, ts)).collect(Collectors.toList()));  
263 - return request;  
264 - } else {  
265 - throw new JsonSyntaxException(CAN_T_PARSE_VALUE + element);  
266 - }  
267 - }  
268 -  
269 public static JsonObject toJson(GetAttributeResponseMsg payload) { 177 public static JsonObject toJson(GetAttributeResponseMsg payload) {
270 JsonObject result = new JsonObject(); 178 JsonObject result = new JsonObject();
271 if (payload.getClientAttributeListCount() > 0) { 179 if (payload.getClientAttributeListCount() > 0) {
@@ -425,16 +333,6 @@ public class JsonConverter { @@ -425,16 +333,6 @@ public class JsonConverter {
425 }; 333 };
426 } 334 }
427 335
428 - public static JsonObject toJson(ToDeviceRpcRequestMsg msg, boolean includeRequestId) {  
429 - JsonObject result = new JsonObject();  
430 - if (includeRequestId) {  
431 - result.addProperty("id", msg.getRequestId());  
432 - }  
433 - result.addProperty("method", msg.getMethod());  
434 - result.add("params", new JsonParser().parse(msg.getParams()));  
435 - return result;  
436 - }  
437 -  
438 public static JsonElement toJson(TransportProtos.ToServerRpcResponseMsg msg) { 336 public static JsonElement toJson(TransportProtos.ToServerRpcResponseMsg msg) {
439 if (StringUtils.isEmpty(msg.getError())) { 337 if (StringUtils.isEmpty(msg.getError())) {
440 return new JsonParser().parse(msg.getPayload()); 338 return new JsonParser().parse(msg.getPayload());
@@ -457,4 +355,76 @@ public class JsonConverter { @@ -457,4 +355,76 @@ public class JsonConverter {
457 result.add("data", JsonConverter.toJson(rpcRequest, true)); 355 result.add("data", JsonConverter.toJson(rpcRequest, true));
458 return result; 356 return result;
459 } 357 }
  358 +
  359 + public static Set<AttributeKvEntry> convertToAttributes(JsonElement element) {
  360 + Set<AttributeKvEntry> result = new HashSet<>();
  361 + long ts = System.currentTimeMillis();
  362 + result.addAll(parseValues(element.getAsJsonObject()).stream().map(kv -> new BaseAttributeKvEntry(kv, ts)).collect(Collectors.toList()));
  363 + return result;
  364 + }
  365 +
  366 + private static List<KvEntry> parseValues(JsonObject valuesObject) {
  367 + List<KvEntry> result = new ArrayList<>();
  368 + for (Entry<String, JsonElement> valueEntry : valuesObject.entrySet()) {
  369 + JsonElement element = valueEntry.getValue();
  370 + if (element.isJsonPrimitive()) {
  371 + JsonPrimitive value = element.getAsJsonPrimitive();
  372 + if (value.isString()) {
  373 + result.add(new StringDataEntry(valueEntry.getKey(), value.getAsString()));
  374 + } else if (value.isBoolean()) {
  375 + result.add(new BooleanDataEntry(valueEntry.getKey(), value.getAsBoolean()));
  376 + } else if (value.isNumber()) {
  377 + parseNumericValue(result, valueEntry, value);
  378 + } else {
  379 + throw new JsonSyntaxException(CAN_T_PARSE_VALUE + value);
  380 + }
  381 + } else {
  382 + throw new JsonSyntaxException(CAN_T_PARSE_VALUE + element);
  383 + }
  384 + }
  385 + return result;
  386 + }
  387 +
  388 + public static Map<Long, List<KvEntry>> convertToTelemetry(JsonElement jsonObject, long systemTs) throws JsonSyntaxException {
  389 + Map<Long, List<KvEntry>> result = new HashMap<>();
  390 + if (jsonObject.isJsonObject()) {
  391 + parseObject(result, systemTs, jsonObject);
  392 + } else if (jsonObject.isJsonArray()) {
  393 + jsonObject.getAsJsonArray().forEach(je -> {
  394 + if (je.isJsonObject()) {
  395 + parseObject(result, systemTs, je.getAsJsonObject());
  396 + } else {
  397 + throw new JsonSyntaxException(CAN_T_PARSE_VALUE + je);
  398 + }
  399 + });
  400 + } else {
  401 + throw new JsonSyntaxException(CAN_T_PARSE_VALUE + jsonObject);
  402 + }
  403 + return result;
  404 + }
  405 +
  406 + private static void parseObject(Map<Long, List<KvEntry>> result, long systemTs, JsonElement jsonObject) {
  407 + JsonObject jo = jsonObject.getAsJsonObject();
  408 + if (jo.has("ts") && jo.has("values")) {
  409 + parseWithTs(result, jo);
  410 + } else {
  411 + parseWithoutTs(result, systemTs, jo);
  412 + }
  413 + }
  414 +
  415 + private static void parseWithoutTs(Map<Long, List<KvEntry>> result, long systemTs, JsonObject jo) {
  416 + for (KvEntry entry : parseValues(jo)) {
  417 + result.computeIfAbsent(systemTs, tmp -> new ArrayList<>()).add(entry);
  418 + }
  419 + }
  420 +
  421 + public static void parseWithTs(Map<Long, List<KvEntry>> result, JsonObject jo) {
  422 + long ts = jo.get("ts").getAsLong();
  423 + JsonObject valuesObject = jo.get("values").getAsJsonObject();
  424 + for (KvEntry entry : parseValues(valuesObject)) {
  425 + result.computeIfAbsent(ts, tmp -> new ArrayList<>()).add(entry);
  426 + }
  427 + }
  428 +
  429 +
460 } 430 }
@@ -30,6 +30,8 @@ import java.util.UUID; @@ -30,6 +30,8 @@ import java.util.UUID;
30 public abstract class DeviceAwareSessionContext implements SessionContext { 30 public abstract class DeviceAwareSessionContext implements SessionContext {
31 31
32 @Getter 32 @Getter
  33 + protected final UUID sessionId;
  34 + @Getter
33 private volatile DeviceId deviceId; 35 private volatile DeviceId deviceId;
34 @Getter 36 @Getter
35 private volatile DeviceInfoProto deviceInfo; 37 private volatile DeviceInfoProto deviceInfo;
@@ -84,7 +84,7 @@ public class TbCopyAttributesToEntityViewNode implements TbNode { @@ -84,7 +84,7 @@ public class TbCopyAttributesToEntityViewNode implements TbNode {
84 long endTime = entityView.getEndTimeMs(); 84 long endTime = entityView.getEndTimeMs();
85 if ((endTime != 0 && endTime > now && startTime < now) || (endTime == 0 && startTime < now)) { 85 if ((endTime != 0 && endTime > now && startTime < now) || (endTime == 0 && startTime < now)) {
86 Set<AttributeKvEntry> attributes = 86 Set<AttributeKvEntry> attributes =
87 - JsonConverter.convertToAttributes(new JsonParser().parse(msg.getData())).getAttributes(); 87 + JsonConverter.convertToAttributes(new JsonParser().parse(msg.getData()));
88 List<AttributeKvEntry> filteredAttributes = 88 List<AttributeKvEntry> filteredAttributes =
89 attributes.stream() 89 attributes.stream()
90 .filter(attr -> { 90 .filter(attr -> {
@@ -63,7 +63,7 @@ public class TbMsgAttributesNode implements TbNode { @@ -63,7 +63,7 @@ public class TbMsgAttributesNode implements TbNode {
63 } 63 }
64 64
65 String src = msg.getData(); 65 String src = msg.getData();
66 - Set<AttributeKvEntry> attributes = JsonConverter.convertToAttributes(new JsonParser().parse(src)).getAttributes(); 66 + Set<AttributeKvEntry> attributes = JsonConverter.convertToAttributes(new JsonParser().parse(src));
67 ctx.getTelemetryService().saveAndNotify(msg.getOriginator(), config.getScope(), new ArrayList<>(attributes), new TelemetryNodeCallback(ctx, msg)); 67 ctx.getTelemetryService().saveAndNotify(msg.getOriginator(), config.getScope(), new ArrayList<>(attributes), new TelemetryNodeCallback(ctx, msg));
68 if (msg.getOriginator().getEntityType() == EntityType.DEVICE && DataConstants.SHARED_SCOPE.equals(config.getScope())) { 68 if (msg.getOriginator().getEntityType() == EntityType.DEVICE && DataConstants.SHARED_SCOPE.equals(config.getScope())) {
69 ctx.getTelemetryService().onSharedAttributesUpdate(ctx.getTenantId(), new DeviceId(msg.getOriginator().getId()), attributes); 69 ctx.getTelemetryService().onSharedAttributesUpdate(ctx.getTenantId(), new DeviceId(msg.getOriginator().getId()), attributes);
@@ -29,7 +29,6 @@ import org.thingsboard.server.common.data.kv.KvEntry; @@ -29,7 +29,6 @@ import org.thingsboard.server.common.data.kv.KvEntry;
29 import org.thingsboard.server.common.data.kv.TsKvEntry; 29 import org.thingsboard.server.common.data.kv.TsKvEntry;
30 import org.thingsboard.server.common.data.plugin.ComponentType; 30 import org.thingsboard.server.common.data.plugin.ComponentType;
31 import org.thingsboard.server.common.msg.TbMsg; 31 import org.thingsboard.server.common.msg.TbMsg;
32 -import org.thingsboard.server.common.msg.core.TelemetryUploadRequest;  
33 import org.thingsboard.server.common.msg.session.SessionMsgType; 32 import org.thingsboard.server.common.msg.session.SessionMsgType;
34 import org.thingsboard.server.common.transport.adaptor.JsonConverter; 33 import org.thingsboard.server.common.transport.adaptor.JsonConverter;
35 34
@@ -68,13 +67,13 @@ public class TbMsgTimeseriesNode implements TbNode { @@ -68,13 +67,13 @@ public class TbMsgTimeseriesNode implements TbNode {
68 if (!StringUtils.isEmpty(tsStr)) { 67 if (!StringUtils.isEmpty(tsStr)) {
69 try { 68 try {
70 ts = Long.parseLong(tsStr); 69 ts = Long.parseLong(tsStr);
71 - } catch (NumberFormatException e) {} 70 + } catch (NumberFormatException e) {
  71 + }
72 } else { 72 } else {
73 ts = System.currentTimeMillis(); 73 ts = System.currentTimeMillis();
74 } 74 }
75 String src = msg.getData(); 75 String src = msg.getData();
76 - TelemetryUploadRequest telemetryUploadRequest = JsonConverter.convertToTelemetry(new JsonParser().parse(src), ts);  
77 - Map<Long, List<KvEntry>> tsKvMap = telemetryUploadRequest.getData(); 76 + Map<Long, List<KvEntry>> tsKvMap = JsonConverter.convertToTelemetry(new JsonParser().parse(src), ts);
78 if (tsKvMap == null) { 77 if (tsKvMap == null) {
79 ctx.tellFailure(msg, new IllegalArgumentException("Msg body is empty: " + src)); 78 ctx.tellFailure(msg, new IllegalArgumentException("Msg body is empty: " + src));
80 return; 79 return;
@@ -17,7 +17,6 @@ package org.thingsboard.server.transport.coap.adaptors; @@ -17,7 +17,6 @@ package org.thingsboard.server.transport.coap.adaptors;
17 17
18 import java.util.*; 18 import java.util.*;
19 19
20 -import com.google.gson.JsonElement;  
21 import lombok.extern.slf4j.Slf4j; 20 import lombok.extern.slf4j.Slf4j;
22 import org.eclipse.californium.core.coap.CoAP.ResponseCode; 21 import org.eclipse.californium.core.coap.CoAP.ResponseCode;
23 import org.eclipse.californium.core.coap.Request; 22 import org.eclipse.californium.core.coap.Request;
@@ -25,13 +24,8 @@ import org.eclipse.californium.core.coap.Response; @@ -25,13 +24,8 @@ import org.eclipse.californium.core.coap.Response;
25 import org.springframework.util.StringUtils; 24 import org.springframework.util.StringUtils;
26 import org.thingsboard.server.common.msg.core.*; 25 import org.thingsboard.server.common.msg.core.*;
27 import org.thingsboard.server.common.msg.kv.AttributesKVMsg; 26 import org.thingsboard.server.common.msg.kv.AttributesKVMsg;
28 -import org.thingsboard.server.common.msg.session.AdaptorToSessionActorMsg;  
29 -import org.thingsboard.server.common.msg.session.BasicAdaptorToSessionActorMsg;  
30 -import org.thingsboard.server.common.msg.session.FromDeviceMsg;  
31 import org.thingsboard.server.common.msg.session.SessionMsgType; 27 import org.thingsboard.server.common.msg.session.SessionMsgType;
32 -import org.thingsboard.server.common.msg.session.SessionActorToAdaptorMsg;  
33 import org.thingsboard.server.common.msg.session.SessionContext; 28 import org.thingsboard.server.common.msg.session.SessionContext;
34 -import org.thingsboard.server.common.msg.session.ToDeviceMsg;  
35 import org.thingsboard.server.common.msg.session.ex.ProcessingTimeoutException; 29 import org.thingsboard.server.common.msg.session.ex.ProcessingTimeoutException;
36 import org.thingsboard.server.common.transport.adaptor.AdaptorException; 30 import org.thingsboard.server.common.transport.adaptor.AdaptorException;
37 import org.thingsboard.server.common.transport.adaptor.JsonConverter; 31 import org.thingsboard.server.common.transport.adaptor.JsonConverter;
@@ -20,10 +20,6 @@ import org.eclipse.californium.core.coap.CoAP.ResponseCode; @@ -20,10 +20,6 @@ import org.eclipse.californium.core.coap.CoAP.ResponseCode;
20 import org.eclipse.californium.core.coap.Request; 20 import org.eclipse.californium.core.coap.Request;
21 import org.eclipse.californium.core.coap.Response; 21 import org.eclipse.californium.core.coap.Response;
22 import org.eclipse.californium.core.server.resources.CoapExchange; 22 import org.eclipse.californium.core.server.resources.CoapExchange;
23 -import org.thingsboard.server.common.msg.session.SessionActorToAdaptorMsg;  
24 -import org.thingsboard.server.common.msg.session.SessionCtrlMsg;  
25 -import org.thingsboard.server.common.msg.session.SessionType;  
26 -import org.thingsboard.server.common.msg.session.ctrl.SessionCloseMsg;  
27 import org.thingsboard.server.common.msg.session.ex.SessionException; 23 import org.thingsboard.server.common.msg.session.ex.SessionException;
28 import org.thingsboard.server.common.transport.SessionMsgProcessor; 24 import org.thingsboard.server.common.transport.SessionMsgProcessor;
29 import org.thingsboard.server.common.transport.adaptor.AdaptorException; 25 import org.thingsboard.server.common.transport.adaptor.AdaptorException;
@@ -34,26 +34,15 @@ import org.thingsboard.server.common.data.Device; @@ -34,26 +34,15 @@ import org.thingsboard.server.common.data.Device;
34 import org.thingsboard.server.common.data.id.CustomerId; 34 import org.thingsboard.server.common.data.id.CustomerId;
35 import org.thingsboard.server.common.data.id.DeviceId; 35 import org.thingsboard.server.common.data.id.DeviceId;
36 import org.thingsboard.server.common.data.id.TenantId; 36 import org.thingsboard.server.common.data.id.TenantId;
37 -import org.thingsboard.server.common.data.kv.AttributeKvEntry;  
38 -import org.thingsboard.server.common.data.kv.BaseAttributeKvEntry;  
39 -import org.thingsboard.server.common.data.kv.LongDataEntry;  
40 -import org.thingsboard.server.common.data.kv.StringDataEntry;  
41 import org.thingsboard.server.common.data.security.DeviceCredentialsFilter; 37 import org.thingsboard.server.common.data.security.DeviceCredentialsFilter;
42 import org.thingsboard.server.common.data.security.DeviceCredentialsType; 38 import org.thingsboard.server.common.data.security.DeviceCredentialsType;
43 import org.thingsboard.server.common.data.security.DeviceTokenCredentials; 39 import org.thingsboard.server.common.data.security.DeviceTokenCredentials;
44 -import org.thingsboard.server.common.msg.aware.SessionAwareMsg;  
45 -import org.thingsboard.server.common.msg.core.BasicGetAttributesResponse;  
46 -import org.thingsboard.server.common.msg.core.BasicRequest;  
47 -import org.thingsboard.server.common.msg.core.BasicStatusCodeResponse;  
48 -import org.thingsboard.server.common.msg.kv.BasicAttributeKVMsg;  
49 import org.thingsboard.server.common.msg.session.*; 40 import org.thingsboard.server.common.msg.session.*;
50 import org.thingsboard.server.common.transport.SessionMsgProcessor; 41 import org.thingsboard.server.common.transport.SessionMsgProcessor;
51 import org.thingsboard.server.common.transport.auth.DeviceAuthResult; 42 import org.thingsboard.server.common.transport.auth.DeviceAuthResult;
52 import org.thingsboard.server.common.transport.auth.DeviceAuthService; 43 import org.thingsboard.server.common.transport.auth.DeviceAuthService;
53 import org.thingsboard.server.common.transport.quota.host.HostRequestsQuotaService; 44 import org.thingsboard.server.common.transport.quota.host.HostRequestsQuotaService;
54 45
55 -import java.util.ArrayList;  
56 -import java.util.List;  
57 import java.util.Optional; 46 import java.util.Optional;
58 import java.util.UUID; 47 import java.util.UUID;
59 48
@@ -15,34 +15,20 @@ @@ -15,34 +15,20 @@
15 */ 15 */
16 package org.thingsboard.server.transport.http; 16 package org.thingsboard.server.transport.http;
17 17
18 -import com.google.gson.JsonObject;  
19 -import com.google.gson.JsonParser;  
20 -import com.google.gson.JsonSyntaxException;  
21 import lombok.extern.slf4j.Slf4j; 18 import lombok.extern.slf4j.Slf4j;
22 import org.springframework.beans.factory.annotation.Autowired; 19 import org.springframework.beans.factory.annotation.Autowired;
23 import org.springframework.beans.factory.annotation.Value; 20 import org.springframework.beans.factory.annotation.Value;
24 import org.springframework.http.HttpStatus; 21 import org.springframework.http.HttpStatus;
25 import org.springframework.http.ResponseEntity; 22 import org.springframework.http.ResponseEntity;
26 -import org.springframework.util.StringUtils;  
27 import org.springframework.web.bind.annotation.*; 23 import org.springframework.web.bind.annotation.*;
28 import org.springframework.web.context.request.async.DeferredResult; 24 import org.springframework.web.context.request.async.DeferredResult;
29 -import org.thingsboard.server.common.data.security.DeviceTokenCredentials;  
30 import org.thingsboard.server.common.msg.core.*; 25 import org.thingsboard.server.common.msg.core.*;
31 -import org.thingsboard.server.common.msg.session.AdaptorToSessionActorMsg;  
32 -import org.thingsboard.server.common.msg.session.BasicAdaptorToSessionActorMsg;  
33 -import org.thingsboard.server.common.msg.session.BasicTransportToDeviceSessionActorMsg;  
34 -import org.thingsboard.server.common.msg.session.FromDeviceMsg;  
35 import org.thingsboard.server.common.transport.SessionMsgProcessor; 26 import org.thingsboard.server.common.transport.SessionMsgProcessor;
36 -import org.thingsboard.server.common.transport.adaptor.JsonConverter;  
37 import org.thingsboard.server.common.transport.auth.DeviceAuthService; 27 import org.thingsboard.server.common.transport.auth.DeviceAuthService;
38 -import org.thingsboard.server.common.transport.quota.QuotaService;  
39 import org.thingsboard.server.common.transport.quota.host.HostRequestsQuotaService; 28 import org.thingsboard.server.common.transport.quota.host.HostRequestsQuotaService;
40 import org.thingsboard.server.transport.http.session.HttpSessionCtx; 29 import org.thingsboard.server.transport.http.session.HttpSessionCtx;
41 30
42 import javax.servlet.http.HttpServletRequest; 31 import javax.servlet.http.HttpServletRequest;
43 -import java.util.Arrays;  
44 -import java.util.HashSet;  
45 -import java.util.Set;  
46 32
47 /** 33 /**
48 * @author Andrew Shvayka 34 * @author Andrew Shvayka
1 /** 1 /**
2 * Copyright © 2016-2018 The Thingsboard Authors 2 * Copyright © 2016-2018 The Thingsboard Authors
3 - * <p> 3 + *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at 6 * You may obtain a copy of the License at
7 - * <p>  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - * <p> 7 + *
  8 + * http://www.apache.org/licenses/LICENSE-2.0
  9 + *
10 * Unless required by applicable law or agreed to in writing, software 10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS, 11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1 /** 1 /**
2 * Copyright © 2016-2018 The Thingsboard Authors 2 * Copyright © 2016-2018 The Thingsboard Authors
3 - * <p> 3 + *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at 6 * You may obtain a copy of the License at
7 - * <p>  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - * <p> 7 + *
  8 + * http://www.apache.org/licenses/LICENSE-2.0
  9 + *
10 * Unless required by applicable law or agreed to in writing, software 10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS, 11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1 /** 1 /**
2 * Copyright © 2016-2018 The Thingsboard Authors 2 * Copyright © 2016-2018 The Thingsboard Authors
3 - * <p> 3 + *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at 6 * You may obtain a copy of the License at
7 - * <p>  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - * <p> 7 + *
  8 + * http://www.apache.org/licenses/LICENSE-2.0
  9 + *
10 * Unless required by applicable law or agreed to in writing, software 10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS, 11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1 /** 1 /**
2 * Copyright © 2016-2018 The Thingsboard Authors 2 * Copyright © 2016-2018 The Thingsboard Authors
3 - * <p> 3 + *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at 6 * You may obtain a copy of the License at
7 - * <p>  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - * <p> 7 + *
  8 + * http://www.apache.org/licenses/LICENSE-2.0
  9 + *
10 * Unless required by applicable law or agreed to in writing, software 10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS, 11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -16,13 +16,9 @@ @@ -16,13 +16,9 @@
16 package org.thingsboard.server.transport.mqtt.session; 16 package org.thingsboard.server.transport.mqtt.session;
17 17
18 import io.netty.channel.ChannelHandlerContext; 18 import io.netty.channel.ChannelHandlerContext;
19 -import io.netty.handler.codec.mqtt.*; 19 +import io.netty.handler.codec.mqtt.MqttMessage;
20 import lombok.Getter; 20 import lombok.Getter;
21 import lombok.extern.slf4j.Slf4j; 21 import lombok.extern.slf4j.Slf4j;
22 -import org.thingsboard.server.common.msg.session.SessionActorToAdaptorMsg;  
23 -import org.thingsboard.server.common.msg.session.SessionCtrlMsg;  
24 -import org.thingsboard.server.common.msg.session.SessionType;  
25 -import org.thingsboard.server.common.msg.session.ctrl.SessionCloseMsg;  
26 import org.thingsboard.server.common.msg.session.ex.SessionException; 22 import org.thingsboard.server.common.msg.session.ex.SessionException;
27 import org.thingsboard.server.common.transport.adaptor.AdaptorException; 23 import org.thingsboard.server.common.transport.adaptor.AdaptorException;
28 24
@@ -36,29 +32,12 @@ import java.util.concurrent.atomic.AtomicInteger; @@ -36,29 +32,12 @@ import java.util.concurrent.atomic.AtomicInteger;
36 @Slf4j 32 @Slf4j
37 public class DeviceSessionCtx extends MqttDeviceAwareSessionContext { 33 public class DeviceSessionCtx extends MqttDeviceAwareSessionContext {
38 34
39 - private final UUID sessionId;  
40 @Getter 35 @Getter
41 private ChannelHandlerContext channel; 36 private ChannelHandlerContext channel;
42 private AtomicInteger msgIdSeq = new AtomicInteger(0); 37 private AtomicInteger msgIdSeq = new AtomicInteger(0);
43 38
44 public DeviceSessionCtx(UUID sessionId, ConcurrentMap<String, Integer> mqttQoSMap) { 39 public DeviceSessionCtx(UUID sessionId, ConcurrentMap<String, Integer> mqttQoSMap) {
45 - super(null, null, mqttQoSMap);  
46 - this.sessionId = sessionId;  
47 - }  
48 -  
49 - @Override  
50 - public SessionType getSessionType() {  
51 - return SessionType.ASYNC;  
52 - }  
53 -  
54 - @Override  
55 - public void onMsg(SessionActorToAdaptorMsg msg) throws SessionException {  
56 -// try {  
57 -// adaptor.convertToAdaptorMsg(this, msg).ifPresent(this::pushToNetwork);  
58 -// } catch (AdaptorException e) {  
59 -// //TODO: close channel with disconnect;  
60 -// logAndWrap(e);  
61 -// } 40 + super(sessionId, mqttQoSMap);
62 } 41 }
63 42
64 private void logAndWrap(AdaptorException e) throws SessionException { 43 private void logAndWrap(AdaptorException e) throws SessionException {
@@ -70,29 +49,6 @@ public class DeviceSessionCtx extends MqttDeviceAwareSessionContext { @@ -70,29 +49,6 @@ public class DeviceSessionCtx extends MqttDeviceAwareSessionContext {
70 channel.writeAndFlush(msg); 49 channel.writeAndFlush(msg);
71 } 50 }
72 51
73 - @Override  
74 - public void onMsg(SessionCtrlMsg msg) throws SessionException {  
75 - if (msg instanceof SessionCloseMsg) {  
76 - pushToNetwork(new MqttMessage(new MqttFixedHeader(MqttMessageType.DISCONNECT, false, MqttQoS.AT_MOST_ONCE, false, 0)));  
77 - channel.close();  
78 - }  
79 - }  
80 -  
81 - @Override  
82 - public boolean isClosed() {  
83 - return false;  
84 - }  
85 -  
86 - @Override  
87 - public long getTimeout() {  
88 - return 0;  
89 - }  
90 -  
91 - @Override  
92 - public UUID getSessionId() {  
93 - return sessionId;  
94 - }  
95 -  
96 public void setChannel(ChannelHandlerContext channel) { 52 public void setChannel(ChannelHandlerContext channel) {
97 this.channel = channel; 53 this.channel = channel;
98 } 54 }
1 /** 1 /**
2 * Copyright © 2016-2018 The Thingsboard Authors 2 * Copyright © 2016-2018 The Thingsboard Authors
3 - * <p> 3 + *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at 6 * You may obtain a copy of the License at
7 - * <p>  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - * <p> 7 + *
  8 + * http://www.apache.org/licenses/LICENSE-2.0
  9 + *
10 * Unless required by applicable law or agreed to in writing, software 10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS, 11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -31,13 +31,11 @@ import java.util.concurrent.ConcurrentMap; @@ -31,13 +31,11 @@ import java.util.concurrent.ConcurrentMap;
31 public class GatewayDeviceSessionCtx extends MqttDeviceAwareSessionContext implements SessionMsgListener { 31 public class GatewayDeviceSessionCtx extends MqttDeviceAwareSessionContext implements SessionMsgListener {
32 32
33 private final GatewaySessionCtx parent; 33 private final GatewaySessionCtx parent;
34 - private final UUID sessionId;  
35 private final SessionInfoProto sessionInfo; 34 private final SessionInfoProto sessionInfo;
36 35
37 public GatewayDeviceSessionCtx(GatewaySessionCtx parent, DeviceInfoProto deviceInfo, ConcurrentMap<String, Integer> mqttQoSMap) { 36 public GatewayDeviceSessionCtx(GatewaySessionCtx parent, DeviceInfoProto deviceInfo, ConcurrentMap<String, Integer> mqttQoSMap) {
38 - super(mqttQoSMap); 37 + super(UUID.randomUUID(), mqttQoSMap);
39 this.parent = parent; 38 this.parent = parent;
40 - this.sessionId = UUID.randomUUID();  
41 this.sessionInfo = SessionInfoProto.newBuilder() 39 this.sessionInfo = SessionInfoProto.newBuilder()
42 .setNodeId(parent.getNodeId()) 40 .setNodeId(parent.getNodeId())
43 .setSessionIdMSB(sessionId.getMostSignificantBits()) 41 .setSessionIdMSB(sessionId.getMostSignificantBits())
1 /** 1 /**
2 * Copyright © 2016-2018 The Thingsboard Authors 2 * Copyright © 2016-2018 The Thingsboard Authors
3 - * <p> 3 + *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at 6 * You may obtain a copy of the License at
7 - * <p>  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - * <p> 7 + *
  8 + * http://www.apache.org/licenses/LICENSE-2.0
  9 + *
10 * Unless required by applicable law or agreed to in writing, software 10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS, 11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -22,6 +22,7 @@ import org.thingsboard.server.common.transport.auth.DeviceAuthService; @@ -22,6 +22,7 @@ import org.thingsboard.server.common.transport.auth.DeviceAuthService;
22 import org.thingsboard.server.common.transport.session.DeviceAwareSessionContext; 22 import org.thingsboard.server.common.transport.session.DeviceAwareSessionContext;
23 23
24 import java.util.Map; 24 import java.util.Map;
  25 +import java.util.UUID;
25 import java.util.concurrent.ConcurrentMap; 26 import java.util.concurrent.ConcurrentMap;
26 27
27 /** 28 /**
@@ -31,8 +32,8 @@ public abstract class MqttDeviceAwareSessionContext extends DeviceAwareSessionCo @@ -31,8 +32,8 @@ public abstract class MqttDeviceAwareSessionContext extends DeviceAwareSessionCo
31 32
32 private final ConcurrentMap<String, Integer> mqttQoSMap; 33 private final ConcurrentMap<String, Integer> mqttQoSMap;
33 34
34 - public MqttDeviceAwareSessionContext(ConcurrentMap<String, Integer> mqttQoSMap) {  
35 - super(); 35 + public MqttDeviceAwareSessionContext(UUID sessionId, ConcurrentMap<String, Integer> mqttQoSMap) {
  36 + super(sessionId);
36 this.mqttQoSMap = mqttQoSMap; 37 this.mqttQoSMap = mqttQoSMap;
37 } 38 }
38 39
1 -/**  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.transport.mqtt.session;  
17 -  
18 -import java.util.concurrent.atomic.AtomicLong;  
19 -  
20 -/**  
21 - * @author Andrew Shvayka  
22 - */  
23 -public class MqttSessionId implements SessionId {  
24 -  
25 - private static final AtomicLong idSeq = new AtomicLong();  
26 -  
27 - private final long id;  
28 -  
29 - public MqttSessionId() {  
30 - this.id = idSeq.incrementAndGet();  
31 - }  
32 -  
33 - @Override  
34 - public boolean equals(Object o) {  
35 - if (this == o) return true;  
36 - if (o == null || getClass() != o.getClass()) return false;  
37 -  
38 - MqttSessionId that = (MqttSessionId) o;  
39 -  
40 - return id == that.id;  
41 -  
42 - }  
43 -  
44 - @Override  
45 - public String toString() {  
46 - return "MqttSessionId{" +  
47 - "id=" + id +  
48 - '}';  
49 - }  
50 -  
51 - @Override  
52 - public int hashCode() {  
53 - return (int) (id ^ (id >>> 32));  
54 - }  
55 -  
56 - @Override  
57 - public String toUidStr() {  
58 - return "mqtt" + id;  
59 - }  
60 -}  
1 /** 1 /**
2 * Copyright © 2016-2018 The Thingsboard Authors 2 * Copyright © 2016-2018 The Thingsboard Authors
3 - * <p> 3 + *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at 6 * You may obtain a copy of the License at
7 - * <p>  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - * <p> 7 + *
  8 + * http://www.apache.org/licenses/LICENSE-2.0
  9 + *
10 * Unless required by applicable law or agreed to in writing, software 10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS, 11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -231,7 +231,7 @@ public class MqttTransportService implements TransportService { @@ -231,7 +231,7 @@ public class MqttTransportService implements TransportService {
231 231
232 @Override 232 @Override
233 public void process(GetOrCreateDeviceFromGatewayRequestMsg msg, TransportServiceCallback<GetOrCreateDeviceFromGatewayResponseMsg> callback) { 233 public void process(GetOrCreateDeviceFromGatewayRequestMsg msg, TransportServiceCallback<GetOrCreateDeviceFromGatewayResponseMsg> callback) {
234 - AsyncCallbackTemplate.withCallback(transportApiTemplate.post(msg.getTenantIdMSB() + msg.getTenantIdLSB() + msg.getDeviceName(), 234 + AsyncCallbackTemplate.withCallback(transportApiTemplate.post(msg.getDeviceName(),
235 TransportApiRequestMsg.newBuilder().setGetOrCreateDeviceRequestMsg(msg).build()), 235 TransportApiRequestMsg.newBuilder().setGetOrCreateDeviceRequestMsg(msg).build()),
236 response -> callback.onSuccess(response.getGetOrCreateDeviceResponseMsg()), callback::onError, transportCallbackExecutor); 236 response -> callback.onSuccess(response.getGetOrCreateDeviceResponseMsg()), callback::onError, transportCallbackExecutor);
237 } 237 }
@@ -35,8 +35,8 @@ @@ -35,8 +35,8 @@
35 </properties> 35 </properties>
36 36
37 <modules> 37 <modules>
38 - <module>http</module>  
39 - <module>coap</module> 38 + <!--<module>http</module>-->
  39 + <!--<module>coap</module>-->
40 <module>mqtt-common</module> 40 <module>mqtt-common</module>
41 <module>mqtt-transport</module> 41 <module>mqtt-transport</module>
42 </modules> 42 </modules>