Ray: I'm writing a design doc like "Nextgen GWT/JS Interop", but for "Relaxation of GWT.create()". I don't know if there are previous official efforts to bring something like this to life, but if so, I would like know about similar experiences. Is there a guideline for these kind of design doc? When I finish a first document draft, I will share it. Thanks!
- Andrés El miércoles, 7 de agosto de 2013 14:31:01 UTC-3, Ray Cromwell escribió: > > The annotations were also there to allow the compiler to do error checking > so that class-literal propagation was always possible. So if you write a > function foo(Class<?> klazz), that then calls GWT.create(klazz), there will > be a compile time error thrown if foo() is not called with a literal, just > like GWT.create(). This means that it will always be possible to propagate > the class literal from parameter to use. > > > > > On Wed, Aug 7, 2013 at 5:31 AM, Andrés Testi > <andres....@gmail.com<javascript:> > > wrote: > >> Hi Ray. I would like to add your proposal to my patch and generalize >> GWT.create() relaxation. I think your annotation @GwtCreate(generator=...) >> would solve my problem with the GWT frameworks tendency to instantiate >> everything with GWT.create() instead of new. >> As Matt Mastracci proposed here >> https://groups.google.com/d/msg/google-web-toolkit-contributors/_jf8vBC8QDI/X9LDLTbqB64J >> a >> better approach is to generate a GwtCreateFactory to replace @GwtCreate >> Class fields and params. >> I will elaborate a more advanced proposal with all of these in account. >> Thanks! >> >> - Andrés >> >> El lunes, 5 de agosto de 2013 20:37:45 UTC-3, Ray Cromwell escribió: >>> >>> Hey Andres, I haven't fully looked at this, but I'm overjoyed you're >>> working on it, and it seems promising. One thing you might want to do is >>> review one of my old proposals on allowing any method to delegate >>> parameters to GWT.create(), see here: http://timepedia.** >>> blogspot.com/2009/03/relaxing-**constraints-on-gwtcreate.html<http://timepedia.blogspot.com/2009/03/relaxing-constraints-on-gwtcreate.html> >>> >>> I'm wondering if your work could be adapted to support this. >>> >>> -Ray >>> >>> >>> >>> On Mon, Aug 5, 2013 at 8:36 AM, Andrés Testi <andres....@gmail.com>wrote: >>> >>>> Are there interest adding support for allowing >>>> GWT.create(this.getClass()) invocations? >>>> I wrote an experimental patch to support it, adding a few changes to >>>> UnifyAst. I've added the patch as an attached file, because I don't have >>>> yet a CLA (I know this is not the right way to proceed). >>>> There are many usecases for this feature, based in the super type token >>>> pattern (http://gafter.blogspot.com.**ar/2006/12/super-type-tokens.** >>>> html <http://gafter.blogspot.com.ar/2006/12/super-type-tokens.html>). >>>> I've named this feature as Self Generated Objects (selfgen). >>>> >>>> * Some use cases are: >>>> -- Hide invocations to GWT.create() >>>> -- Reduce boilerplate, minimizing the need of extend interfaces like >>>> UiBinder, EditorDriver, etc.. >>>> Example, a custom composite : >>>> >>>> abstract class UiBinderComposite extends Composite { >>>> protected UiBinderComposite() { >>>> UiBinder<Widget, UiBinderComposite> binder = >>>> GWT.create(this.getClass()); >>>> initWidget(binder.**createAndBindUi(this)); >>>> } >>>> } >>>> >>>> // Usage: >>>> @UiTemplate("mywidget.ui.xml") >>>> class MyUiBinderWidget extends UiBinderComposite { >>>> >>>> @UiField >>>> Button clickMe; >>>> } >>>> >>>> -- Allow runtime type information on demand (Stroustrup’s zero-overhead >>>> rule: “what you don’t use, you don’t pay for”) by means of emulation of >>>> guava's TypeToken >>>> Example: >>>> abstract class TypeToken<T> { >>>> >>>> private final TypeInfo<T> typeInfo; >>>> >>>> protected TypeToken() { >>>> typeInfo = GWT.create(this.getClass()); >>>> } >>>> >>>> ... >>>> } >>>> >>>> // Usage >>>> new TypeToken<List<String>>(){} >>>> >>>> * Implementation >>>> To support this feature, my patch searchs for >>>> GWT.create(this.getClass()) invocations, and replaces they with an >>>> invocation to a syntetic method named this$create. This method is added to >>>> the current class, and is implemented for each non abstract subclass, >>>> returning an invocation to GWT.create(currentClass). >>>> >>>> * Problems found with this implementation: >>>> -- Anonymous classes are hidden to generators, and it is unable to do >>>> something like new TypeToken<List<String>>(){}. Workaround: Expose these >>>> classes. >>>> -- GWT frameworks have a tendence to instantiate user objects calling >>>> GWT.create() instead of new operator. With GWT.create(this.getClass()) we >>>> want to instantiate a diferent class, like UiBinder in UiBinderComposite. >>>> Workaroud: Provide a flag to generators reporting if the invocation was >>>> from a class literal or a this.getClass() invocation. >>>> >>>> I've added a sample application to my patch, called HelloSelfgen, >>>> demostrating how to write a self generated UiBinderComposite. >>>> >>>> Regards. >>>> >>>> - Andrés >>>> >>>> -- >>>> http://groups.google.com/**group/Google-Web-Toolkit-**Contributors<http://groups.google.com/group/Google-Web-Toolkit-Contributors> >>>> --- >>>> 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 google-web-toolkit-**contributors+unsubscribe@** >>>> googlegroups.com. >>>> For more options, visit >>>> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out> >>>> . >>>> >>>> >>>> >>> >>> -- >> http://groups.google.com/group/Google-Web-Toolkit-Contributors >> --- >> 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 >> google-web-toolkit-contributors+unsubscr...@googlegroups.com<javascript:> >> . >> For more options, visit https://groups.google.com/groups/opt_out. >> >> >> > > -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- 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 google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.