Commit 6b90c7ce21233a8c29c47566d5ebf15b32d9227d

Authored by Igor Kulikov
1 parent 8c9aca91

Improve connect event transformation

@@ -36,26 +36,27 @@ import org.thingsboard.server.common.data.Tenant; @@ -36,26 +36,27 @@ import org.thingsboard.server.common.data.Tenant;
36 import org.thingsboard.server.common.data.id.DeviceId; 36 import org.thingsboard.server.common.data.id.DeviceId;
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.kv.AttributeKvEntry; 38 import org.thingsboard.server.common.data.kv.AttributeKvEntry;
39 -import org.thingsboard.server.common.data.page.PageData;  
40 -import org.thingsboard.server.common.data.page.PageLink;  
41 import org.thingsboard.server.common.data.kv.BasicTsKvEntry; 39 import org.thingsboard.server.common.data.kv.BasicTsKvEntry;
42 import org.thingsboard.server.common.data.kv.BooleanDataEntry; 40 import org.thingsboard.server.common.data.kv.BooleanDataEntry;
43 import org.thingsboard.server.common.data.kv.KvEntry; 41 import org.thingsboard.server.common.data.kv.KvEntry;
44 import org.thingsboard.server.common.data.kv.LongDataEntry; 42 import org.thingsboard.server.common.data.kv.LongDataEntry;
45 import org.thingsboard.server.common.data.kv.TsKvEntry; 43 import org.thingsboard.server.common.data.kv.TsKvEntry;
  44 +import org.thingsboard.server.common.data.page.PageData;
  45 +import org.thingsboard.server.common.data.page.PageLink;
46 import org.thingsboard.server.common.msg.TbMsg; 46 import org.thingsboard.server.common.msg.TbMsg;
47 import org.thingsboard.server.common.msg.TbMsgDataType; 47 import org.thingsboard.server.common.msg.TbMsgDataType;
48 import org.thingsboard.server.common.msg.TbMsgMetaData; 48 import org.thingsboard.server.common.msg.TbMsgMetaData;
  49 +import org.thingsboard.server.common.msg.queue.ServiceType;
  50 +import org.thingsboard.server.common.msg.queue.TbCallback;
  51 +import org.thingsboard.server.common.msg.queue.TopicPartitionInfo;
49 import org.thingsboard.server.dao.attributes.AttributesService; 52 import org.thingsboard.server.dao.attributes.AttributesService;
50 import org.thingsboard.server.dao.device.DeviceService; 53 import org.thingsboard.server.dao.device.DeviceService;
51 import org.thingsboard.server.dao.tenant.TenantService; 54 import org.thingsboard.server.dao.tenant.TenantService;
52 import org.thingsboard.server.dao.timeseries.TimeseriesService; 55 import org.thingsboard.server.dao.timeseries.TimeseriesService;
  56 +import org.thingsboard.server.dao.util.mapping.JacksonUtil;
  57 +import org.thingsboard.server.gen.transport.TransportProtos;
53 import org.thingsboard.server.queue.discovery.PartitionChangeEvent; 58 import org.thingsboard.server.queue.discovery.PartitionChangeEvent;
54 import org.thingsboard.server.queue.discovery.PartitionService; 59 import org.thingsboard.server.queue.discovery.PartitionService;
55 -import org.thingsboard.server.common.msg.queue.ServiceType;  
56 -import org.thingsboard.server.common.msg.queue.TopicPartitionInfo;  
57 -import org.thingsboard.server.gen.transport.TransportProtos;  
58 -import org.thingsboard.server.common.msg.queue.TbCallback;  
59 import org.thingsboard.server.queue.util.TbCoreComponent; 60 import org.thingsboard.server.queue.util.TbCoreComponent;
60 import org.thingsboard.server.service.queue.TbClusterService; 61 import org.thingsboard.server.service.queue.TbClusterService;
61 import org.thingsboard.server.service.telemetry.TelemetrySubscriptionService; 62 import org.thingsboard.server.service.telemetry.TelemetrySubscriptionService;
@@ -91,7 +92,6 @@ import static org.thingsboard.server.common.data.DataConstants.SERVER_SCOPE; @@ -91,7 +92,6 @@ import static org.thingsboard.server.common.data.DataConstants.SERVER_SCOPE;
91 @Slf4j 92 @Slf4j
92 public class DefaultDeviceStateService implements DeviceStateService { 93 public class DefaultDeviceStateService implements DeviceStateService {
93 94
94 - private static final ObjectMapper json = new ObjectMapper();  
95 public static final String ACTIVITY_STATE = "active"; 95 public static final String ACTIVITY_STATE = "active";
96 public static final String LAST_CONNECT_TIME = "lastConnectTime"; 96 public static final String LAST_CONNECT_TIME = "lastConnectTime";
97 public static final String LAST_DISCONNECT_TIME = "lastDisconnectTime"; 97 public static final String LAST_DISCONNECT_TIME = "lastDisconnectTime";
@@ -506,11 +506,11 @@ public class DefaultDeviceStateService implements DeviceStateService { @@ -506,11 +506,11 @@ public class DefaultDeviceStateService implements DeviceStateService {
506 try { 506 try {
507 String data; 507 String data;
508 if (msgType.equals(CONNECT_EVENT)) { 508 if (msgType.equals(CONNECT_EVENT)) {
509 - ObjectNode stateNode = json.convertValue(state, ObjectNode.class); 509 + ObjectNode stateNode = JacksonUtil.convertValue(state, ObjectNode.class);
510 stateNode.remove(ACTIVITY_STATE); 510 stateNode.remove(ACTIVITY_STATE);
511 - data = stateNode.toString(); 511 + data = JacksonUtil.toString(stateNode);
512 } else { 512 } else {
513 - data = json.writeValueAsString(state); 513 + data = JacksonUtil.toString(state);
514 } 514 }
515 TbMsg tbMsg = TbMsg.newMsg(msgType, stateData.getDeviceId(), stateData.getMetaData().copy(), TbMsgDataType.JSON, data); 515 TbMsg tbMsg = TbMsg.newMsg(msgType, stateData.getDeviceId(), stateData.getMetaData().copy(), TbMsgDataType.JSON, data);
516 clusterService.pushMsgToRuleEngine(stateData.getTenantId(), stateData.getDeviceId(), tbMsg, null); 516 clusterService.pushMsgToRuleEngine(stateData.getTenantId(), stateData.getDeviceId(), tbMsg, null);
@@ -28,6 +28,15 @@ public class JacksonUtil { @@ -28,6 +28,15 @@ public class JacksonUtil {
28 28
29 public static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); 29 public static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
30 30
  31 + public static <T> T convertValue(Object fromValue, Class<T> toValueType) {
  32 + try {
  33 + return OBJECT_MAPPER.convertValue(fromValue, toValueType);
  34 + } catch (IllegalArgumentException e) {
  35 + throw new IllegalArgumentException("The given object value: "
  36 + + fromValue + " cannot be converted to " + toValueType);
  37 + }
  38 + }
  39 +
31 public static <T> T fromString(String string, Class<T> clazz) { 40 public static <T> T fromString(String string, Class<T> clazz) {
32 try { 41 try {
33 return OBJECT_MAPPER.readValue(string, clazz); 42 return OBJECT_MAPPER.readValue(string, clazz);
@@ -60,4 +69,4 @@ public class JacksonUtil { @@ -60,4 +69,4 @@ public class JacksonUtil {
60 public static <T> T clone(T value) { 69 public static <T> T clone(T value) {
61 return fromString(toString(value), (Class<T>) value.getClass()); 70 return fromString(toString(value), (Class<T>) value.getClass());
62 } 71 }
63 -}  
  72 +}