Hi guys. cordova-ios has a nice method binding for plugins. Unfortunately 
cordova-android requires at present boilerplate implementation of method 
execute:

public class MyPlugin extends CordovaPlugin {
    ...
    @Override
    public boolean execute(String action, JSONArray args, CallbackContext 
callbackContext) throws JSONException {
        if (METHOD_1.equals(action)) {
            method1(args, callbackContext);
        } else if (METHOD_2.equals(action)) {
            method2(args, callbackContext);
        ...
        } else {
            return false;
        }
        return true;
    }
    ...
}

I suggest to implement support for @CordovaMethod that will allow for plugin 
authors to reduce boilerplate code, so the implementation above will look like:

public class MyPlugin extends CordovaPlugin {
    ...
    @CordovaMethod
    private void method1(JSONArray args, CallbackContext callbackContext) 
throws JSONException {
        ...
    }

    @CordovaMethod
    private void method2(JSONArray args, CallbackContext callbackContext) 
throws JSONException {
        ...
    }
    ...
}

Implementation of method execute in CordovaPlugin.java will check for methods 
marked with @CordovaMethod and if action argument matches a method with 
@CordovaMethod, the method will be invoked. Developer can also specify action 
manually via the name parameter:

public class MyPlugin extends CordovaPlugin {
    ...
    @CordovaMethod(name = "method1")
    private void myMethod(JSONArray args, CallbackContext callbackContext) 
throws JSONException {
        ...
    }
    ...
}

Important to note that backward compatibility is preserved - old plugins didn't 
have @CordovaMethod, but new ones can use it to simplify code.

What do you think?


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org
For additional commands, e-mail: dev-h...@cordova.apache.org

Reply via email to