Hello Ray,

thank you for your reply.
Okay, i already assumed that it is not yet in.

do i understand your suggestion correctly that i then could do

@JsType
public interface Receiver {
  @JsProperty
  void onReady(JavaScriptObject onReady);
}

receiver.onReady(samToFunction(myCallback)); ?

btw: for me the short version like cb.@MyCallback::someMethod did not work 
in jsni even if i had the class imported and also used in java part (method 
params) of the code. i had to use the fully qualified name.

Am Mittwoch, 5. November 2014 09:17:29 UTC+1 schrieb Ray Cromwell:
>
> That document represents intent to implement, but SAM handling isn't 
> implemented yet in GWT 2.7, since it is most useful after Java8 lands. 
> Shortly Java8 will land, and then SAM handling in JsInterop and you'll 
> be able to use GWT 2.8 nightly snapshots. For now, you'll need a 
> utility function that wraps a SAM as a function, e.g. 
>
> public static native JavaScriptObject samToFunction(MyCallback cb) /*-{ 
>   return function(arg) { return cb.@MyCallback::someMethod(*)(arg); }; 
> }-*/; 
>
> On Tue, Nov 4, 2014 at 11:28 PM, Kay-Uwe Janssen <[email protected] 
> <javascript:>> wrote: 
> > As i had no luck on Google+ yet, i'll try it here. 
> > 
> > First the G+ Post: 
> > https://plus.google.com/116136390679208063122/posts/52kcbwwngWo 
> > 
> > 
> > Well I just started to work on a ChromeCast Receiver built with GWT. As 
> the 
> > Receiver API is in JS i wanted to try JSInterop over JSNI but had some 
> > struggle. 
> > 
> > The ChromeCast Api has some properties that can be set with a function 
> to 
> > act as a callback. eg for onReady. 
> > 
> > castReceiverManager.onReady = function(event) { 
> >   // do stuff 
> > }; 
> > 
> > Now my question is: How can i do this with JsInterop or is it not yet 
> > possible? 
> > 
> > as mentioned in 
> > 
> https://docs.google.com/document/d/1tir74SB-ZWrs-gQ8w-lOEV3oMY6u6lF2MmNivDEihZ4
>  
> > below "Single Abstract Method Handling" i tried something like this 
> > 
> > @JsType 
> > public interface Receiver { 
> >   @JsProperty 
> >   void onReady(Runnable onReady); 
> > } 
> > 
> > when trying to execute the method with this snipped i get "Exception 
> caught: 
> > (TypeError) : object is not a function" 
> > 
> > private native void test(Receiver receiver)/*-{ 
> >   receiver.onReady(); 
> > }-*/; 
> > 
> > 
> > to see whats the value of onReady i did console.log(receiver) and got 
> this: 
> > (where onReady is set the way above and onSenderConnected has been set 
> the 
> > JS way inside an JSNI method. 
> > 
> > onReady: JsTest$1_1_g$ 
> > onSenderConnected: function (event_0_g$) 
> > 
> > 
> > is there a way to achieve this yet or do i have to wait for 2.8/3.0? 
> > 
> > i tried to dig into the gwt code to see if there is a way to add 
> something 
> > to support this but unfortunately the gwt code for js processing is a 
> bit 
> > out of my scope. 
> > 
> > 
> > some possible solutions would be either 
> > interface JsFunction { 
> > <T> T call(Object... args); 
> > } 
> > or 
> > interface MyOnReadyCallback { 
> >   @JsFunction 
> >   MyReturnType anyName(String arg1, boolean arg2, SomeOtherType arg3); 
> > } 
> > 
> > and let the "Single Abstract Method Handling" find the method and add 
> it. 
> > 
> > 
> > Thanks! :) 
> > 
> > -- 
> > 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:>. 
> > To view this discussion on the web visit 
> > 
> https://groups.google.com/d/msgid/google-web-toolkit-contributors/d4c8fb2c-6060-4680-9b24-e118a452dc0d%40googlegroups.com.
>  
>
> > For more options, visit https://groups.google.com/d/optout. 
>

-- 
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/19535184-0160-472a-ae9a-f050662769b4%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to