Browse Source

nodeDetails

pull/6999/head
Yuriy Lytvynchuk 4 years ago
parent
commit
7b2a6499d0
  1. 2
      common/dao-api/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsService.java
  2. 2
      dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsServiceImpl.java
  3. 21
      rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbFetchDeviceCredentialsNode.java
  4. 7
      rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/metadata/TbFetchDeviceCredentialsNodeTest.java

2
common/dao-api/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsService.java

@ -34,7 +34,7 @@ public interface DeviceCredentialsService {
void formatCredentials(DeviceCredentials deviceCredentials); void formatCredentials(DeviceCredentials deviceCredentials);
JsonNode сredentialsInfo(DeviceCredentials deviceCredentials); JsonNode credentialsInfo(DeviceCredentials deviceCredentials);
void deleteDeviceCredentials(TenantId tenantId, DeviceCredentials deviceCredentials); void deleteDeviceCredentials(TenantId tenantId, DeviceCredentials deviceCredentials);

2
dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsServiceImpl.java

@ -139,7 +139,7 @@ public class DeviceCredentialsServiceImpl extends AbstractCachedEntityService<St
} }
@Override @Override
public JsonNode сredentialsInfo(DeviceCredentials deviceCredentials) { public JsonNode credentialsInfo(DeviceCredentials deviceCredentials) {
switch (deviceCredentials.getCredentialsType()) { switch (deviceCredentials.getCredentialsType()) {
case ACCESS_TOKEN: case ACCESS_TOKEN:
return JacksonUtil.valueToTree(deviceCredentials.getCredentialsId()); return JacksonUtil.valueToTree(deviceCredentials.getCredentialsId());

21
rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbFetchDeviceCredentialsNode.java

@ -15,6 +15,7 @@
*/ */
package org.thingsboard.rule.engine.metadata; package org.thingsboard.rule.engine.metadata;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.databind.node.ObjectNode;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.BooleanUtils;
@ -40,11 +41,11 @@ import java.util.concurrent.ExecutionException;
type = ComponentType.ENRICHMENT, type = ComponentType.ENRICHMENT,
name = "fetch device credentials", name = "fetch device credentials",
configClazz = TbFetchDeviceCredentialsNodeConfiguration.class, configClazz = TbFetchDeviceCredentialsNodeConfiguration.class,
nodeDescription = "Adds <b>сredentialsType</b> and <b>сredentials</b> property to the message metadata if the " + nodeDescription = "Fetch device credentials for message originator",
" configuration parameter <b>fetchToMetadata</b> is set to <code>true</code>, otherwise, adds properties " + nodeDetails = "Adds <b>credentialsType</b> and <b>credentials</b> properties to the message metadata if the " +
" to the message data", "configuration parameter <b>fetchToMetadata</b> is set to <code>true</code>, otherwise, adds properties " +
nodeDetails = "If originator type is not DEVICE or failed get device credentials, the <code>Failure</code> " + "to the message data. If originator type is not <b>DEVICE</b> or rule node failed to get device credentials " +
" chain is used, otherwise <code>Success</code> chain is used", "- send Message via <code>Failure</code> chain, otherwise <code>Success</code> chain is used.",
uiResources = {"static/rulenode/rulenode-core-config.js"}, uiResources = {"static/rulenode/rulenode-core-config.js"},
configDirective = "tbEnrichmentNodeFetchDeviceCredentialsConfig", configDirective = "tbEnrichmentNodeFetchDeviceCredentialsConfig",
icon = "functions" icon = "functions"
@ -78,15 +79,17 @@ public class TbFetchDeviceCredentialsNode implements TbNode {
} }
TbMsg transformedMsg; TbMsg transformedMsg;
String credentialsType = deviceCredentials.getCredentialsType().name();
JsonNode credentialsInfo = ctx.getDeviceCredentialsService().credentialsInfo(deviceCredentials);
if (fetchToMetadata) { if (fetchToMetadata) {
TbMsgMetaData metaData = msg.getMetaData(); TbMsgMetaData metaData = msg.getMetaData();
metaData.putValue(CREDENTIALS_TYPE, String.valueOf(deviceCredentials.getCredentialsType())); metaData.putValue(CREDENTIALS_TYPE, credentialsType);
metaData.putValue(CREDENTIALS, JacksonUtil.toString(ctx.getDeviceCredentialsService().сredentialsInfo(deviceCredentials))); metaData.putValue(CREDENTIALS, JacksonUtil.toString(credentialsInfo));
transformedMsg = TbMsg.transformMsg(msg, msg.getType(), originator, metaData, msg.getData()); transformedMsg = TbMsg.transformMsg(msg, msg.getType(), originator, metaData, msg.getData());
} else { } else {
ObjectNode data = (ObjectNode) JacksonUtil.toJsonNode(msg.getData()); ObjectNode data = (ObjectNode) JacksonUtil.toJsonNode(msg.getData());
data.set(CREDENTIALS_TYPE, JacksonUtil.valueToTree(deviceCredentials.getCredentialsType())); data.put(CREDENTIALS_TYPE, credentialsType);
data.set(CREDENTIALS, ctx.getDeviceCredentialsService().сredentialsInfo(deviceCredentials)); data.set(CREDENTIALS, credentialsInfo);
transformedMsg = TbMsg.transformMsg(msg, msg.getType(), originator, msg.getMetaData(), JacksonUtil.toString(data)); transformedMsg = TbMsg.transformMsg(msg, msg.getType(), originator, msg.getMetaData(), JacksonUtil.toString(data));
} }
ctx.tellSuccess(transformedMsg); ctx.tellSuccess(transformedMsg);

7
rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/metadata/TbFetchDeviceCredentialsNodeTest.java

@ -45,6 +45,7 @@ import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times; import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.thingsboard.server.common.data.security.DeviceCredentialsType.ACCESS_TOKEN;
public class TbFetchDeviceCredentialsNodeTest { public class TbFetchDeviceCredentialsNodeTest {
final ObjectMapper mapper = new ObjectMapper(); final ObjectMapper mapper = new ObjectMapper();
@ -71,11 +72,13 @@ public class TbFetchDeviceCredentialsNodeTest {
willReturn(deviceCredentialsService).given(ctx).getDeviceCredentialsService(); willReturn(deviceCredentialsService).given(ctx).getDeviceCredentialsService();
willAnswer(invocation -> { willAnswer(invocation -> {
return new DeviceCredentials(); DeviceCredentials deviceCredentials = new DeviceCredentials();
deviceCredentials.setCredentialsType(ACCESS_TOKEN);
return deviceCredentials;
}).given(deviceCredentialsService).findDeviceCredentialsByDeviceId(any(), any()); }).given(deviceCredentialsService).findDeviceCredentialsByDeviceId(any(), any());
willAnswer(invocation -> { willAnswer(invocation -> {
return JacksonUtil.newObjectNode(); return JacksonUtil.newObjectNode();
}).given(deviceCredentialsService).сredentialsInfo(any()); }).given(deviceCredentialsService).credentialsInfo(any());
} }
@AfterEach @AfterEach

Loading…
Cancel
Save