Skip to content

Commit

Permalink
Merge pull request #700 from chenqi146/master
Browse files Browse the repository at this point in the history
fix: fix mock escape(query, body, curl, example)
  • Loading branch information
shalousun authored Jan 7, 2024
2 parents 733f6c8 + 7b60212 commit 97565b0
Show file tree
Hide file tree
Showing 9 changed files with 31 additions and 28 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
<dependency>
<groupId>com.github.shalousun</groupId>
<artifactId>common-util</artifactId>
<version>2.2.1</version>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
Expand Down
16 changes: 13 additions & 3 deletions src/main/java/com/ly/doc/helper/BaseHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,25 +25,35 @@
import com.ly.doc.constants.DocTags;
import com.ly.doc.utils.DocUtil;
import com.ly.doc.utils.JavaClassValidateUtil;
import com.power.common.util.StringEscapeUtil;
import com.power.common.util.StringUtil;
import com.ly.doc.utils.ParamUtil;

/**
* @author yu3.sun on 2022/10/14
*/
public abstract class BaseHelper {

protected static String getFieldValueFromMock(String subTypeName, Map<String, String> tagsMap, String typeSimpleName) {
protected static String getFieldValueFromMockForJson(String subTypeName, Map<String, String> tagsMap, String typeSimpleName) {
String fieldValue = "";
if (tagsMap.containsKey(DocTags.MOCK) && StringUtil.isNotEmpty(tagsMap.get(DocTags.MOCK))) {
fieldValue = tagsMap.get(DocTags.MOCK);
fieldValue = StringEscapeUtil.unescapeJava(fieldValue);
if (!DocUtil.javaPrimaryType(typeSimpleName)
&& !JavaClassValidateUtil.isCollection(subTypeName)
&& !JavaClassValidateUtil.isMap(subTypeName)
&& !JavaClassValidateUtil.isArray(subTypeName)) {
fieldValue = StringEscapeUtil.escapeJava(fieldValue, true);
fieldValue = DocUtil.handleJsonStr(fieldValue);
}
}
return ParamUtil.formatMockValue(fieldValue);
return fieldValue;
}

protected static String getFieldValueFromMock(Map<String, String> tagsMap) {
String fieldValue = "";
if (tagsMap.containsKey(DocTags.MOCK) && StringUtil.isNotEmpty(tagsMap.get(DocTags.MOCK))) {
fieldValue = StringEscapeUtil.unescapeJava(tagsMap.get(DocTags.MOCK));
}
return fieldValue;
}
}
20 changes: 8 additions & 12 deletions src/main/java/com/ly/doc/helper/FormDataBuildHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
/**
* @author yu 2019/12/25.
*/
public class FormDataBuildHelper {
public class FormDataBuildHelper extends BaseHelper {

/**
* build form data
Expand Down Expand Up @@ -132,10 +132,8 @@ public static List<FormData> getFormData(String className, Map<String, String> r
formData.setValue("");
formDataList.add(formData);
} else if (JavaClassValidateUtil.isPrimitive(subTypeName)) {
String fieldValue;
if (tagsMap.containsKey(DocTags.MOCK) && StringUtil.isNotEmpty(tagsMap.get(DocTags.MOCK))) {
fieldValue = ParamUtil.formatMockValue(tagsMap.get(DocTags.MOCK));
} else {
String fieldValue = getFieldValueFromMock(tagsMap);
if (StringUtil.isEmpty(fieldValue)) {
fieldValue = DocUtil.getValByTypeAndFieldName(typeSimpleName, field.getName());
}
CustomField customRequestField = builder.getCustomReqFieldMap().get(fieldName);
Expand All @@ -147,7 +145,7 @@ public static List<FormData> getFormData(String className, Map<String, String> r
FormData formData = new FormData();
formData.setKey(pre + fieldName);
formData.setType("text");
formData.setValue(StringUtil.removeQuotes(fieldValue));
formData.setValue(fieldValue);
formData.setDescription(comment);
formDataList.add(formData);
} else if (javaClass.isEnum()) {
Expand All @@ -169,12 +167,10 @@ public static List<FormData> getFormData(String className, Map<String, String> r
}
String gName = DocClassUtil.getSimpleGicName(gNameTemp)[0];
if (JavaClassValidateUtil.isPrimitive(gName)) {
String fieldValue;
if (tagsMap.containsKey(DocTags.MOCK) && StringUtil.isNotEmpty(tagsMap.get(DocTags.MOCK))) {
fieldValue = ParamUtil.formatMockValue(tagsMap.get(DocTags.MOCK));
} else {
String val = DocUtil.getValByTypeAndFieldName(gName, field.getName());
fieldValue = val + "," + val;
String fieldValue = getFieldValueFromMock(tagsMap);
if (StringUtil.isEmpty(fieldValue)) {
fieldValue = DocUtil.getValByTypeAndFieldName(typeSimpleName, field.getName());
fieldValue = fieldValue + "," + fieldValue;
}
FormData formData = new FormData();
formData.setKey(pre + fieldName);
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/ly/doc/helper/JsonBuildHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,7 @@ public static String buildJson(String typeName, String genericCanonicalName,
}
fieldName = fieldName.trim();
data0.append("\"").append(fieldName).append("\":");
String fieldValue = getFieldValueFromMock(subTypeName, tagsMap, typeSimpleName);
String fieldValue = getFieldValueFromMockForJson(subTypeName, tagsMap, typeSimpleName);
if (JavaClassValidateUtil.isPrimitive(subTypeName)) {
int data0Length = data0.length();
if (StringUtil.isEmpty(fieldValue)) {
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/com/ly/doc/helper/ParamsBuildHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
import com.ly.doc.utils.JavaClassValidateUtil;
import com.power.common.model.EnumDictionary;
import com.power.common.util.CollectionUtil;
import com.power.common.util.StringEscapeUtil;
import com.power.common.util.StringUtil;
import com.ly.doc.builder.ProjectDocConfigBuilder;
import com.ly.doc.constants.DocTags;
Expand Down Expand Up @@ -192,7 +193,6 @@ public static List<ApiParam> buildParams(String className, String pre, int level
}

boolean strRequired = false;
int annotationCounter = 0;
CustomField.Key key = CustomField.Key.create(docField.getDeclaringClassName(), fieldName);

CustomField customResponseField = CustomField.nameEquals(key, projectBuilder.getCustomRespFieldMap());
Expand Down Expand Up @@ -231,7 +231,6 @@ public static List<ApiParam> buildParams(String className, String pre, int level
}
} else if (JavaClassValidateUtil.isJSR303Required(simpleAnnotationName) && !isResp) {

annotationCounter++;
boolean hasGroup = false;
Set<String> groupClassList = JavaClassUtil.getParamGroupJavaClass(annotation);
for (String javaClass : groupClassList) {
Expand All @@ -248,7 +247,8 @@ public static List<ApiParam> buildParams(String className, String pre, int level
}
}
comment.append(JavaFieldUtil.getJsrComment(javaAnnotations));
String fieldValue = getFieldValueFromMock(subTypeName, tagsMap, typeSimpleName);
// fixme post form curl example error
String fieldValue = getFieldValueFromMock(tagsMap);


// cover response value
Expand Down
1 change: 0 additions & 1 deletion src/main/java/com/ly/doc/template/IRestDocTemplate.java
Original file line number Diff line number Diff line change
Expand Up @@ -1012,7 +1012,6 @@ default ApiRequestExample buildReqJson(DocJavaMethod javaMethod, ApiMethodDoc ap
path = DocUtil.formatAndRemove(path, pathParamsMap);
body = UrlUtil.urlJoin(DocGlobalConstants.EMPTY, queryParamsMap)
.replace("?", DocGlobalConstants.EMPTY);
body = StringUtil.removeQuotes(body);
url = apiMethodDoc.getServerUrl() + "/" + path;
url = UrlUtil.simplifyUrl(url);

Expand Down
2 changes: 0 additions & 2 deletions src/main/java/com/ly/doc/utils/ApiParamTreeUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
import com.ly.doc.model.ApiParam;
import com.ly.doc.model.ApiReqParam;
import com.power.common.util.CollectionUtil;
import com.power.common.util.StringUtil;

/**
* @author yu 2020/8/8.
Expand Down Expand Up @@ -102,7 +101,6 @@ public static ApiMethodReqParam buildMethodReqParam(List<ApiParam> paramList, fi
List<ApiParam> queryParams = new ArrayList<>();
List<ApiParam> bodyParams = new ArrayList<>();
for (ApiParam param : paramList) {
param.setValue(StringUtil.removeDoubleQuotes(param.getValue()));
if (param.isPathParam()) {
if (pathReqParamMap.containsKey(param.getField())) {
param.setConfigParam(true).setValue(pathReqParamMap.get(param.getField()).getValue());
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/com/ly/doc/utils/CurlUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -74,11 +74,11 @@ public static String toCurl(CurlRequest request) {

sb.append(" -i");
// append request url
sb.append(" ").append(request.getUrl());
if (StringUtil.isNotEmpty(request.getBody()) &&
!DocGlobalConstants.URL_CONTENT_TYPE.equals(request.getContentType())) {
sb.append(" ").append("'").append(request.getUrl()).append("'");
if (StringUtil.isNotEmpty(request.getBody())) {
sb.append(" --data");
sb.append(" '").append(request.getBody()).append("'");
String data = request.getBody().replaceAll("'", "'\\\\''");
sb.append(" '").append(data).append("'");
}
return sb.toString();
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/template/debug-all.html

Large diffs are not rendered by default.

0 comments on commit 97565b0

Please sign in to comment.