Search in sources :

Example 1 with Callback3

use of org.nutz.lang.util.Callback3 in project nutz by nutzam.

the class JsonEntityFieldMakerImpl method make.

@Override
public JsonEntityField make(Mirror<?> mirror, final Method method) {
    final JsonField jf = method.getAnnotation(JsonField.class);
    // 忽略方法
    if (null == jf || jf.ignore())
        return null;
    final JsonEntityField[] result = new JsonEntityField[1];
    // 如果有,尝试作新的 Entity
    Callback<Method> whenError = new Callback<Method>() {

        // 给定方法即不是 getter 也不是 setter,靠!玩我!
        public void invoke(Method m) {
            throw Lang.makeThrow(JsonException.class, "JsonField '%s' should be getter/setter pair!", m);
        }
    };
    Callback3<String, Method, Method> whenOk = new Callback3<String, Method, Method>() {

        public void invoke(String name, Method getter, Method setter) {
            // 防止错误
            if (null == getter || null == setter || Strings.isBlank(name)) {
                throw Lang.makeThrow(JsonException.class, "JsonField '%s' should be getter/setter pair!", method);
            }
            // 加入字段表
            JsonEntityField ef = JsonEntityField.eval(Strings.sBlank(jf.value(), name), getter, setter);
            result[0] = ef;
        }
    };
    Mirror.evalGetterSetter(method, whenOk, whenError);
    return result[0];
}
Also used : JsonField(org.nutz.json.JsonField) JsonEntityField(org.nutz.json.entity.JsonEntityField) Callback(org.nutz.lang.util.Callback) Callback3(org.nutz.lang.util.Callback3) Method(java.lang.reflect.Method)

Aggregations

Method (java.lang.reflect.Method)1 JsonField (org.nutz.json.JsonField)1 JsonEntityField (org.nutz.json.entity.JsonEntityField)1 Callback (org.nutz.lang.util.Callback)1 Callback3 (org.nutz.lang.util.Callback3)1