Search in sources :

Example 1 with MethodInvoker

use of com.taobao.weex.bridge.MethodInvoker in project weex-example by KalicyZhou.

the class TypeModuleFactory method generateMethodMap.

private void generateMethodMap() {
    if (WXEnvironment.isApkDebugable()) {
        WXLogUtils.d(TAG, "extractMethodNames:" + mClazz.getSimpleName());
    }
    HashMap<String, Invoker> methodMap = new HashMap<>();
    try {
        for (Method method : mClazz.getMethods()) {
            // iterates all the annotations available in the method
            for (Annotation anno : method.getDeclaredAnnotations()) {
                if (anno != null) {
                    if (anno instanceof JSMethod) {
                        JSMethod methodAnnotation = (JSMethod) anno;
                        String name = JSMethod.NOT_SET.equals(methodAnnotation.alias()) ? method.getName() : methodAnnotation.alias();
                        methodMap.put(name, new MethodInvoker(method, methodAnnotation.uiThread()));
                        break;
                    } else if (anno instanceof WXModuleAnno) {
                        WXModuleAnno methodAnnotation = (WXModuleAnno) anno;
                        methodMap.put(method.getName(), new MethodInvoker(method, methodAnnotation.runOnUIThread()));
                        break;
                    }
                }
            }
        }
    } catch (Throwable e) {
        WXLogUtils.e("[WXModuleManager] extractMethodNames:", e);
    }
    mMethodMap = methodMap;
}
Also used : MethodInvoker(com.taobao.weex.bridge.MethodInvoker) Invoker(com.taobao.weex.bridge.Invoker) HashMap(java.util.HashMap) JSMethod(com.taobao.weex.annotation.JSMethod) Method(java.lang.reflect.Method) JSMethod(com.taobao.weex.annotation.JSMethod) Annotation(java.lang.annotation.Annotation) MethodInvoker(com.taobao.weex.bridge.MethodInvoker)

Example 2 with MethodInvoker

use of com.taobao.weex.bridge.MethodInvoker in project incubator-weex by apache.

the class ConfigModuleFactory method generateMethodMap.

private void generateMethodMap() {
    if (WXEnvironment.isApkDebugable()) {
        WXLogUtils.d(TAG, "extractMethodNames:" + mClazz.getSimpleName());
    }
    HashMap<String, Invoker> methodMap = new HashMap<>();
    try {
        for (Method method : mClazz.getMethods()) {
            // iterates all the annotations available in the method
            for (Annotation anno : method.getDeclaredAnnotations()) {
                if (anno != null) {
                    if (anno instanceof JSMethod) {
                        JSMethod methodAnnotation = (JSMethod) anno;
                        String name = JSMethod.NOT_SET.equals(methodAnnotation.alias()) ? method.getName() : methodAnnotation.alias();
                        methodMap.put(name, new MethodInvoker(method, methodAnnotation.uiThread()));
                        break;
                    } else if (anno instanceof WXModuleAnno) {
                        WXModuleAnno methodAnnotation = (WXModuleAnno) anno;
                        methodMap.put(method.getName(), new MethodInvoker(method, methodAnnotation.runOnUIThread()));
                        break;
                    }
                }
            }
        }
    } catch (Throwable e) {
        WXLogUtils.e("[WXModuleManager] extractMethodNames:", e);
    }
    mMethodMap = methodMap;
}
Also used : WXModuleAnno(com.taobao.weex.common.WXModuleAnno) MethodInvoker(com.taobao.weex.bridge.MethodInvoker) Invoker(com.taobao.weex.bridge.Invoker) HashMap(java.util.HashMap) JSMethod(com.taobao.weex.annotation.JSMethod) Method(java.lang.reflect.Method) JSMethod(com.taobao.weex.annotation.JSMethod) Annotation(java.lang.annotation.Annotation) MethodInvoker(com.taobao.weex.bridge.MethodInvoker)

Example 3 with MethodInvoker

use of com.taobao.weex.bridge.MethodInvoker in project incubator-weex by apache.

the class TypeModuleFactory method generateMethodMap.

private void generateMethodMap() {
    if (WXEnvironment.isApkDebugable()) {
        WXLogUtils.d(TAG, "extractMethodNames:" + mClazz.getSimpleName());
    }
    HashMap<String, Invoker> methodMap = new HashMap<>();
    try {
        for (Method method : mClazz.getMethods()) {
            // iterates all the annotations available in the method
            for (Annotation anno : method.getDeclaredAnnotations()) {
                if (anno != null) {
                    if (anno instanceof JSMethod) {
                        JSMethod methodAnnotation = (JSMethod) anno;
                        String name = JSMethod.NOT_SET.equals(methodAnnotation.alias()) ? method.getName() : methodAnnotation.alias();
                        methodMap.put(name, new MethodInvoker(method, methodAnnotation.uiThread()));
                        break;
                    } else if (anno instanceof WXModuleAnno) {
                        WXModuleAnno methodAnnotation = (WXModuleAnno) anno;
                        methodMap.put(method.getName(), new MethodInvoker(method, methodAnnotation.runOnUIThread()));
                        break;
                    }
                }
            }
        }
    } catch (Throwable e) {
        WXLogUtils.e("[WXModuleManager] extractMethodNames:", e);
    }
    mMethodMap = methodMap;
}
Also used : MethodInvoker(com.taobao.weex.bridge.MethodInvoker) Invoker(com.taobao.weex.bridge.Invoker) HashMap(java.util.HashMap) JSMethod(com.taobao.weex.annotation.JSMethod) Method(java.lang.reflect.Method) JSMethod(com.taobao.weex.annotation.JSMethod) Annotation(java.lang.annotation.Annotation) MethodInvoker(com.taobao.weex.bridge.MethodInvoker)

Example 4 with MethodInvoker

use of com.taobao.weex.bridge.MethodInvoker in project weex-example by KalicyZhou.

the class SimpleComponentHolder method getMethods.

static Pair<Map<String, Invoker>, Map<String, Invoker>> getMethods(Class clz) {
    Map<String, Invoker> methods = new HashMap<>();
    Map<String, Invoker> mInvokers = new HashMap<>();
    Annotation[] annotations;
    Annotation anno;
    try {
        for (Method method : clz.getMethods()) {
            try {
                annotations = method.getDeclaredAnnotations();
                for (int i = 0, annotationsCount = annotations.length; i < annotationsCount; ++i) {
                    anno = annotations[i];
                    if (anno == null) {
                        continue;
                    }
                    if (anno instanceof WXComponentProp) {
                        String name = ((WXComponentProp) anno).name();
                        methods.put(name, new MethodInvoker(method, true));
                        break;
                    } else if (anno instanceof JSMethod) {
                        JSMethod methodAnno = (JSMethod) anno;
                        String name = methodAnno.alias();
                        if (JSMethod.NOT_SET.equals(name)) {
                            name = method.getName();
                        }
                        mInvokers.put(name, new MethodInvoker(method, methodAnno.uiThread()));
                        break;
                    }
                }
            } catch (ArrayIndexOutOfBoundsException | IncompatibleClassChangeError e) {
            //ignore: getDeclaredAnnotations may throw this
            }
        }
    } catch (IndexOutOfBoundsException e) {
        e.printStackTrace();
    //ignore: getMethods may throw this
    }
    return new Pair<>(methods, mInvokers);
}
Also used : HashMap(java.util.HashMap) JSMethod(com.taobao.weex.annotation.JSMethod) Method(java.lang.reflect.Method) JSMethod(com.taobao.weex.annotation.JSMethod) Annotation(java.lang.annotation.Annotation) MethodInvoker(com.taobao.weex.bridge.MethodInvoker) Invoker(com.taobao.weex.bridge.Invoker) WXComponentProp(com.taobao.weex.ui.component.WXComponentProp) MethodInvoker(com.taobao.weex.bridge.MethodInvoker) Pair(android.util.Pair)

Example 5 with MethodInvoker

use of com.taobao.weex.bridge.MethodInvoker in project incubator-weex by apache.

the class SimpleComponentHolder method getMethods.

public static Pair<Map<String, Invoker>, Map<String, Invoker>> getMethods(Class clz) {
    Map<String, Invoker> methods = new HashMap<>();
    Map<String, Invoker> mInvokers = new HashMap<>();
    Annotation[] annotations;
    Annotation anno;
    try {
        for (Method method : clz.getMethods()) {
            try {
                annotations = method.getDeclaredAnnotations();
                for (int i = 0, annotationsCount = annotations.length; i < annotationsCount; ++i) {
                    anno = annotations[i];
                    if (anno == null) {
                        continue;
                    }
                    if (anno instanceof WXComponentProp) {
                        String name = ((WXComponentProp) anno).name();
                        methods.put(name, new MethodInvoker(method, true));
                        break;
                    } else if (anno instanceof JSMethod) {
                        JSMethod methodAnno = (JSMethod) anno;
                        String name = methodAnno.alias();
                        if (JSMethod.NOT_SET.equals(name)) {
                            name = method.getName();
                        }
                        mInvokers.put(name, new MethodInvoker(method, methodAnno.uiThread()));
                        break;
                    }
                }
            } catch (ArrayIndexOutOfBoundsException | IncompatibleClassChangeError e) {
            // ignore: getDeclaredAnnotations may throw this
            }
        }
    } catch (IndexOutOfBoundsException e) {
        e.printStackTrace();
    // ignore: getMethods may throw this
    }
    return new Pair<>(methods, mInvokers);
}
Also used : HashMap(java.util.HashMap) JSMethod(com.taobao.weex.annotation.JSMethod) Method(java.lang.reflect.Method) JSMethod(com.taobao.weex.annotation.JSMethod) Annotation(java.lang.annotation.Annotation) MethodInvoker(com.taobao.weex.bridge.MethodInvoker) Invoker(com.taobao.weex.bridge.Invoker) WXComponentProp(com.taobao.weex.ui.component.WXComponentProp) MethodInvoker(com.taobao.weex.bridge.MethodInvoker) Pair(android.util.Pair)

Aggregations

JSMethod (com.taobao.weex.annotation.JSMethod)5 Invoker (com.taobao.weex.bridge.Invoker)5 MethodInvoker (com.taobao.weex.bridge.MethodInvoker)5 Annotation (java.lang.annotation.Annotation)5 Method (java.lang.reflect.Method)5 HashMap (java.util.HashMap)5 Pair (android.util.Pair)2 WXComponentProp (com.taobao.weex.ui.component.WXComponentProp)2 WXModuleAnno (com.taobao.weex.common.WXModuleAnno)1