|
@@ -23,11 +23,11 @@ public class ScriptPayloadParserBuilder implements PayloadParserBuilderStrategy
|
|
@SneakyThrows
|
|
@SneakyThrows
|
|
public PayloadParser build(Values config) {
|
|
public PayloadParser build(Values config) {
|
|
String script = config.getValue("script")
|
|
String script = config.getValue("script")
|
|
- .map(Value::asString)
|
|
|
|
- .orElseThrow(() -> new IllegalArgumentException("script不能为空"));
|
|
|
|
|
|
+ .map(Value::asString)
|
|
|
|
+ .orElseThrow(() -> new IllegalArgumentException("script不能为空"));
|
|
String lang = config.getValue("lang")
|
|
String lang = config.getValue("lang")
|
|
- .map(Value::asString)
|
|
|
|
- .orElseThrow(() -> new IllegalArgumentException("lang不能为空"));
|
|
|
|
|
|
+ .map(Value::asString)
|
|
|
|
+ .orElseThrow(() -> new IllegalArgumentException("lang不能为空"));
|
|
|
|
|
|
DynamicScriptEngine engine = DynamicScriptEngineFactory.getEngine(lang);
|
|
DynamicScriptEngine engine = DynamicScriptEngineFactory.getEngine(lang);
|
|
if (engine == null) {
|
|
if (engine == null) {
|
|
@@ -35,8 +35,9 @@ public class ScriptPayloadParserBuilder implements PayloadParserBuilderStrategy
|
|
}
|
|
}
|
|
PipePayloadParser parser = new PipePayloadParser();
|
|
PipePayloadParser parser = new PipePayloadParser();
|
|
String id = DigestUtils.md5Hex(script);
|
|
String id = DigestUtils.md5Hex(script);
|
|
-
|
|
|
|
- engine.compile(id, script);
|
|
|
|
|
|
+ if (!engine.compiled(id)) {
|
|
|
|
+ engine.compile(id, script);
|
|
|
|
+ }
|
|
Map<String, Object> ctx = new HashMap<>();
|
|
Map<String, Object> ctx = new HashMap<>();
|
|
ctx.put("parser", parser);
|
|
ctx.put("parser", parser);
|
|
engine.execute(id, ctx).getIfSuccess();
|
|
engine.execute(id, ctx).getIfSuccess();
|