Commit 373f2f9f0e6e0b86d8e3f7ebeb7b9f6c7855c8d8
Committed by
Andrew Shvayka
1 parent
9d651a72
added additionalInfo to the rpc
Showing
14 changed files
with
28 additions
and
2 deletions
... | ... | @@ -234,6 +234,7 @@ class DeviceActorMessageProcessor extends AbstractContextAwareMsgProcessor { |
234 | 234 | rpc.setExpirationTime(request.getExpirationTime()); |
235 | 235 | rpc.setRequest(JacksonUtil.valueToTree(request)); |
236 | 236 | rpc.setStatus(status); |
237 | + rpc.setAdditionalInfo(JacksonUtil.valueToTree(request.getAdditionalInfo())); | |
237 | 238 | return systemContext.getTbRpcService().save(tenantId, rpc); |
238 | 239 | } |
239 | 240 | ... | ... |
... | ... | @@ -90,6 +90,7 @@ public abstract class AbstractRpcController extends BaseController { |
90 | 90 | long expTime = System.currentTimeMillis() + Math.max(minTimeout, timeout); |
91 | 91 | UUID rpcRequestUUID = rpcRequestBody.has("requestUUID") ? UUID.fromString(rpcRequestBody.get("requestUUID").asText()) : UUID.randomUUID(); |
92 | 92 | boolean persisted = rpcRequestBody.has(DataConstants.PERSISTENT) && rpcRequestBody.get(DataConstants.PERSISTENT).asBoolean(); |
93 | + String additionalInfo = JacksonUtil.toString(rpcRequestBody.get(DataConstants.ADDITIONAL_INFO)); | |
93 | 94 | accessValidator.validate(currentUser, Operation.RPC_CALL, deviceId, new HttpValidationCallback(response, new FutureCallback<>() { |
94 | 95 | @Override |
95 | 96 | public void onSuccess(@Nullable DeferredResult<ResponseEntity> result) { |
... | ... | @@ -99,7 +100,8 @@ public abstract class AbstractRpcController extends BaseController { |
99 | 100 | oneWay, |
100 | 101 | expTime, |
101 | 102 | body, |
102 | - persisted | |
103 | + persisted, | |
104 | + additionalInfo | |
103 | 105 | ); |
104 | 106 | deviceRpcService.processRestApiRpcRequest(rpcRequest, fromDeviceRpcResponse -> reply(new LocalRequestMetaData(rpcRequest, currentUser, result), fromDeviceRpcResponse, timeoutStatus, noActiveConnectionStatus), currentUser); |
105 | 107 | } | ... | ... |
... | ... | @@ -168,6 +168,8 @@ public class DefaultTbCoreDeviceRpcService implements TbCoreDeviceRpcService { |
168 | 168 | entityNode.put("method", msg.getBody().getMethod()); |
169 | 169 | entityNode.put("params", msg.getBody().getParams()); |
170 | 170 | |
171 | + entityNode.put(DataConstants.ADDITIONAL_INFO, msg.getAdditionalInfo()); | |
172 | + | |
171 | 173 | try { |
172 | 174 | TbMsg tbMsg = TbMsg.newMsg(DataConstants.RPC_CALL_FROM_SERVER_TO_DEVICE, msg.getDeviceId(), currentUser.getCustomerId(), metaData, TbMsgDataType.JSON, json.writeValueAsString(entityNode)); |
173 | 175 | clusterService.pushMsgToRuleEngine(msg.getTenantId(), msg.getDeviceId(), tbMsg, null); | ... | ... |
... | ... | @@ -100,7 +100,7 @@ public class DefaultTbRuleEngineRpcService implements TbRuleEngineDeviceRpcServi |
100 | 100 | @Override |
101 | 101 | public void sendRpcRequestToDevice(RuleEngineDeviceRpcRequest src, Consumer<RuleEngineDeviceRpcResponse> consumer) { |
102 | 102 | ToDeviceRpcRequest request = new ToDeviceRpcRequest(src.getRequestUUID(), src.getTenantId(), src.getDeviceId(), |
103 | - src.isOneway(), src.getExpirationTime(), new ToDeviceRpcRequestBody(src.getMethod(), src.getBody()), src.isPersisted()); | |
103 | + src.isOneway(), src.getExpirationTime(), new ToDeviceRpcRequestBody(src.getMethod(), src.getBody()), src.isPersisted(), src.getAdditionalInfo()); | |
104 | 104 | forwardRpcRequestToDeviceActor(request, response -> { |
105 | 105 | if (src.isRestApiCall()) { |
106 | 106 | sendRpcResponseToTbCore(src.getOriginServiceId(), response); | ... | ... |
... | ... | @@ -36,6 +36,7 @@ public class DataConstants { |
36 | 36 | public static final String ALARM_CONDITION_REPEATS = "alarmConditionRepeats"; |
37 | 37 | public static final String ALARM_CONDITION_DURATION = "alarmConditionDuration"; |
38 | 38 | public static final String PERSISTENT = "persistent"; |
39 | + public static final String ADDITIONAL_INFO = "additionalInfo"; | |
39 | 40 | public static final String COAP_TRANSPORT_NAME = "COAP"; |
40 | 41 | public static final String LWM2M_TRANSPORT_NAME = "LWM2M"; |
41 | 42 | public static final String MQTT_TRANSPORT_NAME = "MQTT"; | ... | ... |
... | ... | @@ -33,6 +33,7 @@ public class Rpc extends BaseData<RpcId> implements HasTenantId { |
33 | 33 | private JsonNode request; |
34 | 34 | private JsonNode response; |
35 | 35 | private RpcStatus status; |
36 | + private JsonNode additionalInfo; | |
36 | 37 | |
37 | 38 | public Rpc() { |
38 | 39 | super(); |
... | ... | @@ -50,5 +51,6 @@ public class Rpc extends BaseData<RpcId> implements HasTenantId { |
50 | 51 | this.request = rpc.getRequest(); |
51 | 52 | this.response = rpc.getResponse(); |
52 | 53 | this.status = rpc.getStatus(); |
54 | + this.additionalInfo = rpc.getAdditionalInfo(); | |
53 | 55 | } |
54 | 56 | } | ... | ... |
... | ... | @@ -15,6 +15,7 @@ |
15 | 15 | */ |
16 | 16 | package org.thingsboard.server.common.msg.rpc; |
17 | 17 | |
18 | +import com.fasterxml.jackson.annotation.JsonIgnore; | |
18 | 19 | import lombok.Data; |
19 | 20 | import org.thingsboard.server.common.data.id.DeviceId; |
20 | 21 | import org.thingsboard.server.common.data.id.TenantId; |
... | ... | @@ -35,5 +36,7 @@ public class ToDeviceRpcRequest implements Serializable { |
35 | 36 | private final long expirationTime; |
36 | 37 | private final ToDeviceRpcRequestBody body; |
37 | 38 | private final boolean persisted; |
39 | + @JsonIgnore | |
40 | + private final String additionalInfo; | |
38 | 41 | } |
39 | 42 | ... | ... |
... | ... | @@ -519,6 +519,7 @@ public class ModelConstants { |
519 | 519 | public static final String RPC_REQUEST = "request"; |
520 | 520 | public static final String RPC_RESPONSE = "response"; |
521 | 521 | public static final String RPC_STATUS = "status"; |
522 | + public static final String RPC_ADDITIONAL_INFO = ADDITIONAL_INFO_PROPERTY; | |
522 | 523 | |
523 | 524 | /** |
524 | 525 | * Edge constants. | ... | ... |
... | ... | @@ -36,6 +36,7 @@ import javax.persistence.Enumerated; |
36 | 36 | import javax.persistence.Table; |
37 | 37 | import java.util.UUID; |
38 | 38 | |
39 | +import static org.thingsboard.server.dao.model.ModelConstants.RPC_ADDITIONAL_INFO; | |
39 | 40 | import static org.thingsboard.server.dao.model.ModelConstants.RPC_DEVICE_ID; |
40 | 41 | import static org.thingsboard.server.dao.model.ModelConstants.RPC_EXPIRATION_TIME; |
41 | 42 | import static org.thingsboard.server.dao.model.ModelConstants.RPC_REQUEST; |
... | ... | @@ -72,6 +73,10 @@ public class RpcEntity extends BaseSqlEntity<Rpc> implements BaseEntity<Rpc> { |
72 | 73 | @Column(name = RPC_STATUS) |
73 | 74 | private RpcStatus status; |
74 | 75 | |
76 | + @Type(type = "json") | |
77 | + @Column(name = RPC_ADDITIONAL_INFO) | |
78 | + private JsonNode additionalInfo; | |
79 | + | |
75 | 80 | public RpcEntity() { |
76 | 81 | super(); |
77 | 82 | } |
... | ... | @@ -85,6 +90,7 @@ public class RpcEntity extends BaseSqlEntity<Rpc> implements BaseEntity<Rpc> { |
85 | 90 | this.request = rpc.getRequest(); |
86 | 91 | this.response = rpc.getResponse(); |
87 | 92 | this.status = rpc.getStatus(); |
93 | + this.additionalInfo = rpc.getAdditionalInfo(); | |
88 | 94 | } |
89 | 95 | |
90 | 96 | @Override |
... | ... | @@ -97,6 +103,7 @@ public class RpcEntity extends BaseSqlEntity<Rpc> implements BaseEntity<Rpc> { |
97 | 103 | rpc.setRequest(request); |
98 | 104 | rpc.setResponse(response); |
99 | 105 | rpc.setStatus(status); |
106 | + rpc.setAdditionalInfo(additionalInfo); | |
100 | 107 | return rpc; |
101 | 108 | } |
102 | 109 | } | ... | ... |
... | ... | @@ -100,6 +100,8 @@ public class TbSendRPCRequestNode implements TbNode { |
100 | 100 | params = gson.toJson(paramsEl); |
101 | 101 | } |
102 | 102 | |
103 | + String additionalInfo = gson.toJson(json.get(DataConstants.ADDITIONAL_INFO)); | |
104 | + | |
103 | 105 | RuleEngineDeviceRpcRequest request = RuleEngineDeviceRpcRequest.builder() |
104 | 106 | .oneway(oneway) |
105 | 107 | .method(json.get("method").getAsString()) |
... | ... | @@ -112,6 +114,7 @@ public class TbSendRPCRequestNode implements TbNode { |
112 | 114 | .expirationTime(expirationTime) |
113 | 115 | .restApiCall(restApiCall) |
114 | 116 | .persisted(persisted) |
117 | + .additionalInfo(additionalInfo) | |
115 | 118 | .build(); |
116 | 119 | |
117 | 120 | ctx.getRpcService().sendRpcRequestToDevice(request, ruleEngineDeviceRpcResponse -> { | ... | ... |