提交 36101754 authored 作者: 黄夏豪's avatar 黄夏豪

fix(base): 修改了#{}变量的正则

上级 86ce261b
......@@ -82,7 +82,7 @@ public class CheckPointActuator implements Actuator {
public CheckPointResultDetail jsonPathCheck(String jsonPathCheckPoint, Object jsonObject,Long envId,Long projectId) {
String expression = jsonPathCheckPoint;
try {
expression = completeExpressionUtil.completeDynamicVariable(
expression = completeExpressionUtil.completeVariable(
expression,
envId,
projectId)
......@@ -155,7 +155,7 @@ public class CheckPointActuator implements Actuator {
List<CheckPointResultDetail> resultDetails = new ArrayList<>();
String[] split = containCheckPoint.split(",");
for (String containExpression : split) {
String parseContainExpression = completeExpressionUtil.completeDynamicVariable(
String parseContainExpression = completeExpressionUtil.completeVariable(
containExpression,
envId,
projectId)
......@@ -185,7 +185,7 @@ public class CheckPointActuator implements Actuator {
List<CheckPointResultDetail> resultDetails = new ArrayList<>();
String[] split = noContainCheckPoint.split(",");
for (String noContainExpression : split) {
String parseNoContainExpression = completeExpressionUtil.completeDynamicVariable(
String parseNoContainExpression = completeExpressionUtil.completeVariable(
noContainExpression,
envId,
projectId)
......
......@@ -9,10 +9,7 @@ import org.matrix.database.service.IEnvironmentService;
import org.matrix.exception.GlobalException;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.*;
/**
* EnvironmentActuator.
......@@ -28,10 +25,11 @@ public class EnvironmentActuator implements Actuator {
private final IEnvironmentService envService;
//language=RegExp
/**
* 用于正则找出形如#{id}这样的环境
*/
public static final String ENV_VAR_EXP = "(#\\{(\\w*)})";
public static final String ENV_VAR_EXP = "(#\\{([\\w|[\\u4e00-\\u9fa5]]*)})";
/**
* 替换掉SQL表达式中的形如#{id}这样的环境共享变量
......@@ -51,6 +49,10 @@ public class EnvironmentActuator implements Actuator {
.orElseThrow(() -> new GlobalException("没有找到对应ID的example(env)对象,id = " + envId));
Map<String, String> envMap = env.getVariable();
List<String> envList = ReUtil.findAll(ENV_VAR_EXP, sqlExp, 2, new ArrayList<>());
// 对传入的表达式进行一次验证
if (envList.size() == 0) {
throw new GlobalException(String.format("没有在表达式中 %s 寻找到环境变量,您需要提供例如 `#{var_example}`这样的语法", sqlExp));
}
// 到对应env的变量池里找到值替换掉
for (String key : envList) {
if (envMap.containsKey(key)) {
......
......@@ -3,22 +3,7 @@ package org.matrix.actuators.httpclient;
import com.alibaba.fastjson.JSONObject;
import io.netty.handler.codec.http.HttpHeaderValues;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.client.CookieStore;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.config.SocketConfig;
import org.apache.http.conn.HttpHostConnectException;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.TrustStrategy;
import org.apache.http.impl.NoConnectionReuseStrategy;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.DefaultHttpRequestRetryHandler;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.matrix.actuators.Actuator;
import org.matrix.actuators.util.CompleteExpressionUtil;
import org.apache.http.Consts;
......@@ -32,7 +17,6 @@ import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.matrix.config.HttpRequestConfig;
......@@ -52,17 +36,14 @@ import java.io.FileInputStream;
import java.io.IOException;
import java.net.URISyntaxException;
import java.nio.charset.StandardCharsets;
import java.security.cert.X509Certificate;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import static org.matrix.enums.ModuleType.CASE_ACTUATOR;
import static org.matrix.enums.ModuleType.HTTP_ACTUATOR;
/**
......@@ -99,13 +80,13 @@ public class HttpClientActuator implements Actuator {
for (RequestHeader header : httpRequestDetail.getHeaders()) {
//获取动态变量,并将动态变量替换进去
header.setKey(
completeExpressionUtil.completeDynamicVariable(
completeExpressionUtil.completeVariable(
header.getKey(),
envId,
projectId)
);
header.setValue(
completeExpressionUtil.completeDynamicVariable(
completeExpressionUtil.completeVariable(
header.getValue(),
envId,
projectId)
......@@ -113,13 +94,13 @@ public class HttpClientActuator implements Actuator {
}
for (RequestBody requestBody : httpRequestDetail.getRequestBodies()) {
requestBody.setKey(
completeExpressionUtil.completeDynamicVariable(
completeExpressionUtil.completeVariable(
requestBody.getKey(),
envId,
projectId)
);
requestBody.setValue(
completeExpressionUtil.completeDynamicVariable(
completeExpressionUtil.completeVariable(
requestBody.getValue(),
envId,
projectId)
......@@ -127,13 +108,13 @@ public class HttpClientActuator implements Actuator {
}
if (!StringUtils.isEmpty(httpRequestDetail.getStringValue())){
httpRequestDetail.setStringValue(
completeExpressionUtil.completeDynamicVariable(
completeExpressionUtil.completeVariable(
httpRequestDetail.getStringValue(),
envId,
projectId)
);
}
httpRequestDetail.setUrl(completeExpressionUtil.completeDynamicVariable(
httpRequestDetail.setUrl(completeExpressionUtil.completeVariable(
httpRequestDetail.getUrl(),
envId,
projectId));
......
......@@ -4,6 +4,7 @@ package org.matrix.actuators.util;
import com.alibaba.fastjson.JSON;
import com.jayway.jsonpath.Configuration;
import com.jayway.jsonpath.JsonPath;
import org.matrix.actuators.env.EnvironmentActuator;
import org.matrix.actuators.sql.SqlExpActuator;
import org.matrix.util.SpringUtils;
import org.springframework.stereotype.Component;
......@@ -31,7 +32,7 @@ public class CompleteExpressionUtil {
public static final String PATH_REG = "\\{(((?!pre\\.).)*?)}(\\[(.*?)])?";
public String completeDynamicVariable(String expression,Long envId,Long projectId) {
public String completeVariable(String expression, Long envId, Long projectId) {
String result = expression;
result = regexExpression(
result, DYNAMIC_VARIABLE_REG,
......@@ -40,7 +41,7 @@ public class CompleteExpressionUtil {
result = regexExpression(
result, ENV_VARIABLE_REG,
null, (o, s) ->
getSqlExpActuator().parseVarByName(s,envId,projectId));
getEnvironmentActuator().replaceEnvVar(s,envId));
return result;
}
......@@ -94,4 +95,8 @@ public class CompleteExpressionUtil {
return SpringUtils.getBean("sqlExpActuator");
}
private static EnvironmentActuator getEnvironmentActuator(){
return SpringUtils.getBean("environmentActuator");
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论