I agree - I much more prefer the separate annotations. Regards, Marcin Okraszewski
On Wednesday, 22 April 2015 11:47:41 UTC+2, Julien Dramaix wrote: > > I'm really more in favor of the second options because (in addition to > Jens' arguments): > - it's more readable to have several meaningful annotations than one with > several parameters. And I think it's more Javaish. simple example : > @JsIgnore vs @Js(ignore=true) > - IMO, the option 1 won't be simpler to learn for developper and I think > instead it will be more confusing for the gwt developers. Most of > parameters on the annotations cannot be used simultaneously and can be used > only on specific case (for instance: exports parameter has only a meaning > when the annotation is on type) > > > > > On Wed, Apr 22, 2015 at 6:06 AM 'Goktug Gokdogan' via GWT Contributors < > [email protected] <javascript:>> wrote: > >> Yes and no depending what you mean. >> >> Before answering that I think there might have been some confusion the >> way I listed the options in the doc so let me try to summarize it again. >> >> There are 3 options. >> >> Option 1 uses @Js annotation everywhere. There is no other annotation. >> The @Js annotation can be applied to a class and in general it will behave >> similar to applying the annotation to all public members (if that is >> what you meant as syntactic sugar). >> This is the one that is described first in the doc and it is the >> direction we are heading right now. >> >> Option 2 uses @JsType/@JsFunction/@JsLiteral for types and @JsMember for >> members. @JsExport, @JsProperty, @JsMethod etc. are still gone (if >> that's what you meant with syntactic sugar). @JsNamespace is still used >> for setting namespaces where needed. So this is more or less the same >> design as Option 1 but separates the annotation used at class level from >> the one used at members. >> This is listed as "Alternative 1" in the doc. Originally this was the >> direction we were heading and it was described at the beginning while >> Option 1 was listed as "Alternative 1". I changed the order because John >> and Roberto both argued having single annotation (i.e. @Js) is simpler. >> >> Option 3 uses @JsImport/JsExport and it is completely separate design >> from the first two options. >> This is listed as "Alternative 2". >> >> Personally I am more towards Option 2 (see the pros and cons for the >> Option 2 in the doc) but I am getting mixed signals from outside so I need >> more feedback from developers. >> >> >> On Tue, Apr 21, 2015 at 6:21 PM, 'Ray Cromwell' via GWT Contributors < >> [email protected] <javascript:>> wrote: >> >>> Goktug, I though we were keeping @JsType and others as syntactic sugar? >>> >>> >>> On Tue, Apr 21, 2015 at 5:40 PM, Jens <[email protected] >>> <javascript:>> wrote: >>> >>>> Damn it, Safari crashed. So now a shorter version of my answer: >>>> >>>> First I agree that the current design has become quite confusing. >>>> Personally I really dislike the single @Js annotation approach because: >>>> - can be applied everywhere so you throw away some compile time checks >>>> provided by Java's @Target annotation >>>> - exports vs. export is a bit misleading. One must be used with >>>> interfaces/classes the other with methods. That issue only exists because >>>> @Js alone has no real meaning. >>>> - You have to type more because it is always annotation name + property >>>> + value if you can't stick with the default "@Js". >>>> - Can't see a good use case for splitting exports in ALL, >>>> INSTANCE_MEMBERS and STATIC_MEMBERS. When I want to export a class I want >>>> to export its public API. >>>> >>>> >>>> Personally what describes JsInterop best is the alternative using the >>>> import/export concepts. So I would stick with: >>>> >>>> Import/Export types: >>>> >>>> @JsImport: can only be applied on interfaces. >>>> @JsExport: always exports all public API in a given scope (package, >>>> class, method). So no ALL, INSTANCE_MEMBER, STATIC_MEMBER distinction. >>>> @JsIgnore can be used to opt-out selectively. >>>> >>>> Configure import/export: >>>> >>>> @JsNamespace: import/export from/to namespace >>>> @JsName: workaround reserved keywords >>>> @JsProperty: mark method as JS property >>>> @JsIgnore: opt-out of export. Might even be useful for import, e.g. do >>>> not generate trampoline for annotated default method. >>>> >>>> Special constructs: >>>> >>>> @JsLiteral >>>> @JsFunction (currently it seems not to be a real function which breaks >>>> interop >>>> <https://groups.google.com/d/msg/google-web-toolkit/PHtfLTSAJDM/oJjAo3qWa7sJ> >>>> ) >>>> >>>> >>>> I guess that is the cleanest you can get. Not sure what @JsOpaque is >>>> good for?! >>>> >>>> -- J. >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "GWT Contributors" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to >>>> [email protected] >>>> <javascript:>. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/google-web-toolkit-contributors/778b8f0b-8cc1-4a90-84d5-39c1b9c02afb%40googlegroups.com >>>> >>>> <https://groups.google.com/d/msgid/google-web-toolkit-contributors/778b8f0b-8cc1-4a90-84d5-39c1b9c02afb%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "GWT Contributors" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected] >>> <javascript:>. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAPVRV7ec1A4w4sb4ZN9wpruLg7K%2BrdnQq3nC0LXtSCK2N5%3DBeQ%40mail.gmail.com >>> >>> <https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAPVRV7ec1A4w4sb4ZN9wpruLg7K%2BrdnQq3nC0LXtSCK2N5%3DBeQ%40mail.gmail.com?utm_medium=email&utm_source=footer> >>> . >>> >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "GWT Contributors" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] >> <javascript:>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAN%3DyUA3JFP%2BruK-ysKOCD6AMEDvvV4neVsHk%3DcMGP6AbNNLFXA%40mail.gmail.com >> >> <https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAN%3DyUA3JFP%2BruK-ysKOCD6AMEDvvV4neVsHk%3DcMGP6AbNNLFXA%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > -- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/google-web-toolkit-contributors/00168a9a-989e-4f8c-8f21-3d8da69e71ac%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
