> I will try to summarize my thought process and different options that
> I have played with so that you could get a better understanding where
> I'm coming from and I hope it will provide good documentation for
> future.

Thanks for the email; I think the format was really useful.

> One may argue that if we are committing to use some kind of DSL why
> not use something else like IDL or xml etc. There are 3 main reasons
> to use java + APT instead of others:

I really want to advocate APT, as I've used it and do generally like it,
but frankly it can be a huge PITA for Eclipse. See long-standing issues
e.g.:

https://github.com/square/dagger/issues/126

Granted, maybe someone can just fix Eclipse, but, in my experience, it
can really ruin the first impressions for a project (1000s of compile
errors due to missing generated code, and no hints that, btw, it's
because the APT was not on the classpath/didn't run).

> All the cons are around the testability aspect. For JRE testing,
> native methods are a headache. Also we no longer generate an interface
> for static methods.

I know I just bitched about APT, but, just musing, what if the class
(with the native methods/etc.) was the DSL the user wrote, and then APT
just generated an interface from that?

This is basically what I'm doing by hand in tessell with writing
IsTextBox for TextBox, etc.

I admittedly am not an expert on JS prototype semantics, so am not sure
how this would handle statics/etc. But in testing I usually only care
about instance methods anyway...

A few years ago I spiked an APT processor to do this automatically:

https://github.com/stephenh/interfacegen

The oddity then becomes that the user is writing "class JsObject", but
then if they want testable code, they need to code against the generated
"IsJsObject" interface. But perhaps that it's optional is a good thing,
e.g. you could come back and add the "@GenInterface"-type method later
if/when you wanted.

Anyway, I think I do like the last proposal, the class/native method
best.

Thanks, Goktug!

- Stephen

-- 
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/20141101102535.45715a48%40sh9.
For more options, visit https://groups.google.com/d/optout.

Reply via email to