Skip to content

Commit

Permalink
[Feature] add for new
Browse files Browse the repository at this point in the history
  • Loading branch information
houbb committed Mar 17, 2019
1 parent 4306097 commit 0ced0d9
Show file tree
Hide file tree
Showing 6 changed files with 47 additions and 6 deletions.
2 changes: 2 additions & 0 deletions doc/blog/文档生成-04-字段类型别名支持.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@
| java.time.LocalDate | 日期 |
| char | 字符 |
| short | 短整型 |
| void ||
| array | 数组 |

## 自定义的方式

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.github.houbb.idoc.common.util.ObjectUtil;
import com.github.houbb.idoc.core.constant.JavaTagConstant;
import com.github.houbb.idoc.core.util.JavaClassUtil;
import com.github.houbb.idoc.core.util.JavaTypeAliasUtil;
import com.github.houbb.idoc.core.util.MetadataDocUtil;
import com.github.houbb.paradise.common.util.StringUtil;
import com.thoughtworks.qdox.model.DocletTag;
Expand Down Expand Up @@ -39,7 +40,7 @@ protected DocField doHandle(JavaField javaField) {
docField.setName(javaField.getName());
final String type = javaField.getType().getFullyQualifiedName();
docField.setType(type);
final String alias = StringUtils.defaultIfEmpty(docConfig.getTypeAliases().get(type), type);
final String alias = JavaTypeAliasUtil.getAliasName(docConfig.getTypeAliases(), javaField.getType());
docField.setTypeAlias(alias);
docField.setComment(javaField.getComment());
// 使用 doclet,缺点:严格的 java-doc 会报错
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import com.github.houbb.idoc.common.util.CollectionUtil;
import com.github.houbb.idoc.core.constant.JavaTagConstant;
import com.github.houbb.idoc.core.util.JavaClassUtil;
import com.github.houbb.idoc.core.util.JavaTypeAliasUtil;
import com.github.houbb.idoc.core.util.MetadataDocUtil;
import com.thoughtworks.qdox.model.DocletTag;
import com.thoughtworks.qdox.model.JavaField;
Expand Down Expand Up @@ -52,7 +53,7 @@ public DocMethodParameter handle(JavaParameter javaParameter) {
docMethodParameter.setDocAnnotationList(MetadataDocUtil
.buildDocAnnotationList(javaParameter.getAnnotations()));
final String type = javaParameter.getType().getFullyQualifiedName();
final String typeAlias = StringUtils.defaultIfEmpty(docConfig.getTypeAliases().get(type), type);
final String typeAlias = JavaTypeAliasUtil.getAliasName(docConfig.getTypeAliases(), javaParameter.getType());
docMethodParameter.setType(type);
docMethodParameter.setTypeAlias(typeAlias);
// 基础类型和非基础类型
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package com.github.houbb.idoc.core.util;

import com.thoughtworks.qdox.model.Type;
import org.apache.commons.lang3.StringUtils;

import java.util.Collections;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
Expand Down Expand Up @@ -53,6 +56,15 @@ private JavaTypeAliasUtil(){}
TYPE_ALIAS_MAP.put("java.util.Collection", "集合");
TYPE_ALIAS_MAP.put("java.util.List", "列表");
TYPE_ALIAS_MAP.put("java.util.Map", "映射");

/**
* 针对数组类型
*/
TYPE_ALIAS_MAP.put("array", "数组");
/**
* 空类型
*/
TYPE_ALIAS_MAP.put("void", "空");
}

/**
Expand All @@ -63,4 +75,29 @@ public static Map<String, String> getTypeAliasMap() {
return Collections.unmodifiableMap(TYPE_ALIAS_MAP);
}

/**
* 获取别名
* 1. 如果对应的别名不存在,则使用原始的 {@link Type#getFullyQualifiedName()}
* 2. 如果是数组,全称获取到的是其中的类型。这个需要注意一下。
* @param aliasMap 别名集合
* @param type 类型
* @return 别名
*/
public static String getAliasName(final Map<String, String> aliasMap, final Type type) {
if(type.isArray()) {
// 数组类型
return aliasMap.get("array");
} else if(type.isVoid()) {
// 空类型
return aliasMap.get("void");
} else {
final String fullName = type.getFullyQualifiedName();
String alias = aliasMap.get(fullName);
if(StringUtils.isNotEmpty(alias)) {
return alias;
}
return fullName;
}
}

}
2 changes: 1 addition & 1 deletion idoc-test/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
<generate>com.github.houbb.idoc.ftl.api.generator.MarkdownDocGenerator</generate>
</generates>
<generateFilters>
<generateFilter>com.github.houbb.idoc.test.filter.MyGenerateFilter</generateFilter>
<generateFilter>com.github.houbb.idoc.test.filter.MyGenerateAliasFilter</generateFilter>
</generateFilters>
<isAllInOne>true</isAllInOne>
<typeAliases>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ public class TypeAliasSimpleBean {
/**
* 名称
*/
private String name;
private String[] name;

public String getName() {
public String[] getName() {
return name;
}

public void setName(String name) {
public void setName(String[] name) {
this.name = name;
}
}

0 comments on commit 0ced0d9

Please sign in to comment.