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]> 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]>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].
>> 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.
>
>
>

-- 
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