use of app.hongs.cmdlet.anno.Cmdlet in project HongsCORE by ihongs.
the class CoreRoster method addCmds.
private static void addCmds(Map<String, Method> acts, Cmdlet anno, String clsn, Class clso) {
String actn = anno.value();
if (actn == null || actn.length() == 0) {
actn = clsn;
}
Method[] mtds = clso.getMethods();
for (Method mtdo : mtds) {
String mtdn = mtdo.getName();
// 从注解提取动作名
Cmdlet annx = (Cmdlet) mtdo.getAnnotation(Cmdlet.class);
if (annx == null) {
continue;
}
String actx = annx.value();
if (actx == null || actx.length() == 0) {
actx = mtdn;
}
// 检查方法是否合法
Class[] prms = mtdo.getParameterTypes();
if (prms == null || prms.length != 1 || !prms[0].isAssignableFrom(String[].class)) {
throw new HongsError(0x3c, "Can not find cmdlet method '" + clsn + "." + mtdn + "(String[])'.");
}
if ("__main__".equals(actx)) {
acts.put(actn, /*__main__*/
mtdo);
} else {
acts.put(actn + "." + actx, mtdo);
}
}
}
Aggregations