Search in sources :

Example 11 with Cmdlet

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);
        }
    }
}
Also used : Cmdlet(app.hongs.cmdlet.anno.Cmdlet) Method(java.lang.reflect.Method)

Aggregations

Cmdlet (app.hongs.cmdlet.anno.Cmdlet)11 Map (java.util.Map)7 HongsException (app.hongs.HongsException)4 ActionHelper (app.hongs.action.ActionHelper)3 IOException (java.io.IOException)3 HashMap (java.util.HashMap)3 TreeMap (java.util.TreeMap)3 LuceneRecord (app.hongs.dh.lucene.LuceneRecord)2 File (java.io.File)2 Method (java.lang.reflect.Method)2 Matcher (java.util.regex.Matcher)2 CoreConfig (app.hongs.CoreConfig)1 CoreLogger (app.hongs.CoreLogger)1 Mathod (app.hongs.CoreRoster.Mathod)1 HongsError (app.hongs.HongsError)1 ActionRunner (app.hongs.action.ActionRunner)1 VerifyHelper (app.hongs.action.VerifyHelper)1 Action (app.hongs.action.anno.Action)1 DB (app.hongs.db.DB)1 Table (app.hongs.db.Table)1