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

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

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