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 14, 2019
1 parent ddb6817 commit 10e7f32
Show file tree
Hide file tree
Showing 12 changed files with 118 additions and 36 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.github.houbb.idoc.api.model.metadata;

import com.github.houbb.idoc.api.model.config.DocConfig;

import java.util.List;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,13 @@ public final class DocField extends BaseDoc {
*/
private List<DocField> docFieldList;

/**
* 字段类型别名
* @since 0.1.0
*/
private String typeAlias;


public String getType() {
return type;
}
Expand All @@ -48,4 +55,11 @@ public void setDocFieldList(List<DocField> docFieldList) {
this.docFieldList = docFieldList;
}

public String getTypeAlias() {
return typeAlias;
}

public void setTypeAlias(String typeAlias) {
this.typeAlias = typeAlias;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ public SimplifyDocField handle(DocField docField) {
simplifyDocField.setType(docField.getType());
simplifyDocField.setRequire(docField.getRequire());
simplifyDocField.setRemark(docField.getRemark());
simplifyDocField.setTypeAlias(docField.getTypeAlias());

// 处理特殊字段信息 比如集合字段
// TODO: 需要在读取的时候进行特殊处理。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ public class SimplifyDocField extends SimplifyDocBase {

/**
* 字段类型
* TODO:字段显示类型映射处理
* 支持用户自定义
*/
private String type;
Expand All @@ -20,6 +19,12 @@ public class SimplifyDocField extends SimplifyDocBase {
*/
private String require;

/**
* 字段类型别名
* @since 0.1.0
*/
private String typeAlias;

/**
* 详情列表信息
*/
Expand Down Expand Up @@ -48,4 +53,12 @@ public List<SimplifyDocField> getEntries() {
public void setEntries(List<SimplifyDocField> entries) {
this.entries = entries;
}

public String getTypeAlias() {
return typeAlias;
}

public void setTypeAlias(String typeAlias) {
this.typeAlias = typeAlias;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public GenerateDocService(MavenProject mavenProject, final DocConfig docConfig)

@Override
protected IHandler<JavaClass, DocClass> configJavaClassHandler() {
IHandler<JavaClass, DocClass> classHandler = new MetadataDocClassHandler();
IHandler<JavaClass, DocClass> classHandler = new MetadataDocClassHandler(docConfig);
log.debug("Initial with java class handler: {}", classHandler.getClass().getName());
return classHandler;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package com.github.houbb.idoc.core.handler.impl.metadata;

import com.github.houbb.idoc.api.model.config.DocConfig;
import com.github.houbb.idoc.api.model.metadata.DocClass;
import com.github.houbb.idoc.api.model.metadata.DocField;
import com.github.houbb.idoc.common.handler.AbstractHandler;
import com.github.houbb.idoc.common.util.ArrayUtil;
import com.github.houbb.idoc.common.util.CollectionUtil;
import com.github.houbb.idoc.core.util.JavaClassUtil;
import com.github.houbb.idoc.core.util.MetadataDocUtil;
import com.github.houbb.log.integration.core.Log;
Expand All @@ -24,6 +27,15 @@ public class MetadataDocClassHandler extends AbstractHandler<JavaClass, DocClass
private static final Log log = LogFactory.getLog(MetadataDocClassHandler.class);


/**
* 配置信息
*/
private final DocConfig docConfig;

public MetadataDocClassHandler(DocConfig docConfig) {
this.docConfig = docConfig;
}

@Override
protected DocClass doHandle(JavaClass javaClass) {
// 原始基础信息
Expand Down Expand Up @@ -51,13 +63,21 @@ protected DocClass doHandle(JavaClass javaClass) {

// 字段信息
final List<JavaField> javaFieldList = JavaClassUtil.getAllJavaFieldList(javaClass);
docClass.setDocFieldList(MetadataDocUtil.buildDocFieldList(javaFieldList));
docClass.setDocFieldList(CollectionUtil.buildList(javaFieldList, new MetadataDocFieldHandler(docConfig)));

// 方法信息
final JavaMethod[] javaMethods = javaClass.getMethods();
docClass.setDocMethodList(ArrayUtil.buildList(javaMethods, new MetadataDocMethodHandler(docClass)));
docClass.setDocMethodList(ArrayUtil.buildList(javaMethods, new MetadataDocMethodHandler(docClass, docConfig)));

return docClass;
}

/**
* 构建字段列表
* @param javaFields 字段
* @return 结果
*/
public List<DocField> buildDocFieldList(final List<JavaField> javaFields) {
return CollectionUtil.buildList(javaFields, new MetadataDocFieldHandler(docConfig));
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
package com.github.houbb.idoc.core.handler.impl.metadata;

import com.github.houbb.idoc.api.model.config.DocConfig;
import com.github.houbb.idoc.api.model.metadata.DocField;
import com.github.houbb.idoc.common.handler.AbstractHandler;
import com.github.houbb.idoc.common.util.CollectionUtil;
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.MetadataDocUtil;
import com.github.houbb.paradise.common.util.StringUtil;
import com.thoughtworks.qdox.model.DocletTag;
import com.thoughtworks.qdox.model.JavaField;
import com.thoughtworks.qdox.model.Type;
Expand All @@ -18,11 +21,25 @@
* @since 0.0.1
*/
public class MetadataDocFieldHandler extends AbstractHandler<JavaField, DocField> {

/**
* 配置信息
*/
private final DocConfig docConfig;

public MetadataDocFieldHandler(DocConfig docConfig) {
this.docConfig = docConfig;
}


@Override
protected DocField doHandle(JavaField javaField) {
DocField docField = new DocField();
docField.setName(javaField.getName());
docField.setType(javaField.getType().getFullyQualifiedName());
final String type = javaField.getType().getFullyQualifiedName();
docField.setType(type);
final String alias = getTypeAlias(type);
docField.setTypeAlias(alias);
docField.setComment(javaField.getComment());
// 使用 doclet,缺点:严格的 java-doc 会报错
// 使用判断的方式,会导致处理其他特别麻烦。
Expand All @@ -46,9 +63,22 @@ protected DocField doHandle(JavaField javaField) {
return docField;
}

docField.setDocFieldList(MetadataDocUtil.buildDocFieldList(javaFieldList));
docField.setDocFieldList(CollectionUtil.buildList(javaFieldList, new MetadataDocFieldHandler(docConfig)));
}
return docField;
}

/**
* 获取类型别名
* @param type 类型
* @return 别称
*/
private String getTypeAlias(final String type) {
final String alias = docConfig.getTypeAliases().get(type);
if(StringUtil.isNotEmpty(alias)) {
return alias;
}
return type;
}

}
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.github.houbb.idoc.core.handler.impl.metadata;

import com.github.houbb.idoc.api.model.config.DocConfig;
import com.github.houbb.idoc.api.model.metadata.*;
import com.github.houbb.idoc.common.handler.AbstractHandler;
import com.github.houbb.idoc.common.util.ArrayUtil;
import com.github.houbb.idoc.common.util.CollectionUtil;
import com.github.houbb.idoc.common.util.ObjectUtil;
import com.github.houbb.idoc.core.constant.JavaTagConstant;
import com.github.houbb.idoc.core.util.MetadataDocUtil;
Expand All @@ -24,8 +24,14 @@ public class MetadataDocMethodHandler extends AbstractHandler<JavaMethod, DocMet
*/
private final DocClass docClass;

public MetadataDocMethodHandler(DocClass docClass) {
/**
* 当前类配置信息
*/
private final DocConfig docConfig;

public MetadataDocMethodHandler(DocClass docClass, DocConfig docConfig) {
this.docClass = docClass;
this.docConfig = docConfig;
}

@Override
Expand All @@ -47,11 +53,11 @@ protected DocMethod doHandle(JavaMethod javaMethod) {
docMethod.setDocTagList(docTagList);

// 返回类型
final DocMethodReturn docReturnClass = new MetadataDocReturnClassHandler(docClass).handle(javaMethod);
final DocMethodReturn docReturnClass = new MetadataDocReturnClassHandler(docClass, docConfig).handle(javaMethod);
docMethod.setDocMethodReturn(docReturnClass);

// 参数信息
final List<DocMethodParameter> docMethodParameterList = new MetadataDocMethodParameterHandler(docClass).handle(javaMethod);
final List<DocMethodParameter> docMethodParameterList = new MetadataDocMethodParameterHandler(docClass, docConfig).handle(javaMethod);
docMethod.setDocMethodParameterList(docMethodParameterList);

// @see 列表信息添加
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package com.github.houbb.idoc.core.handler.impl.metadata;

import com.github.houbb.idoc.api.model.config.DocConfig;
import com.github.houbb.idoc.api.model.metadata.DocClass;
import com.github.houbb.idoc.api.model.metadata.DocMethodParameter;
import com.github.houbb.idoc.common.handler.AbstractHandler;
import com.github.houbb.idoc.common.handler.IHandler;
import com.github.houbb.idoc.common.util.ArrayUtil;
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.MetadataDocUtil;
Expand All @@ -27,8 +29,14 @@ public class MetadataDocMethodParameterHandler extends AbstractHandler<JavaMetho
*/
private final DocClass docClass;

public MetadataDocMethodParameterHandler(DocClass docClass) {
/**
* 配置信息
*/
private final DocConfig docConfig;

public MetadataDocMethodParameterHandler(DocClass docClass, DocConfig docConfig) {
this.docClass = docClass;
this.docConfig = docConfig;
}

@Override
Expand All @@ -51,7 +59,7 @@ public DocMethodParameter handle(JavaParameter javaParameter) {
if (needEntryFieldHandle(javaParameter)) {
final List<JavaField> javaFieldList = JavaClassUtil
.getAllJavaFieldList(javaParameter.getType().getJavaClass());
docMethodParameter.setDocFieldList(MetadataDocUtil.buildDocFieldList(javaFieldList));
docMethodParameter.setDocFieldList(CollectionUtil.buildList(javaFieldList, new MetadataDocFieldHandler(docConfig)));
}
DocletTag[] docletTags = javaMethod.getTagsByName(JavaTagConstant.PARAM);
if (ArrayUtil.isNotEmpty(docletTags)) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.github.houbb.idoc.core.handler.impl.metadata;

import com.github.houbb.idoc.api.model.config.DocConfig;
import com.github.houbb.idoc.api.model.metadata.DocClass;
import com.github.houbb.idoc.api.model.metadata.DocMethodReturn;
import com.github.houbb.idoc.common.handler.AbstractHandler;
import com.github.houbb.idoc.common.handler.IHandler;
import com.github.houbb.idoc.common.util.ObjectUtil;
import com.github.houbb.idoc.core.constant.JavaTagConstant;
import com.thoughtworks.qdox.model.DocletTag;
Expand All @@ -23,8 +23,14 @@ public class MetadataDocReturnClassHandler extends AbstractHandler<JavaMethod, D
*/
private final DocClass docClass;

public MetadataDocReturnClassHandler(DocClass docClass) {
/**
* 配置信息
*/
private final DocConfig docConfig;

public MetadataDocReturnClassHandler(DocClass docClass, DocConfig docConfig) {
this.docClass = docClass;
this.docConfig = docConfig;
}

@Override
Expand All @@ -49,7 +55,7 @@ protected DocMethodReturn doHandle(JavaMethod javaMethod) {
// 对象属性赋值,直接将 doclass 信息设置过来
fillDocMethodReturn(docMethodReturn, docClass);
} else {
DocClass docClass = new MetadataDocClassHandler().handle(returnClass);
DocClass docClass = new MetadataDocClassHandler(docConfig).handle(returnClass);
fillDocMethodReturn(docMethodReturn, docClass);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,24 +42,6 @@ public static List<DocAnnotation> buildDocAnnotationList(final Annotation[] anno
return ArrayUtil.buildList(annotations, new MetadataDocAnnotationHandler());
}

/**
* 构建字段列表
* @param javaFields 字段
* @return 结果
*/
public static List<DocField> buildDocFieldList(final JavaField[] javaFields) {
return ArrayUtil.buildList(javaFields, new MetadataDocFieldHandler());
}

/**
* 构建字段列表
* @param javaFields 字段
* @return 结果
*/
public static List<DocField> buildDocFieldList(final List<JavaField> javaFields) {
return CollectionUtil.buildList(javaFields, new MetadataDocFieldHandler());
}

private MetadataDocUtil(){}

}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ ${method.remark!"暂无方法备注信息"}
|:---|:---|:---|:---|:----|
<#if method.params?? && (method.params?size > 0)>
<#list method.params as param>
| ${param.name} | ${param.comment!""} | ${param.type!""} | ${param.require!""} | ${param.remark!""} |
| ${param.name} | ${param.comment!""} | ${param.typeAlias!""} | ${param.require!""} | ${param.remark!""} |
</#list>
<#else>
暂无入参
Expand All @@ -30,7 +30,7 @@ ${method.remark!"暂无方法备注信息"}
| 字段 | 说明 | 字段类型 | 是否必填 | 备注 |
|:---|:---|:---|:---|:----|
<#list method.paramDetails[detailName] as param>
| ${param.name} | ${param.comment!""} | ${param.type!""} | ${param.require!""} | ${param.remark!""} |
| ${param.name} | ${param.comment!""} | ${param.typeAlias!""} | ${param.require!""} | ${param.remark!""} |
</#list>
</#list>
<#else>
Expand Down Expand Up @@ -59,7 +59,7 @@ ${method.remark!"暂无方法备注信息"}
| 字段 | 说明 | 字段类型 | 备注 |
|:---|:---|:---|:---|
<#list method.returnDetails[detailName] as param>
| ${param.name} | ${param.comment!""} | ${param.type!""} | ${param.remark!""} |
| ${param.name} | ${param.comment!""} | ${param.typeAlias!""} | ${param.remark!""} |
</#list>
</#list>
<#else>
Expand Down

0 comments on commit 10e7f32

Please sign in to comment.