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 {
|
} else {
|
||||||
args[0] = new HashMap<>();
|
args[0] = new HashMap<>();
|
||||||
}
|
}
|
||||||
args[1] = msg.getMetaData().getData();
|
args[1] = new HashMap<>(msg.getMetaData().getData());
|
||||||
args[2] = msg.getType();
|
args[2] = msg.getType();
|
||||||
return args;
|
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("Compiler");
|
||||||
AbstractParser.CLASS_LITERALS.remove("ThreadLocal");
|
AbstractParser.CLASS_LITERALS.remove("ThreadLocal");
|
||||||
AbstractParser.CLASS_LITERALS.remove("SecurityManager");
|
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()));
|
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 = "" +
|
static final String ALARM_DETAILS_BUILD_MVEL_TEMPLATE = "" +
|
||||||
"var details = {};\n" +
|
"var details = {};\n" +
|
||||||
"if (metadata.prevAlarmDetails) {\n" +
|
"if (metadata.prevAlarmDetails != null) {\n" +
|
||||||
" details = JSON.parse(metadata.prevAlarmDetails);\n" +
|
" details = JSON.parse(metadata.prevAlarmDetails);\n" +
|
||||||
" //remove prevAlarmDetails from metadata\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" +
|
" //now metadata is the same as it comes IN this rule node\n" +
|
||||||
"}\n" +
|
"}\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user