Minor fixes. Update rule node UI

This commit is contained in:
Igor Kulikov 2022-10-20 12:28:32 +03:00
parent 4ea96fa289
commit bfdc4a0801
5 changed files with 65 additions and 4 deletions

View File

@ -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;
}

View File

@ -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;
}
}
}

View File

@ -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()));
}

View File

@ -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" +