How about iOS annotation @CordovaMethod.Because the way Android and iOS and
other OS plugin implementation should be same.We need think that aspect.


On Sun, Apr 29, 2018, 21:08 Joe Bowser <bows...@gmail.com> wrote:

> Cordova should be reducing the use of Reflection, not increasing it.  I
> don't think this is a good idea.
>
> On Sun, Apr 29, 2018, 8:28 AM Jesse, <purplecabb...@gmail.com> wrote:
>
> > I would like to see proof of value.
> > I believe the lookup of an action is insignificant compared to the
> message
> > conversion between js and native.
> > Please write some tests to justify your position.
> >
> >
> > > On Apr 29, 2018, at 7:59 AM, julio cesar sanchez <
> jcesarmob...@gmail.com>
> > wrote:
> > >
> > > I think it's a good idea.
> > >
> > > FYI, there is a plugin that already allows this, you just have to add
> it
> > as
> > > a dependency, but it's not backward compatible
> > > https://github.com/edewit/aerogear-reflect-cordova
> > >
> > > 2018-04-29 16:44 GMT+02:00 Wojciech Trocki <wtro...@redhat.com>:
> > >
> > >> Hi Maksim
> > >>
> > >> `if (METHOD_1.equals(action))` is very similar way to how redux works.
> > >>
> > >> I have playing with your proposition to see how this could be
> > implemented.
> > >> What I found is that processing annotations on runtime can contribute
> to
> > >> slower application startup due to fact that annotation needs to be
> > >> processed at runtime.
> > >> Deviceready event is delivered later, which is not desired. This could
> > be
> > >> also processed on build time (something like dagger), but I did not
> > >> investigated that.
> > >>
> > >> I figured out simple way to extend this without any sacrifice on
> > >> performance.
> > >> This will simplify end user api and also still provide full backwards
> > >> compatibility.
> > >> We could make improvement for developers without affecting end user
> app
> > >> performance.
> > >>
> > >> Linking gist with the idea:
> > >> https://gist.github.com/wtrocki/43bfdda18c086a3283bb8ba3bf2d052e
> > >>
> > >> Happy to contribute that back to the Cordova.
> > >>
> > >> *Note: *I'm not maintainer of Cordova Android platform so my response
> do
> > >> not mean that there will be approval for this change.
> > >>
> > >>
> > >> On Sun, Apr 29, 2018 at 9:58 AM, chemeri...@gmail.com <
> > >> chemeri...@gmail.com>
> > >> wrote:
> > >>
> > >>> 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
> > >>>
> > >>>
> > >>
> > >>
> > >> --
> > >>
> > >> WOJCIECH TROCKI
> > >>
> > >> Red Hat Mobile <https://www.redhat.com/>
> > >>
> > >> IM: wtrocki
> > >> <https://red.ht/sig>
> > >>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org
> > For additional commands, e-mail: dev-h...@cordova.apache.org
> >
> >
>

Reply via email to