This is an automated email from the ASF dual-hosted git repository. zhaoqingran pushed a commit to branch script in repository https://gitbox.apache.org/repos/asf/hertzbeat.git
commit e5df1767426ca35f5957dd0a14a0365861b7c02c Author: Logic <[email protected]> AuthorDate: Mon Sep 2 18:56:07 2024 +0800 refactor(script-executor): rename JSR223ScriptExecutor to Jsr223ScriptExecutorThe class JSR223ScriptExecutor has been renamed to Jsr223ScriptExecutor to adhere toJava naming conventions. This is a part of the ongoing refactoring to standardize the codebase and improve readability. --- collector/pom.xml | 3 - .../collector/script/GraalJavaScriptExecutor.java | 2 - common/pom.xml | 4 +- .../hertzbeat/common/constants/ScriptTypeEnum.java | 81 +++++++++++----------- .../hertzbeat/common/script/ScriptBeanManager.java | 8 +-- .../hertzbeat/common/script/ScriptExecutor.java | 25 ++++--- .../common/script/ScriptExecutorFactory.java | 46 ++++++------ .../common/script/executor/JavaScriptExecutor.java | 2 +- ...riptExecutor.java => Jsr223ScriptExecutor.java} | 63 +++++++---------- .../support/exception/ScriptLoadException.java | 21 +++--- .../common/support/valid/ScriptValidator.java | 5 +- manager/pom.xml | 8 +++ pom.xml | 13 ++++ 13 files changed, 139 insertions(+), 142 deletions(-) diff --git a/collector/pom.xml b/collector/pom.xml index 5adb8164e..7ec17f3c8 100644 --- a/collector/pom.xml +++ b/collector/pom.xml @@ -215,13 +215,10 @@ <dependency> <groupId>org.graalvm.js</groupId> <artifactId>js</artifactId> - <version>23.0.5</version> </dependency> - <dependency> <groupId>org.graalvm.js</groupId> <artifactId>js-scriptengine</artifactId> - <version>23.0.5</version> </dependency> </dependencies> diff --git a/collector/src/main/java/org/apache/hertzbeat/collector/script/GraalJavaScriptExecutor.java b/collector/src/main/java/org/apache/hertzbeat/collector/script/GraalJavaScriptExecutor.java index 3150b58ea..c5cb35a8b 100644 --- a/collector/src/main/java/org/apache/hertzbeat/collector/script/GraalJavaScriptExecutor.java +++ b/collector/src/main/java/org/apache/hertzbeat/collector/script/GraalJavaScriptExecutor.java @@ -17,8 +17,6 @@ package org.apache.hertzbeat.collector.script; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; import org.apache.hertzbeat.common.cache.CacheFactory; import org.apache.hertzbeat.common.constants.ScriptTypeEnum; import org.apache.hertzbeat.common.script.ScriptExecutor; diff --git a/common/pom.xml b/common/pom.xml index de8768bba..e0116da7d 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -128,15 +128,15 @@ <artifactId>jutf7</artifactId> <version>${jutf7.version}</version> </dependency> + <dependency> <groupId>org.graalvm.js</groupId> <artifactId>js</artifactId> - <version>23.0.5</version> </dependency> + <dependency> <groupId>org.graalvm.js</groupId> <artifactId>js-scriptengine</artifactId> - <version>23.0.5</version> </dependency> </dependencies> </project> diff --git a/common/src/main/java/org/apache/hertzbeat/common/constants/ScriptTypeEnum.java b/common/src/main/java/org/apache/hertzbeat/common/constants/ScriptTypeEnum.java index 1e1c14467..0834452e7 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/constants/ScriptTypeEnum.java +++ b/common/src/main/java/org/apache/hertzbeat/common/constants/ScriptTypeEnum.java @@ -25,54 +25,55 @@ import lombok.Getter; @Getter public enum ScriptTypeEnum { - CUSTOM("custom", "custom"), - GROOVY("groovy", "groovy"), - QLEXPRESS("qlexpress", "qlexpress"), - JS("javascript", "js"), - PYTHON("python", "python"), - LUA("luaj", "lua"), - AVIATOR("AviatorScript", "aviator"), - JAVA("java", "java"), - KOTLIN("kotlin", "kotlin"); + CUSTOM("custom", "custom"), + GROOVY("groovy", "groovy"), + QLEXPRESS("qlexpress", "qlexpress"), + JS("javascript", "js"), + PYTHON("python", "python"), + LUA("luaj", "lua"), + AVIATOR("AviatorScript", "aviator"), + JAVA("java", "java"), + KOTLIN("kotlin", "kotlin"); - private String engineName; + private String engineName; - private String displayName; + private String displayName; - ScriptTypeEnum(String engineName, String displayName) { - this.engineName = engineName; - this.displayName = displayName; - } + ScriptTypeEnum(String engineName, String displayName) { + this.engineName = engineName; + this.displayName = displayName; + } public void setEngineName(String engineName) { - this.engineName = engineName; - } + this.engineName = engineName; + } public void setDisplayName(String displayName) { - this.displayName = displayName; - } + this.displayName = displayName; + } - public static ScriptTypeEnum getEnumByDisplayName(String displayName) { - for (ScriptTypeEnum e : ScriptTypeEnum.values()) { - if (e.getDisplayName().equals(displayName)) { - return e; - } - } - return null; - } + public static ScriptTypeEnum getEnumByDisplayName(String displayName) { + for (ScriptTypeEnum e : ScriptTypeEnum.values()) { + if (e.getDisplayName().equals(displayName)) { + return e; + } + } + return null; + } - /** - * 校验脚本类型是否合法 - * @param scriptType 脚本类型 - * @return true:合法,false:不合法 - */ - public static boolean checkScriptType(String scriptType) { - for (ScriptTypeEnum e : ScriptTypeEnum.values()) { - if (e.getDisplayName().equals(scriptType)) { - return true; - } - } - return false; - } + /** + * 校验脚本类型是否合法 + * + * @param scriptType 脚本类型 + * @return true:合法,false:不合法 + */ + public static boolean checkScriptType(String scriptType) { + for (ScriptTypeEnum e : ScriptTypeEnum.values()) { + if (e.getDisplayName().equals(scriptType)) { + return true; + } + } + return false; + } } diff --git a/common/src/main/java/org/apache/hertzbeat/common/script/ScriptBeanManager.java b/common/src/main/java/org/apache/hertzbeat/common/script/ScriptBeanManager.java index 5c40773ff..2ec4f67cf 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/script/ScriptBeanManager.java +++ b/common/src/main/java/org/apache/hertzbeat/common/script/ScriptBeanManager.java @@ -27,11 +27,11 @@ import lombok.Getter; */ public class ScriptBeanManager { - @Getter + @Getter private static final Map<String, Object> scriptBeanMap = new HashMap<>(); - public static void addScriptBean(String key, Object bean) { - scriptBeanMap.put(key, bean); - } + public static void addScriptBean(String key, Object bean) { + scriptBeanMap.put(key, bean); + } } diff --git a/common/src/main/java/org/apache/hertzbeat/common/script/ScriptExecutor.java b/common/src/main/java/org/apache/hertzbeat/common/script/ScriptExecutor.java index 74986f70f..79b250b88 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/script/ScriptExecutor.java +++ b/common/src/main/java/org/apache/hertzbeat/common/script/ScriptExecutor.java @@ -18,7 +18,6 @@ package org.apache.hertzbeat.common.script; import org.apache.hertzbeat.common.constants.ScriptTypeEnum; -import org.graalvm.polyglot.Source; /** * script executor interface @@ -26,23 +25,23 @@ import org.graalvm.polyglot.Source; */ public abstract class ScriptExecutor { - public Object execute(String scriptKey) throws Exception{ + public Object execute(String scriptKey) throws Exception { return executeScript(scriptKey); } - public abstract Object executeScript(String scriptKey) throws Exception; + public abstract Object executeScript(String scriptKey) throws Exception; - public abstract void cleanCache(); + public abstract void cleanCache(); - public abstract ScriptTypeEnum scriptType(); + public abstract ScriptTypeEnum scriptType(); - /** - * compile script - * - * @param script script content - * @return boolean - * @throws Exception if compile failed - */ - public abstract Object compile(String script) throws Exception; + /** + * compile script + * + * @param script script content + * @return boolean + * @throws Exception if compile failed + */ + public abstract Object compile(String script) throws Exception; } diff --git a/common/src/main/java/org/apache/hertzbeat/common/script/ScriptExecutorFactory.java b/common/src/main/java/org/apache/hertzbeat/common/script/ScriptExecutorFactory.java index 0e4ac8b58..0c81b22ee 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/script/ScriptExecutorFactory.java +++ b/common/src/main/java/org/apache/hertzbeat/common/script/ScriptExecutorFactory.java @@ -36,35 +36,33 @@ import org.springframework.stereotype.Component; @Component public class ScriptExecutorFactory { - private final Map<String, ScriptExecutor> scriptExecutorMap = new HashMap<>(); + private final Map<String, ScriptExecutor> scriptExecutorMap = new HashMap<>(); - private final String NONE_LANGUAGE = "none"; + @Autowired + private List<ScriptExecutor> scriptExecutors; - @Autowired - private List<ScriptExecutor> scriptExecutors; + @PostConstruct + private void init() { + for (ScriptExecutor executor : scriptExecutors) { + scriptExecutorMap.put(executor.scriptType().getDisplayName(), executor); + } + } - @PostConstruct - private void init() { - for (ScriptExecutor executor : scriptExecutors) { - scriptExecutorMap.put(executor.scriptType().getDisplayName(), executor); - } - } + public ScriptExecutor getScriptExecutor(String language) { + if (StringUtils.isBlank(language)) { + language = "none"; + } - public ScriptExecutor getScriptExecutor(String language) { - if (StringUtils.isBlank(language)) { - language = NONE_LANGUAGE; - } + ScriptExecutor executor = scriptExecutorMap.get(language); - ScriptExecutor executor = scriptExecutorMap.get(language); + if (executor == null) { + throw new ScriptLoadException("script component failed to load"); + } - if (executor == null) { - throw new ScriptLoadException("script component failed to load"); - } + return executor; + } - return executor; - } - - public void cleanScriptCache() { - this.scriptExecutorMap.forEach((key, value) -> value.cleanCache()); - } + public void cleanScriptCache() { + this.scriptExecutorMap.forEach((key, value) -> value.cleanCache()); + } } diff --git a/common/src/main/java/org/apache/hertzbeat/common/script/executor/JavaScriptExecutor.java b/common/src/main/java/org/apache/hertzbeat/common/script/executor/JavaScriptExecutor.java index a56374f3f..7a129e1b5 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/script/executor/JavaScriptExecutor.java +++ b/common/src/main/java/org/apache/hertzbeat/common/script/executor/JavaScriptExecutor.java @@ -23,7 +23,7 @@ import org.apache.hertzbeat.common.constants.ScriptTypeEnum; * This class is used to execute JavaScript code in the plugin. * This code references liteflow, thanks to the author Bryan. */ -public class JavaScriptExecutor extends JSR223ScriptExecutor { +public class JavaScriptExecutor extends Jsr223ScriptExecutor { @Override protected String convertScript(String script) { return String.format("function process(){%s} process();", script); diff --git a/common/src/main/java/org/apache/hertzbeat/common/script/executor/JSR223ScriptExecutor.java b/common/src/main/java/org/apache/hertzbeat/common/script/executor/Jsr223ScriptExecutor.java similarity index 54% rename from common/src/main/java/org/apache/hertzbeat/common/script/executor/JSR223ScriptExecutor.java rename to common/src/main/java/org/apache/hertzbeat/common/script/executor/Jsr223ScriptExecutor.java index 092c3503e..ae42bf720 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/script/executor/JSR223ScriptExecutor.java +++ b/common/src/main/java/org/apache/hertzbeat/common/script/executor/Jsr223ScriptExecutor.java @@ -35,52 +35,37 @@ import org.graalvm.polyglot.Source; * JSR223 script engine * This code references dromara/liteflow, thanks to the author Bryan. */ -@Slf4j -public abstract class JSR223ScriptExecutor extends ScriptExecutor { - - - private ScriptEngine scriptEngine; - - private final Map<String, CompiledScript> compiledScriptMap = new ConcurrentHashMap<>(); - -// @Override -// public ScriptExecutor init() { -// ScriptEngineManager scriptEngineManager = new ScriptEngineManager(); -// scriptEngine = scriptEngineManager.getEngineByName(this.scriptType().getEngineName()); -// return this; -// } - - protected String convertScript(String script) { - return script; - } +@Slf4j +public abstract class Jsr223ScriptExecutor extends ScriptExecutor { + private ScriptEngine scriptEngine; + private final Map<String, CompiledScript> compiledScriptMap = new ConcurrentHashMap<>(); - @Override - public Object executeScript(String scriptKey) throws Exception { -// if (!compiledScriptMap.containsKey(wrap.getNodeId())) { -// String errorMsg = String.format("script for node[%s] is not loaded", wrap.getNodeId()); -// throw new ScriptLoadException(errorMsg); -// } + protected String convertScript(String script) { + return script; + } - CompiledScript compiledScript = compiledScriptMap.get(scriptKey); - Bindings bindings = new SimpleBindings(); + @Override + public Object executeScript(String scriptKey) throws Exception { - return compiledScript.eval(bindings); - } + CompiledScript compiledScript = compiledScriptMap.get(scriptKey); + Bindings bindings = new SimpleBindings(); - @Override - public void cleanCache() { - compiledScriptMap.clear(); - } + return compiledScript.eval(bindings); + } - @Override - public Object compile(String script) throws ScriptException { - if(scriptEngine == null) { - log.error("script engine has not init"); - } - return ((Compilable) scriptEngine).compile(convertScript(script)); - } + @Override + public void cleanCache() { + compiledScriptMap.clear(); + } + @Override + public Object compile(String script) throws ScriptException { + if (scriptEngine == null) { + log.error("script engine has not init"); + } + return ((Compilable) scriptEngine).compile(convertScript(script)); + } } diff --git a/common/src/main/java/org/apache/hertzbeat/common/support/exception/ScriptLoadException.java b/common/src/main/java/org/apache/hertzbeat/common/support/exception/ScriptLoadException.java index 68ba2e982..8c1b0d11c 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/support/exception/ScriptLoadException.java +++ b/common/src/main/java/org/apache/hertzbeat/common/support/exception/ScriptLoadException.java @@ -27,18 +27,17 @@ import lombok.Setter; @Setter public class ScriptLoadException extends RuntimeException { - @Serial - private static final long serialVersionUID = 1L; + @Serial + private static final long serialVersionUID = 1L; - private String message; + private String message; - public ScriptLoadException(String message) { - this.message = message; - } - - @Override - public String getMessage() { - return message; - } + public ScriptLoadException(String message) { + this.message = message; + } + @Override + public String getMessage() { + return message; + } } diff --git a/common/src/main/java/org/apache/hertzbeat/common/support/valid/ScriptValidator.java b/common/src/main/java/org/apache/hertzbeat/common/support/valid/ScriptValidator.java index 6f7ef7e86..d3df0d8e2 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/support/valid/ScriptValidator.java +++ b/common/src/main/java/org/apache/hertzbeat/common/support/valid/ScriptValidator.java @@ -67,9 +67,8 @@ public class ScriptValidator { return false; } - ScriptExecutor scriptExecutor = (scriptType != null) ? - scriptExecutors.get(scriptType) : - scriptExecutors.values().iterator().next(); + ScriptExecutor scriptExecutor = (scriptType != null) + ? scriptExecutors.get(scriptType) : scriptExecutors.values().iterator().next(); try { scriptExecutor.compile(script); diff --git a/manager/pom.xml b/manager/pom.xml index 34debeb78..e1185dbe0 100644 --- a/manager/pom.xml +++ b/manager/pom.xml @@ -216,6 +216,14 @@ </exclusion> </exclusions> </dependency> + <dependency> + <groupId>org.graalvm.js</groupId> + <artifactId>js</artifactId> + </dependency> + <dependency> + <groupId>org.graalvm.js</groupId> + <artifactId>js-scriptengine</artifactId> + </dependency> </dependencies> <build> diff --git a/pom.xml b/pom.xml index 1a3541176..fcc42e653 100644 --- a/pom.xml +++ b/pom.xml @@ -160,6 +160,8 @@ <spring-boot-starter-sureness.version>1.1.0</spring-boot-starter-sureness.version> <huawei.sdk.version>3.1.37</huawei.sdk.version> <huawei.obs.version>3.23.5</huawei.obs.version> + + <js.version>23.0.5</js.version> <iotdb-session.version>0.13.3</iotdb-session.version> @@ -432,6 +434,17 @@ <artifactId>netty-all</artifactId> <version>${netty.version}</version> </dependency> + <!-- script --> + <dependency> + <groupId>org.graalvm.js</groupId> + <artifactId>js</artifactId> + <version>${js.version}</version> + </dependency> + <dependency> + <groupId>org.graalvm.js</groupId> + <artifactId>js-scriptengine</artifactId> + <version>${js.version}</version> + </dependency> </dependencies> </dependencyManagement> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
