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 <[email protected]<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 
>> <[email protected]<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 <[email protected]>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 <[email protected]>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 
>>> [email protected]<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 
>> [email protected]<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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to