This commit is contained in:
@@ -81,6 +81,40 @@ public class ApiDocs extends HttpBaseServlet {
|
|||||||
actionmap.put("comment", action.comment());
|
actionmap.put("comment", action.comment());
|
||||||
List<Map> paramsList = new ArrayList<>();
|
List<Map> paramsList = new ArrayList<>();
|
||||||
actionmap.put("params", paramsList);
|
actionmap.put("params", paramsList);
|
||||||
|
List<String> results = new ArrayList<>();
|
||||||
|
for (final Class rtype : action.results()) {
|
||||||
|
results.add(rtype.getName());
|
||||||
|
if (typesmap.containsKey(rtype.getName())) continue;
|
||||||
|
|
||||||
|
final Map<String, Map<String, String>> typemap = new LinkedHashMap<>();
|
||||||
|
Class loop = rtype;
|
||||||
|
do {
|
||||||
|
if (loop == null || loop.isInterface()) break;
|
||||||
|
for (Field field : loop.getDeclaredFields()) {
|
||||||
|
if (Modifier.isFinal(field.getModifiers())) continue;
|
||||||
|
if (Modifier.isStatic(field.getModifiers())) continue;
|
||||||
|
|
||||||
|
Map<String, String> fieldmap = new LinkedHashMap<>();
|
||||||
|
fieldmap.put("type", field.getType().isArray() ? (field.getType().getComponentType().getName() + "[]") : field.getGenericType().getTypeName());
|
||||||
|
|
||||||
|
Comment comment = field.getAnnotation(Comment.class);
|
||||||
|
if (comment != null) {
|
||||||
|
fieldmap.put("comment", comment.value());
|
||||||
|
} else {
|
||||||
|
Column col = field.getAnnotation(Column.class);
|
||||||
|
if (col != null) fieldmap.put("comment", col.comment());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (servlet.getClass().getAnnotation(Rest.RestDynamic.class) != null) {
|
||||||
|
if (field.getAnnotation(RestAddress.class) != null) continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
typemap.put(field.getName(), fieldmap);
|
||||||
|
}
|
||||||
|
} while ((loop = loop.getSuperclass()) != Object.class);
|
||||||
|
typesmap.put(rtype.getName(), typemap);
|
||||||
|
}
|
||||||
|
actionmap.put("results", results);
|
||||||
for (WebParam param : method.getAnnotationsByType(WebParam.class)) {
|
for (WebParam param : method.getAnnotationsByType(WebParam.class)) {
|
||||||
final Map<String, Object> parammap = new LinkedHashMap<>();
|
final Map<String, Object> parammap = new LinkedHashMap<>();
|
||||||
final boolean isarray = param.type().isArray();
|
final boolean isarray = param.type().isArray();
|
||||||
|
|||||||
@@ -55,7 +55,13 @@
|
|||||||
}
|
}
|
||||||
paramshtml.push('</table>');
|
paramshtml.push('</table>');
|
||||||
html.push('<td class="s" style="padding:0 5px;">' + paramshtml.join('') + '</td>');
|
html.push('<td class="s" style="padding:0 5px;">' + paramshtml.join('') + '</td>');
|
||||||
html.push('<td>' + action.result.replace(/</g,"<").replace(/>/g,">").replace(/([a-zA-Z0-9_\$]+\.)+/g, "") + '</td>');
|
var rs = [];
|
||||||
|
rs.push(action.result.replace(/</g, "<").replace(/>/g, ">").replace(/([a-zA-Z0-9_\$]+\.)+/g, ""));
|
||||||
|
var results = action.results || [];
|
||||||
|
for (var r = 0; r < results.length; r++) {
|
||||||
|
rs.push('<a href="#' + results[r].replace('[]', '') + '">' + results[r].replace(/([a-zA-Z0-9_\$]+\.)+/g, "") + '</a>');
|
||||||
|
}
|
||||||
|
html.push('<td>' + rs.join("<br/>") + '</td>');
|
||||||
html.push('</tr>');
|
html.push('</tr>');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -66,7 +72,7 @@
|
|||||||
html.push(' <tr><td colspan="5"><table class="typetable">');
|
html.push(' <tr><td colspan="5"><table class="typetable">');
|
||||||
for (var fieldname in classmap[type]) {
|
for (var fieldname in classmap[type]) {
|
||||||
var field = classmap[type][fieldname];
|
var field = classmap[type][fieldname];
|
||||||
var t = field.type.replace(/</g,"<").replace(/>/g,">").replace(/([a-zA-Z0-9_\$]+\.)+/g, "");
|
var t = field.type.replace(/</g, "<").replace(/>/g, ">").replace(/([a-zA-Z0-9_\$]+\.)+/g, "");
|
||||||
html.push(' <tr class="l"><td>' + fieldname + '</td><td>' + t + '</td><td colspan="2">' + (field.comment || '') + '</td></tr>');
|
html.push(' <tr class="l"><td>' + fieldname + '</td><td>' + t + '</td><td colspan="2">' + (field.comment || '') + '</td></tr>');
|
||||||
}
|
}
|
||||||
html.push(' </table></td></tr>');
|
html.push(' </table></td></tr>');
|
||||||
|
|||||||
@@ -121,9 +121,11 @@ public abstract class HttpBaseServlet extends HttpServlet {
|
|||||||
|
|
||||||
String comment() default ""; //备注描述
|
String comment() default ""; //备注描述
|
||||||
|
|
||||||
|
boolean inherited() default true; //是否能被继承, 当 HttpBaseServlet 被继承后该方法是否能被子类继承
|
||||||
|
|
||||||
String result() default "Object"; //输出结果的数据类型
|
String result() default "Object"; //输出结果的数据类型
|
||||||
|
|
||||||
boolean inherited() default true; //是否能被继承, 当 HttpBaseServlet 被继承后该方法是否能被子类继承
|
Class[] results() default {}; //输出结果的数据类型集合,由于结果类型可能是泛型而注解的参数值不支持泛型,因此加入明细数据类型集合
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user