Commit f4efea9a0bc62fecf7301d08deda40867ef67f75
1 parent
b24ea780
Improve connect event transformation
Showing
2 changed files
with
18 additions
and
10 deletions
@@ -15,7 +15,6 @@ | @@ -15,7 +15,6 @@ | ||
15 | */ | 15 | */ |
16 | package org.thingsboard.server.service.state; | 16 | package org.thingsboard.server.service.state; |
17 | 17 | ||
18 | -import com.fasterxml.jackson.databind.ObjectMapper; | ||
19 | import com.fasterxml.jackson.databind.node.ObjectNode; | 18 | import com.fasterxml.jackson.databind.node.ObjectNode; |
20 | import com.google.common.base.Function; | 19 | import com.google.common.base.Function; |
21 | import com.google.common.util.concurrent.FutureCallback; | 20 | import com.google.common.util.concurrent.FutureCallback; |
@@ -46,16 +45,17 @@ import org.thingsboard.server.common.data.page.TextPageLink; | @@ -46,16 +45,17 @@ import org.thingsboard.server.common.data.page.TextPageLink; | ||
46 | import org.thingsboard.server.common.msg.TbMsg; | 45 | import org.thingsboard.server.common.msg.TbMsg; |
47 | import org.thingsboard.server.common.msg.TbMsgDataType; | 46 | import org.thingsboard.server.common.msg.TbMsgDataType; |
48 | import org.thingsboard.server.common.msg.TbMsgMetaData; | 47 | import org.thingsboard.server.common.msg.TbMsgMetaData; |
48 | +import org.thingsboard.server.common.msg.queue.ServiceType; | ||
49 | +import org.thingsboard.server.common.msg.queue.TbCallback; | ||
50 | +import org.thingsboard.server.common.msg.queue.TopicPartitionInfo; | ||
49 | import org.thingsboard.server.dao.attributes.AttributesService; | 51 | import org.thingsboard.server.dao.attributes.AttributesService; |
50 | import org.thingsboard.server.dao.device.DeviceService; | 52 | import org.thingsboard.server.dao.device.DeviceService; |
51 | import org.thingsboard.server.dao.tenant.TenantService; | 53 | import org.thingsboard.server.dao.tenant.TenantService; |
52 | import org.thingsboard.server.dao.timeseries.TimeseriesService; | 54 | import org.thingsboard.server.dao.timeseries.TimeseriesService; |
55 | +import org.thingsboard.server.dao.util.mapping.JacksonUtil; | ||
56 | +import org.thingsboard.server.gen.transport.TransportProtos; | ||
53 | import org.thingsboard.server.queue.discovery.PartitionChangeEvent; | 57 | import org.thingsboard.server.queue.discovery.PartitionChangeEvent; |
54 | import org.thingsboard.server.queue.discovery.PartitionService; | 58 | 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; | 59 | import org.thingsboard.server.queue.util.TbCoreComponent; |
60 | import org.thingsboard.server.service.queue.TbClusterService; | 60 | import org.thingsboard.server.service.queue.TbClusterService; |
61 | import org.thingsboard.server.service.telemetry.TelemetrySubscriptionService; | 61 | import org.thingsboard.server.service.telemetry.TelemetrySubscriptionService; |
@@ -91,7 +91,6 @@ import static org.thingsboard.server.common.data.DataConstants.SERVER_SCOPE; | @@ -91,7 +91,6 @@ import static org.thingsboard.server.common.data.DataConstants.SERVER_SCOPE; | ||
91 | @Slf4j | 91 | @Slf4j |
92 | public class DefaultDeviceStateService implements DeviceStateService { | 92 | public class DefaultDeviceStateService implements DeviceStateService { |
93 | 93 | ||
94 | - private static final ObjectMapper json = new ObjectMapper(); | ||
95 | public static final String ACTIVITY_STATE = "active"; | 94 | public static final String ACTIVITY_STATE = "active"; |
96 | public static final String LAST_CONNECT_TIME = "lastConnectTime"; | 95 | public static final String LAST_CONNECT_TIME = "lastConnectTime"; |
97 | public static final String LAST_DISCONNECT_TIME = "lastDisconnectTime"; | 96 | public static final String LAST_DISCONNECT_TIME = "lastDisconnectTime"; |
@@ -506,11 +505,11 @@ public class DefaultDeviceStateService implements DeviceStateService { | @@ -506,11 +505,11 @@ public class DefaultDeviceStateService implements DeviceStateService { | ||
506 | try { | 505 | try { |
507 | String data; | 506 | String data; |
508 | if (msgType.equals(CONNECT_EVENT)) { | 507 | if (msgType.equals(CONNECT_EVENT)) { |
509 | - ObjectNode stateNode = json.convertValue(state, ObjectNode.class); | 508 | + ObjectNode stateNode = JacksonUtil.convertValue(state, ObjectNode.class); |
510 | stateNode.remove(ACTIVITY_STATE); | 509 | stateNode.remove(ACTIVITY_STATE); |
511 | - data = stateNode.toString(); | 510 | + data = JacksonUtil.toString(stateNode); |
512 | } else { | 511 | } else { |
513 | - data = json.writeValueAsString(state); | 512 | + data = JacksonUtil.toString(state); |
514 | } | 513 | } |
515 | TbMsg tbMsg = TbMsg.newMsg(msgType, stateData.getDeviceId(), stateData.getMetaData().copy(), TbMsgDataType.JSON, data); | 514 | TbMsg tbMsg = TbMsg.newMsg(msgType, stateData.getDeviceId(), stateData.getMetaData().copy(), TbMsgDataType.JSON, data); |
516 | clusterService.pushMsgToRuleEngine(stateData.getTenantId(), stateData.getDeviceId(), tbMsg, null); | 515 | 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 | +} |