On Wednesday, September 16, 2020 at 6:49:36 PM UTC+2, [email protected] 
wrote:
>
> Hi Thomas,
>
> ... actually I feel that doing platform specific stuffs in my code it's 
> not the way.
>
> It is comparable to GWT vs. jsweet. In GWT you have everything in Java 
> semantic. In jsweet you actually have everything in Java but with 
> JavaScript semantic. jsweet is for me still better than JavaScript 😉but I 
> lost the Java semantic.
>
> Putting platform specific stuffs in the code mixes the separation of 
> concern, IMHO...
>

Last time I wrote super-source was… last week!
Using @JsType(isNative=true,namespace=GLOBAL,name="Object") classes to talk 
to ProseMirror, translating between some XML and those JS objects 
(context: https://twitter.com/tbroyer/status/1303647011279966208).
In this case, this is purely client code, but I didn't want to use a 
GWTTestCase to test my XML↔Objects transforms, so I wrote the test to run 
in the JVM (and also made it work in a GWTTestCase, to make sure it does 
indeed work, but it's a lot slower).
Now how would you handle arrays? Well, I just use a 
@JsType(isNative=true,namespace=GLOBAL,name="Array") with a few @JsOverlay 
methods delegating to Js.asArrayLike(this)… in the super-source, with a 
simplement implementation wrapping an ArrayList for the JVM.
And how to compare the object trees in the tests? I cannot use things like 
isEqualToComparingFieldByFieldRecursively 
<https://joel-costigliola.github.io/assertj/assertj-core-features-highlight.html#field-by-field-comparison>,
 
and I didn't want to build something equivalent just for tests, so I just 
serialize them to JSON, using JSON.stringify() in super-source for GWT (not 
directly JSON.stringify() though, as object fields are not in a predictable 
order, but 
more 
https://www.rfc-editor.org/rfc/rfc8785.html#name-ecmascript-sample-canonical, 
which relies on JSON.stringify for "primitive" values), and GSON (that we 
already have around in GWT) in the JVM.
Of course I could have built things differently, with abstract factories so 
I could inject a GWT-specific or a JVM-specific one, and I actually went 
that route initially, but honestly, just so I can use a different List 
subclass within tests?

(granted, the previous time I wrote super source, besides GWT's own 
javaemul, was a long time ago :D but I never really shared a lot of code 
between server and client anyway: besides that rich text editor, those 10 
other subproject dependencies are actually only there for enums and some 
constants, and of course one of them is about RequestFactory interfaces)

-- 
You received this message because you are subscribed to the Google Groups "GWT 
Users" 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/0345bd0d-f5bc-48ed-a206-e2dd0b1825b9o%40googlegroups.com.

Reply via email to