Fix for test script node function
This commit is contained in:
parent
9746df84ea
commit
52d1b756fa
@ -18,6 +18,7 @@ package org.thingsboard.server.controller;
|
|||||||
import com.fasterxml.jackson.core.type.TypeReference;
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
import com.fasterxml.jackson.databind.JsonNode;
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.fasterxml.jackson.databind.node.ArrayNode;
|
||||||
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.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -432,4 +433,22 @@ public class RuleChainController extends BaseController {
|
|||||||
return objectMapper.writeValueAsString(msgData);
|
return objectMapper.writeValueAsString(msgData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String msgToOutput(List<TbMsg> msgs) throws Exception {
|
||||||
|
ArrayNode resultNode = objectMapper.createArrayNode();
|
||||||
|
for (TbMsg msg:msgs) {
|
||||||
|
ObjectNode msgData = objectMapper.createObjectNode();
|
||||||
|
if (!StringUtils.isEmpty(msg.getData())) {
|
||||||
|
msgData.set("msg", objectMapper.readTree(msg.getData()));
|
||||||
|
}
|
||||||
|
Map<String, String> metadata = msg.getMetaData().getData();
|
||||||
|
msgData.set("metadata", objectMapper.valueToTree(metadata));
|
||||||
|
msgData.put("msgType", msg.getType());
|
||||||
|
resultNode.add(msgData);
|
||||||
|
}
|
||||||
|
if (resultNode.size() == 1) {
|
||||||
|
return objectMapper.writeValueAsString(resultNode.get(0));
|
||||||
|
}
|
||||||
|
return objectMapper.writeValueAsString(resultNode);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -108,13 +108,18 @@ public class RuleNodeJsScriptEngine implements org.thingsboard.rule.engine.api.S
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TbMsg executeUpdate(TbMsg msg) throws ScriptException {
|
public List<TbMsg> executeUpdate(TbMsg msg) throws ScriptException {
|
||||||
JsonNode result = executeScript(msg);
|
JsonNode result = executeScript(msg);
|
||||||
if (!result.isObject()) {
|
if (result.isObject()) {
|
||||||
|
return Collections.singletonList(unbindMsg(result, msg));
|
||||||
|
} else if (result.isArray()){
|
||||||
|
List<TbMsg> res = new ArrayList<>(result.size());
|
||||||
|
result.forEach(jsonObject -> res.add(unbindMsg(jsonObject, msg)));
|
||||||
|
return res;
|
||||||
|
} else {
|
||||||
log.warn("Wrong result type: {}", result.getNodeType());
|
log.warn("Wrong result type: {}", result.getNodeType());
|
||||||
throw new ScriptException("Wrong result type: " + result.getNodeType());
|
throw new ScriptException("Wrong result type: " + result.getNodeType());
|
||||||
}
|
}
|
||||||
return unbindMsg(result, msg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -25,7 +25,7 @@ import java.util.Set;
|
|||||||
|
|
||||||
public interface ScriptEngine {
|
public interface ScriptEngine {
|
||||||
|
|
||||||
TbMsg executeUpdate(TbMsg msg) throws ScriptException;
|
List<TbMsg> executeUpdate(TbMsg msg) throws ScriptException;
|
||||||
|
|
||||||
ListenableFuture<List<TbMsg>> executeUpdateAsync(TbMsg msg);
|
ListenableFuture<List<TbMsg>> executeUpdateAsync(TbMsg msg);
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user