I agree Brian, we first must know what we want.

- Andrés

El viernes, 9 de agosto de 2013 18:41:07 UTC-3, Brian Slesinsky escribió:
>
> I've published that doc here:
>
> https://docs.google.com/document/d/1MDqiBEMl7dylYliAceLBBxGFAlSvkQB9b-kSlnKmZBk/edit?disco=AAAAAGXNBZg#heading=h.gks1bp7hz61l
>
> To clarify, I'm not myself working on any GWT.create() enhancements, but I 
> thought it was worth documenting my concerns in greater detail rather than 
> just sending a -2. I think it's possible to improve GWT.create() but I want 
> to make sure we fully understand what we're getting ourselves into.
>
>
>
> On Fri, Aug 9, 2013 at 1:57 PM, Ray Cromwell <cromw...@google.com<javascript:>
> > wrote:
>
>> Andres,
>>   You might want to wait a day or two. I think Brian started one by copy 
>> and pasting your proposals and mine into a doc, it might be better for him 
>> to make it public and we all hack on that.
>>
>>
>>
>> On Fri, Aug 9, 2013 at 12:19 PM, Andrés Testi 
>> <andres....@gmail.com<javascript:>
>> > wrote:
>>
>>> 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>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<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.**blogspo**
>>>>>> t.com/2009/03/relaxing-**constra**ints-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.**htm**l<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.**createAndBin**dUi(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-**Contributo**
>>>>>>> rs <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-**contributor**s+unsubscribe@**
>>>>>>> googlegroups.com**.
>>>>>>> For more options, visit 
>>>>>>> https://groups.google.com/**grou**ps/opt_out<https://groups.google.com/groups/opt_out>
>>>>>>> .
>>>>>>>  
>>>>>>>  
>>>>>>>
>>>>>>
>>>>>>  -- 
>>>>> 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<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.


Reply via email to