Minor fixes. Update rule node UI
This commit is contained in:
parent
4ea96fa289
commit
bfdc4a0801
@ -128,7 +128,7 @@ public class RuleNodeMvelScriptEngine extends RuleNodeScriptEngine<MvelInvokeSer
|
||||
} else {
|
||||
args[0] = new HashMap<>();
|
||||
}
|
||||
args[1] = msg.getMetaData().getData();
|
||||
args[1] = new HashMap<>(msg.getMetaData().getData());
|
||||
args[2] = msg.getType();
|
||||
return args;
|
||||
}
|
||||
|
||||
@ -0,0 +1,59 @@
|
||||
/**
|
||||
* Copyright © 2016-2022 The Thingsboard Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.thingsboard.script.api.mvel;
|
||||
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import org.thingsboard.common.util.JacksonUtil;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class TbJson {
|
||||
|
||||
public static String stringify(Object value) {
|
||||
return value != null ? JacksonUtil.toString(value) : "null";
|
||||
}
|
||||
|
||||
public static Object parse(String value) throws IOException {
|
||||
if (value != null) {
|
||||
JsonNode node = JacksonUtil.toJsonNode(value);
|
||||
if (node.isObject()) {
|
||||
return JacksonUtil.convertValue(node, Map.class);
|
||||
} else if (node.isArray()) {
|
||||
return JacksonUtil.convertValue(node, List.class);
|
||||
} else if (node.isDouble()) {
|
||||
return node.doubleValue();
|
||||
} else if (node.isLong()) {
|
||||
return node.longValue();
|
||||
} else if (node.isInt()) {
|
||||
return node.intValue();
|
||||
} else if (node.isBoolean()) {
|
||||
return node.booleanValue();
|
||||
} else if (node.isTextual()) {
|
||||
return node.asText();
|
||||
} else if (node.isBinary()) {
|
||||
return node.binaryValue();
|
||||
} else if (node.isNull()) {
|
||||
return null;
|
||||
} else {
|
||||
return node.asText();
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -46,6 +46,8 @@ public class TbMvelClassLoader extends URLClassLoader {
|
||||
AbstractParser.CLASS_LITERALS.remove("Compiler");
|
||||
AbstractParser.CLASS_LITERALS.remove("ThreadLocal");
|
||||
AbstractParser.CLASS_LITERALS.remove("SecurityManager");
|
||||
AbstractParser.CLASS_LITERALS.put("JSON", TbJson.class);
|
||||
AbstractParser.LITERALS.put("JSON", TbJson.class);
|
||||
|
||||
AbstractParser.CLASS_LITERALS.values().forEach(val -> allowedClasses.add(((Class) val).getName()));
|
||||
}
|
||||
|
||||
@ -35,10 +35,10 @@ public abstract class TbAbstractAlarmNodeConfiguration {
|
||||
|
||||
static final String ALARM_DETAILS_BUILD_MVEL_TEMPLATE = "" +
|
||||
"var details = {};\n" +
|
||||
"if (metadata.prevAlarmDetails) {\n" +
|
||||
"if (metadata.prevAlarmDetails != null) {\n" +
|
||||
" details = JSON.parse(metadata.prevAlarmDetails);\n" +
|
||||
" //remove prevAlarmDetails from metadata\n" +
|
||||
" delete metadata.prevAlarmDetails;\n" +
|
||||
" metadata.remove('prevAlarmDetails');\n" +
|
||||
" //now metadata is the same as it comes IN this rule node\n" +
|
||||
"}\n" +
|
||||
"\n" +
|
||||
|
||||
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user