diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbJsonPathNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbJsonPathNode.java
index 4656a072f0..b5c75f26c9 100644
--- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbJsonPathNode.java
+++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbJsonPathNode.java
@@ -28,7 +28,6 @@ import org.thingsboard.rule.engine.api.TbNode;
import org.thingsboard.rule.engine.api.TbNodeConfiguration;
import org.thingsboard.rule.engine.api.TbNodeException;
import org.thingsboard.rule.engine.api.util.TbNodeUtils;
-import org.thingsboard.server.common.data.StringUtils;
import org.thingsboard.server.common.data.plugin.ComponentType;
import org.thingsboard.server.common.msg.TbMsg;
@@ -39,8 +38,10 @@ import java.util.concurrent.ExecutionException;
type = ComponentType.TRANSFORMATION,
name = "json path",
configClazz = TbJsonPathNodeConfiguration.class,
- nodeDescription = "JSONPath expression from message",
- nodeDetails = "",
+ nodeDescription = "Extracts json element or set of elements from a message by JSONPath expression.",
+ nodeDetails = "JSONPath expression specifies a path to an element or a set of elements in a JSON structure.
"
+ + "'$' represents the root object or array. If JSONPath expression evaluation failed, incoming "
+ + "age routes via Failure chain, otherwise Success chain is used.",
uiResources = {"static/rulenode/rulenode-core-config.js"},
icon = "functions",
configDirective = "tbTransformationNodeJsonPathConfig"
@@ -57,9 +58,6 @@ public class TbJsonPathNode implements TbNode {
this.configurationJsonPath = Configuration.builder()
.jsonProvider(new JacksonJsonNodeJsonProvider())
.build();
- if (StringUtils.isEmpty(config.getJsonPath())) {
- throw new IllegalArgumentException("JsonPath expression is not specified");
- }
this.jsonPath = JsonPath.compile(config.getJsonPath());
}
@@ -67,16 +65,12 @@ public class TbJsonPathNode implements TbNode {
public void onMsg(TbContext ctx, TbMsg msg) throws ExecutionException, InterruptedException, TbNodeException {
try {
JsonNode jsonPathData = jsonPath.read(msg.getData(), this.configurationJsonPath);
- ctx.tellSuccess(createNewMsg(msg, jsonPathData));
+ ctx.tellSuccess(TbMsg.transformMsg(msg, msg.getType(), msg.getOriginator(), msg.getMetaData(), JacksonUtil.toString(jsonPathData)));
} catch (PathNotFoundException e) {
ctx.tellFailure(msg, e);
}
}
- private TbMsg createNewMsg(TbMsg msg, JsonNode msgNode) {
- return TbMsg.newMsg(msg.getQueueName(), msg.getType(), msg.getOriginator(), msg.getMetaData(), JacksonUtil.toString(msgNode));
- }
-
@Override
public void destroy() {
diff --git a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbJsonPathNodeTest.java b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbJsonPathNodeTest.java
index 414d665abf..46b78d8d69 100644
--- a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbJsonPathNodeTest.java
+++ b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbJsonPathNodeTest.java
@@ -169,4 +169,4 @@ public class TbJsonPathNodeTest {
);
return TbMsg.newMsg("POST_ATTRIBUTES_REQUEST", entityId, new TbMsgMetaData(mdMap), data, callback);
}
-}
\ No newline at end of file
+}