diff --git a/pom.xml b/pom.xml
index 252e6f6..36d9499 100644
--- a/pom.xml
+++ b/pom.xml
@@ -32,7 +32,7 @@
UTF-8
- 0.50.40
+ 0.50.46
@@ -44,7 +44,7 @@
com.ibeetl
beetl
- 3.0.15.RELEASE
+ 3.0.16.RELEASE
com.thoughtworks.qdox
@@ -106,7 +106,7 @@
org.apache.maven.plugins
maven-source-plugin
- 3.1.0
+ 3.2.1
package
diff --git a/src/main/java/com/power/doc/builder/DocBuilderTemplate.java b/src/main/java/com/power/doc/builder/DocBuilderTemplate.java
index b4f96b5..f59f453 100644
--- a/src/main/java/com/power/doc/builder/DocBuilderTemplate.java
+++ b/src/main/java/com/power/doc/builder/DocBuilderTemplate.java
@@ -66,7 +66,7 @@ public class DocBuilderTemplate {
public ApiAllData getApiData(ApiConfig config, JavaProjectBuilder javaProjectBuilder) {
ApiAllData apiAllData = new ApiAllData();
apiAllData.setProjectName(config.getProjectName());
- apiAllData.setProjectId(DocUtil.handleId(config.getProjectName()));
+ apiAllData.setProjectId(DocUtil.generateId(config.getProjectName()));
apiAllData.setLanguage(config.getLanguage().getCode());
apiAllData.setApiDocList(listOfApiData(config, javaProjectBuilder));
apiAllData.setErrorCodeList(errorCodeDictToList(config));
diff --git a/src/main/java/com/power/doc/builder/SourceBuilder.java b/src/main/java/com/power/doc/builder/SourceBuilder.java
index aba2fd0..f86e384 100644
--- a/src/main/java/com/power/doc/builder/SourceBuilder.java
+++ b/src/main/java/com/power/doc/builder/SourceBuilder.java
@@ -1376,13 +1376,13 @@ public class SourceBuilder {
*/
private void handControllerAlias(ApiDoc apiDoc) {
if (isUseMD5) {
- String name = DocUtil.handleId(apiDoc.getName());
+ String name = DocUtil.generateId(apiDoc.getName());
apiDoc.setAlias(name);
}
}
private void handleMethodUid(ApiMethodDoc methodDoc, String methodName) {
- String name = DocUtil.handleId(methodName);
+ String name = DocUtil.generateId(methodName);
methodDoc.setMethodId(name);
}
diff --git a/src/main/java/com/power/doc/helper/FormDataBuildHelper.java b/src/main/java/com/power/doc/helper/FormDataBuildHelper.java
index 45c8249..82a7db4 100644
--- a/src/main/java/com/power/doc/helper/FormDataBuildHelper.java
+++ b/src/main/java/com/power/doc/helper/FormDataBuildHelper.java
@@ -70,10 +70,7 @@ public class FormDataBuildHelper {
String subTypeName = field.getType().getFullyQualifiedName();
String fieldGicName = field.getType().getGenericCanonicalName();
JavaClass javaClass = builder.getJavaProjectBuilder().getClassByName(subTypeName);
- boolean ignoreField = field.getModifiers().stream()
- .anyMatch(str -> str.equals(DocGlobalConstants.STATIC) || str.equals(DocGlobalConstants.FINAL));
- if (ignoreField || "this$0".equals(fieldName) ||
- "serialVersionUID".equals(fieldName) ||
+ if (field.isStatic() || "this$0".equals(fieldName) ||
JavaClassValidateUtil.isIgnoreFieldTypes(subTypeName)) {
continue;
}
diff --git a/src/main/java/com/power/doc/helper/JsonBuildHelper.java b/src/main/java/com/power/doc/helper/JsonBuildHelper.java
index abfabf3..5d87cfa 100644
--- a/src/main/java/com/power/doc/helper/JsonBuildHelper.java
+++ b/src/main/java/com/power/doc/helper/JsonBuildHelper.java
@@ -26,7 +26,7 @@ public class JsonBuildHelper {
/**
* build return json
*
- * @param method The JavaMethod object
+ * @param method The JavaMethod object
* @param builder ProjectDocConfigBuilder builder
* @return String
*/
@@ -37,7 +37,7 @@ public class JsonBuildHelper {
ApiReturn apiReturn = DocClassUtil.processReturnType(method.getReturnType().getGenericCanonicalName());
String returnType = apiReturn.getGenericCanonicalName();
String typeName = apiReturn.getSimpleName();
- return JsonFormatUtil.formatJson(buildJson(typeName, returnType, true, 0, new HashMap<>(),builder));
+ return JsonFormatUtil.formatJson(buildJson(typeName, returnType, true, 0, new HashMap<>(), builder));
}
/**
@@ -45,8 +45,8 @@ public class JsonBuildHelper {
* @param genericCanonicalName genericCanonicalName
* @param isResp Response flag
* @param counter Recursive counter
- * @param registryClasses class container
- * @param builder project config builder
+ * @param registryClasses class container
+ * @param builder project config builder
* @return String
*/
public static String buildJson(String typeName, String genericCanonicalName,
@@ -66,7 +66,7 @@ public class JsonBuildHelper {
if (JavaClassValidateUtil.isPrimitive(typeName)) {
return StringUtil.removeQuotes(DocUtil.jsonValueByType(typeName));
}
- if(javaClass.isEnum()){
+ if (javaClass.isEnum()) {
return String.valueOf(JavaClassUtil.getEnumValue(javaClass, Boolean.FALSE));
}
StringBuilder data0 = new StringBuilder();
@@ -90,12 +90,12 @@ public class JsonBuildHelper {
data.append(DocUtil.jsonValueByType(gName));
} else if (gName.contains("<")) {
String simple = DocClassUtil.getSimpleName(gName);
- String json = buildJson(simple, gName, isResp, counter + 1, registryClasses,builder);
+ String json = buildJson(simple, gName, isResp, counter + 1, registryClasses, builder);
data.append(json);
} else if (JavaClassValidateUtil.isCollection(gName)) {
data.append("\"any object\"");
} else {
- String json = buildJson(gName, gName, isResp, counter + 1, registryClasses,builder);
+ String json = buildJson(gName, gName, isResp, counter + 1, registryClasses, builder);
data.append(json);
}
data.append("]");
@@ -118,10 +118,10 @@ public class JsonBuildHelper {
data.append("\"mapKey2\":").append(DocUtil.jsonValueByType(gicName)).append("}");
} else if (gicName.contains("<")) {
String simple = DocClassUtil.getSimpleName(gicName);
- String json = buildJson(simple, gicName, isResp, counter + 1, registryClasses,builder);
+ String json = buildJson(simple, gicName, isResp, counter + 1, registryClasses, builder);
data.append("{").append("\"mapKey\":").append(json).append("}");
} else {
- data.append("{").append("\"mapKey\":").append(buildJson(gicName, gNameTemp, isResp, counter + 1, registryClasses,builder)).append("}");
+ data.append("{").append("\"mapKey\":").append(buildJson(gicName, gNameTemp, isResp, counter + 1, registryClasses, builder)).append("}");
}
return data.toString();
} else if (DocGlobalConstants.JAVA_OBJECT_FULLY.equals(typeName)) {
@@ -137,11 +137,7 @@ public class JsonBuildHelper {
for (JavaField field : fields) {
String subTypeName = field.getType().getFullyQualifiedName();
String fieldName = field.getName();
-
- boolean ignoreField = field.getModifiers().stream()
- .anyMatch(str -> str.equals(DocGlobalConstants.STATIC) || str.equals(DocGlobalConstants.FINAL));
- if (ignoreField || "this$0".equals(fieldName) ||
- "serialVersionUID".equals(fieldName) ||
+ if (field.isStatic() || "this$0".equals(fieldName) ||
JavaClassValidateUtil.isIgnoreFieldTypes(subTypeName)) {
continue;
}
@@ -213,7 +209,7 @@ public class JsonBuildHelper {
String gicName = DocClassUtil.getSimpleGicName(fieldGicName)[0];
if (DocGlobalConstants.JAVA_STRING_FULLY.equals(gicName)) {
- data0.append("[").append("\"").append(buildJson(gicName, fieldGicName, isResp, counter + 1, registryClasses,builder)).append("\"]").append(",");
+ data0.append("[").append("\"").append(buildJson(gicName, fieldGicName, isResp, counter + 1, registryClasses, builder)).append("\"]").append(",");
} else if (DocGlobalConstants.JAVA_LIST_FULLY.equals(gicName)) {
data0.append("{\"object\":\"any object\"},");
} else if (gicName.length() == 1) {
@@ -223,10 +219,10 @@ public class JsonBuildHelper {
}
String gicName1 = (i < globGicName.length) ? globGicName[i] : globGicName[globGicName.length - 1];
if (DocGlobalConstants.JAVA_STRING_FULLY.equals(gicName1)) {
- data0.append("[").append("\"").append(buildJson(gicName1, gicName1, isResp, counter + 1, registryClasses,builder)).append("\"]").append(",");
+ data0.append("[").append("\"").append(buildJson(gicName1, gicName1, isResp, counter + 1, registryClasses, builder)).append("\"]").append(",");
} else {
if (!typeName.equals(gicName1)) {
- data0.append("[").append(buildJson(DocClassUtil.getSimpleName(gicName1), gicName1, isResp, counter + 1, registryClasses,builder)).append("]").append(",");
+ data0.append("[").append(buildJson(DocClassUtil.getSimpleName(gicName1), gicName1, isResp, counter + 1, registryClasses, builder)).append("]").append(",");
} else {
data0.append("[{\"$ref\":\"..\"}]").append(",");
}
@@ -237,7 +233,7 @@ public class JsonBuildHelper {
data0.append("[{\"mapKey\":{}}],");
continue out;
}
- data0.append("[").append(buildJson(gicName, fieldGicName, isResp, counter + 1, registryClasses,builder)).append("]").append(",");
+ data0.append("[").append(buildJson(gicName, fieldGicName, isResp, counter + 1, registryClasses, builder)).append("]").append(",");
} else {
data0.append("[{\"$ref\":\"..\"}]").append(",");
}
@@ -251,16 +247,16 @@ public class JsonBuildHelper {
if (gicName.length() == 1) {
String gicName1 = (i < globGicName.length) ? globGicName[i] : globGicName[globGicName.length - 1];
if (DocGlobalConstants.JAVA_STRING_FULLY.equals(gicName1)) {
- data0.append("{").append("\"mapKey\":\"").append(buildJson(gicName1, gicName1, isResp, counter + 1, registryClasses,builder)).append("\"},");
+ data0.append("{").append("\"mapKey\":\"").append(buildJson(gicName1, gicName1, isResp, counter + 1, registryClasses, builder)).append("\"},");
} else {
if (!typeName.equals(gicName1)) {
- data0.append("{").append("\"mapKey\":").append(buildJson(DocClassUtil.getSimpleName(gicName1), gicName1, isResp, counter + 1, registryClasses,builder)).append("},");
+ data0.append("{").append("\"mapKey\":").append(buildJson(DocClassUtil.getSimpleName(gicName1), gicName1, isResp, counter + 1, registryClasses, builder)).append("},");
} else {
data0.append("{\"mapKey\":{}},");
}
}
} else {
- data0.append("{").append("\"mapKey\":").append(buildJson(gicName, fieldGicName, isResp, counter + 1, registryClasses,builder)).append("},");
+ data0.append("{").append("\"mapKey\":").append(buildJson(gicName, fieldGicName, isResp, counter + 1, registryClasses, builder)).append("},");
}
} else if (subTypeName.length() == 1) {
if (!typeName.equals(genericCanonicalName)) {
@@ -269,7 +265,7 @@ public class JsonBuildHelper {
data0.append(DocUtil.jsonValueByType(gicName)).append(",");
} else {
String simple = DocClassUtil.getSimpleName(gicName);
- data0.append(buildJson(simple, gicName, isResp, counter + 1, registryClasses,builder)).append(",");
+ data0.append(buildJson(simple, gicName, isResp, counter + 1, registryClasses, builder)).append(",");
}
} else {
data0.append("{\"waring\":\"You may have used non-display generics.\"},");
@@ -282,10 +278,10 @@ public class JsonBuildHelper {
String gicName = globGicName[i];
if (!typeName.equals(genericCanonicalName)) {
if (JavaClassValidateUtil.isPrimitive(gicName)) {
- data0.append("\"").append(buildJson(gicName, genericCanonicalName, isResp, counter + 1, registryClasses,builder)).append("\",");
+ data0.append("\"").append(buildJson(gicName, genericCanonicalName, isResp, counter + 1, registryClasses, builder)).append("\",");
} else {
String simpleName = DocClassUtil.getSimpleName(gicName);
- data0.append(buildJson(simpleName, gicName, isResp, counter + 1, registryClasses,builder)).append(",");
+ data0.append(buildJson(simpleName, gicName, isResp, counter + 1, registryClasses, builder)).append(",");
}
} else {
data0.append("{\"waring\":\"You may have used non-display generics.\"},");
@@ -297,12 +293,12 @@ public class JsonBuildHelper {
} else if (typeName.equals(subTypeName)) {
data0.append("{\"$ref\":\"...\"}").append(",");
} else {
- javaClass = builder.getJavaProjectBuilder().getClassByName(subTypeName);
+ javaClass = builder.getJavaProjectBuilder().getClassByName(subTypeName);
if (!isResp && javaClass.isEnum()) {
Object value = JavaClassUtil.getEnumValue(javaClass, Boolean.FALSE);
data0.append(value).append(",");
} else {
- data0.append(buildJson(subTypeName, fieldGicName,isResp, counter + 1, registryClasses,builder)).append(",");
+ data0.append(buildJson(subTypeName, fieldGicName, isResp, counter + 1, registryClasses, builder)).append(",");
}
}
}
diff --git a/src/main/java/com/power/doc/helper/ParamsBuildHelper.java b/src/main/java/com/power/doc/helper/ParamsBuildHelper.java
index f3fa879..7fd55fc 100644
--- a/src/main/java/com/power/doc/helper/ParamsBuildHelper.java
+++ b/src/main/java/com/power/doc/helper/ParamsBuildHelper.java
@@ -68,10 +68,7 @@ public class ParamsBuildHelper {
for (JavaField field : fields) {
String fieldName = field.getName();
String subTypeName = field.getType().getFullyQualifiedName();
- boolean ignoreField = field.getModifiers().stream()
- .anyMatch(str -> str.equals(DocGlobalConstants.STATIC) || str.equals(DocGlobalConstants.FINAL));
- if (ignoreField || "this$0".equals(fieldName) ||
- "serialVersionUID".equals(fieldName) ||
+ if (field.isStatic() || "this$0".equals(fieldName) ||
JavaClassValidateUtil.isIgnoreFieldTypes(subTypeName)) {
continue;
}
diff --git a/src/main/java/com/power/doc/template/IDocBuildTemplate.java b/src/main/java/com/power/doc/template/IDocBuildTemplate.java
index 1510cb3..9ddc794 100644
--- a/src/main/java/com/power/doc/template/IDocBuildTemplate.java
+++ b/src/main/java/com/power/doc/template/IDocBuildTemplate.java
@@ -10,7 +10,10 @@ import com.power.doc.utils.DocUtil;
import com.power.doc.utils.JavaClassValidateUtil;
import com.thoughtworks.qdox.model.JavaClass;
import com.thoughtworks.qdox.model.JavaMethod;
+import com.thoughtworks.qdox.model.JavaType;
+import com.thoughtworks.qdox.model.JavaTypeVariable;
+import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -60,7 +63,7 @@ public interface IDocBuildTemplate {
apiDoc.setName(controllerName);
apiDoc.setAlias(controllerName);
if (isUseMD5) {
- String name = DocUtil.handleId(apiDoc.getName());
+ String name = DocUtil.generateId(apiDoc.getName());
apiDoc.setAlias(name);
}
apiDoc.setDesc(cls.getComment());
@@ -88,7 +91,7 @@ public interface IDocBuildTemplate {
if (JavaClassValidateUtil.isPrimitive(gicName)) {
return ParamsBuildHelper.primitiveReturnRespComment("array of " + DocClassUtil.processTypeNameForParams(gicName));
}
- return ParamsBuildHelper.buildParams(gicName, "", 0, null, projectBuilder.getCustomRespFieldMap(), true, new HashMap<>(), projectBuilder);
+ return ParamsBuildHelper.buildParams(gicName, "", 0, null, projectBuilder.getCustomRespFieldMap(), Boolean.TRUE, new HashMap<>(), projectBuilder);
} else {
return null;
}
@@ -101,10 +104,10 @@ public interface IDocBuildTemplate {
if (JavaClassValidateUtil.isPrimitive(keyValue[1])) {
return ParamsBuildHelper.primitiveReturnRespComment("key value");
}
- return ParamsBuildHelper.buildParams(keyValue[1], "", 0, null, projectBuilder.getCustomRespFieldMap(), true, new HashMap<>(), projectBuilder);
+ return ParamsBuildHelper.buildParams(keyValue[1], "", 0, null, projectBuilder.getCustomRespFieldMap(), Boolean.TRUE, new HashMap<>(), projectBuilder);
}
if (StringUtil.isNotEmpty(returnType)) {
- return ParamsBuildHelper.buildParams(returnType, "", 0, null, projectBuilder.getCustomRespFieldMap(), true, new HashMap<>(), projectBuilder);
+ return ParamsBuildHelper.buildParams(returnType, "", 0, null, projectBuilder.getCustomRespFieldMap(), Boolean.TRUE, new HashMap<>(), projectBuilder);
}
return null;
}
diff --git a/src/main/java/com/power/doc/template/SpringBootDocBuildTemplate.java b/src/main/java/com/power/doc/template/SpringBootDocBuildTemplate.java
index 09aa78a..324ae3f 100644
--- a/src/main/java/com/power/doc/template/SpringBootDocBuildTemplate.java
+++ b/src/main/java/com/power/doc/template/SpringBootDocBuildTemplate.java
@@ -78,7 +78,7 @@ public class SpringBootDocBuildTemplate implements IDocBuildTemplate {
for (JavaAnnotation annotation : classAnnotations) {
String annotationName = annotation.getType().getName();
if (DocAnnotationConstants.REQUEST_MAPPING.equals(annotationName) || DocGlobalConstants.REQUEST_MAPPING_FULLY.equals(annotationName)) {
- if(annotation.getNamedParameter("value")!=null){
+ if (annotation.getNamedParameter("value") != null) {
baseUrl = StringUtil.removeQuotes(annotation.getNamedParameter("value").toString());
}
}
@@ -87,7 +87,7 @@ public class SpringBootDocBuildTemplate implements IDocBuildTemplate {
List methodDocList = new ArrayList<>(methods.size());
int methodOrder = 0;
for (JavaMethod method : methods) {
- if (method.getModifiers().contains("private")) {
+ if (method.isPrivate()) {
continue;
}
if (StringUtil.isEmpty(method.getComment()) && apiConfig.isStrict()) {
@@ -98,7 +98,7 @@ public class SpringBootDocBuildTemplate implements IDocBuildTemplate {
apiMethodDoc.setOrder(methodOrder);
apiMethodDoc.setDesc(method.getComment());
apiMethodDoc.setName(method.getName());
- String methodUid = DocUtil.handleId(clazName + method.getName());
+ String methodUid = DocUtil.generateId(clazName + method.getName());
apiMethodDoc.setMethodId(methodUid);
String apiNoteValue = DocUtil.getNormalTagComments(method, DocTags.API_NOTE, cls.getName());
if (StringUtil.isEmpty(apiNoteValue)) {
@@ -131,7 +131,7 @@ public class SpringBootDocBuildTemplate implements IDocBuildTemplate {
String requestJson = requestExample.getExampleBody();
// set request example detail
apiMethodDoc.setRequestExample(requestExample);
- apiMethodDoc.setRequestUsage(requestJson==null?requestExample.getUrl():requestJson);
+ apiMethodDoc.setRequestUsage(requestJson == null ? requestExample.getUrl() : requestJson);
// build response usage
apiMethodDoc.setResponseUsage(JsonBuildHelper.buildReturnJson(method, projectBuilder));
// build response params
@@ -261,7 +261,7 @@ public class SpringBootDocBuildTemplate implements IDocBuildTemplate {
gicName = gicName.substring(0, gicName.indexOf("["));
}
if (!JavaClassValidateUtil.isPrimitive(gicName)) {
- throw new RuntimeException("FormData can't support binding Collection on method "
+ throw new RuntimeException("Spring MVC can't support binding Collection on method "
+ method.getName() + "Check it in " + method.getDeclaringClass().getCanonicalName());
}
FormData formData = new FormData();
diff --git a/src/main/java/com/power/doc/utils/DocUtil.java b/src/main/java/com/power/doc/utils/DocUtil.java
index bd16080..6e6e3e0 100644
--- a/src/main/java/com/power/doc/utils/DocUtil.java
+++ b/src/main/java/com/power/doc/utils/DocUtil.java
@@ -363,7 +363,7 @@ public class DocUtil {
* @param value value
* @return String
*/
- public static String handleId(String value) {
+ public static String generateId(String value) {
if (StringUtil.isEmpty(value)) {
return null;
}
diff --git a/src/main/resources/default.json b/src/main/resources/default.json
new file mode 100644
index 0000000..be9fd5f
--- /dev/null
+++ b/src/main/resources/default.json
@@ -0,0 +1,50 @@
+{
+ "serverUrl": "http://127.0.0.1",
+ "isStrict": false,
+ "allInOne": true,
+ "outPath": "D://md2",
+ "coverOld": true,
+ "packageFilters": "",
+ "md5EncryptedHtmlName": false,
+ "projectName": "smart-doc",
+ "skipTransientField": true,
+ "revisionLogs": [
+ {
+ "version": "1.0",
+ "status": "use",
+ "author": "author",
+ "revisionTime": "2019-10-12",
+ "remarks": "desc"
+ }
+ ],
+ "errorCodes": [
+ {
+ "value": "200",
+ "type": "string",
+ "desc": "desc"
+ }
+ ],
+ "customResponseFields": [
+ {
+ "name": "name",
+ "desc": "desc",
+ "ownerClassName": "ownerClassName",
+ "value": "value"
+ }
+ ],
+ "requestHeaders": [
+ {
+ "name": "token",
+ "type": "string",
+ "desc": "desc",
+ "required": false,
+ "since": "-"
+ }
+ ],
+ "sourceCodePaths": [
+ {
+ "path": "src/main/java",
+ "desc": "测试"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/main/resources/smart-doc.json b/src/main/resources/smart-doc.json
new file mode 100644
index 0000000..a33c4e2
--- /dev/null
+++ b/src/main/resources/smart-doc.json
@@ -0,0 +1,66 @@
+{
+ "serverUrl": "http://127.0.0.1",
+ "isStrict": false,
+ "allInOne": true,
+ "outPath": "D://md2",
+ "coverOld": true,
+ "packageFilters": "",
+ "md5EncryptedHtmlName": false,
+ "projectName": "smart-doc",
+ "skipTransientField": true,
+ "dataDictionaries": [
+ {
+ "title": "title",
+ "enumClassName": "com.data.Enum",
+ "codeField": "codeField",
+ "descField": "descField"
+ }
+ ],
+ "errorCodeDictionaries": [
+ {
+ "title": "title",
+ "enumClassName": "com.data.Enum",
+ "codeField": "codeField",
+ "descField": "descField"
+ }
+ ],
+ "revisionLogs": [
+ {
+ "version": "1.0",
+ "status": "use",
+ "author": "author",
+ "revisionTime": "2019-10-12",
+ "remarks": "desc"
+ }
+ ],
+ "errorCodes": [
+ {
+ "value": "200",
+ "type": "string",
+ "desc": "desc"
+ }
+ ],
+ "customResponseFields": [
+ {
+ "name": "name",
+ "desc": "desc",
+ "ownerClassName": "ownerClassName",
+ "value": "value"
+ }
+ ],
+ "requestHeaders": [
+ {
+ "name": "token",
+ "type": "string",
+ "desc": "desc",
+ "required": false,
+ "since": "-"
+ }
+ ],
+ "sourceCodePaths": [
+ {
+ "path": "src/main/java",
+ "desc": "测试"
+ }
+ ]
+}
\ No newline at end of file