package com.qianwen.core.tool.utils; import java.util.HashMap; import java.util.Map; import java.util.function.Function; import java.util.regex.Pattern; import org.apache.commons.beanutils.BeanUtilsBean2; import org.apache.commons.codec.digest.DigestUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.qianwen.core.tool.script.engine.DynamicScriptEngine; import com.qianwen.core.tool.script.engine.DynamicScriptEngineFactory; import org.springframework.util.StringUtils; /* loaded from: blade-core-tool-9.3.0.0-SNAPSHOT.jar:org/springblade/core/tool/utils/ExpressionUtils.class */ public class ExpressionUtils { private static final Logger log = LoggerFactory.getLogger(ExpressionUtils.class); private static final Pattern PATTERN = Pattern.compile("(?<=\\$\\{)(.+?)(?=})"); public static Map getDefaultVar() { return new HashMap(); } public static Map getDefaultVar(Map var) { Map vars = getDefaultVar(); vars.putAll(var); return vars; } public static String analytical(String expression, String language) throws Exception { return analytical(expression, new HashMap(), language); } public static String analytical(String expression, Map vars, String language) { if (!expression.contains("${")) { return expression; } DynamicScriptEngine engine = DynamicScriptEngineFactory.getEngine(language); if (engine == null) { return expression; } return TemplateParser.parse(expression, (Function) var -> { if (StringUtils.isEmpty(var)) { return StringPool.EMPTY; } if ("spel".equalsIgnoreCase(language) && !var.contains(StringPool.HASH)) { try { Object fast = BeanUtilsBean2.getInstance().getPropertyUtils().getProperty(vars, var); if (fast != null) { return fast.toString(); } } catch (Exception e) { return StringPool.EMPTY; } } String id = DigestUtils.md5Hex(var); try { if (!engine.compiled(id)) { engine.compile(id, var); } try { return String.valueOf(engine.execute(id, vars).getIfSuccess()); } catch (Exception e2) { log.error(e2.getMessage(), e2); return StringPool.EMPTY; } } catch (RuntimeException e3) { throw e3; } catch (Exception e4) { throw new RuntimeException(e4); } }); } }