typo....have .'s instead of /'s in the JSNI...fixed an am trying now

On Sep 15, 12:21 pm, JaM <jej2...@gmail.com> wrote:
> also, unless I am doing something wrong the above does not seem to
> work properly....
>
> I get an error on compile saying [ERROR] Line 50:  Expected a valid
> parameter type signature in JSNI method reference which is pointing at
> the nativeSubscribe method.  Again your help is appreciated.
>
>         public native void nativeSubscribe(String channel, EventHandler
> callback) /*-{
>                 $wnd.subscribe(function(channel) {
>                 @my.package.EventingController::callback
> (Lmy.package.EventHandler;Ljava/lang/String;Ljava/lang/String;)
> (channel, callback);
>                 });
>         }-*/;
>
>         private static void callback(EventHandler callback, String sender,
> String message) {
>                 UncaughtExceptionHandler handler = 
> GWT.getUncaughtExceptionHandler
> ();
>                 if (handler == null) {
>                         callbackImpl(callback, sender, message);
>                 } else {
>                         callbackAndCatch(handler, callback, sender, message);
>                 }
>         }
>
>         private static void callbackImpl(EventHandler callback, String
> sender,
>                         String message) {
>                 callback.onEvent(sender, message);
>         }
>
>         private static void callbackAndCatch(UncaughtExceptionHandler
> handler,
>                         EventHandler callback, String sender, String message) 
> {
>                 try {
>                         callbackImpl(callback, sender, message);
>                 } catch (Throwable t) {
>                         handler.onUncaughtException(t);
>                 }
>
>         }
>
> On Sep 15, 11:21 am,JaM<jej2...@gmail.com> wrote:
>
> > Thanks for the reply!  I am trying to digest this as I am new to GWT
> > and Javascript so please bare with me.
>
> > Ok, so clearly I am missing something here.  Currently I am not
> > calling static methods (is this required?) for the callback because I
> > want to be able to access member variables.  I have the following
>
> > public interface EventHandler {
> >    void onEvent(String channel, String message);
>
> > }
>
> >         native void nativeMethod(String channel, EventHandler handler) /*-{
> >                 $wnd.subscribe(channel, 
> > handl...@my.package.eventhandler::onEvent
> > (Ljava/lang/String;Ljava/lang/String;));
> >         }-*/;
>
> > but when the onEvent gets called I can only access some final
> > variables (none of the GXT members can be accessed, really only public
> > strings).  In order to make this work I have to make my member
> > variables static, otherwise everything comes up as undefined, which is
> > why I believe this is a scope issue.  Should what I am doing work?
>
> > I am also trying to do the following (which I think is your
> > suggestion)
> > native void nativeSubscribe(String channel, EventHandler handler) /*-{
> >         var that = handler;
> >         $wnd.subscribe(function(channel, handler) {
> >                 
> > handl...@my.package.eventhandler::onEvent(Ljava/lang/String;Ljava/
> > lang/String;)(that, channel, message);
> >         });}-*/;
>
> > but that did not work at all.  Any thoughts?
>
> > On Sep 15, 10:23 am, Thomas Broyer <t.bro...@gmail.com> wrote:
>
> > > On 15 sep, 04:24,JaM<jej2...@gmail.com> wrote:
>
> > > > I previously posted about Shindig, when probably more appropriately I
> > > > should have posted this question (sorry for the dup).
>
> > > > I have successfully implemented a callback in Java (using an
> > > > interface) which is called from Javascript appropriately, but after
> > > > doing so it seems something is not quite right (perhaps the scope, not
> > > > really sure how to determine).  The issue is that I now get an error
> > > > that says something like jV(this.a.a...) and it throws an error saying
> > > > this.a is undefined.  The issue only happens when I am trying to
> > > > access instance variables inside my java code.  If I do not access
> > > > instance variables everything works fine, which leads me to believe it
> > > > may be a scoping issue.  Is there a general rule of thumb for how to
> > > > do this correctly in GWT?  Any pointers would be greatly appreciated.
>
> > > This generally works:
>
> > > public interface MyCallback {
> > >    void callback(int a, int b, String c);
>
> > > }
>
> > > public native void doSomething(MyCallback callback) /*-{
> > >     $wnd.doSomething(function(a, b, c) {
> > >         callba...@my.package.mycallback::callback(IILjava/lang/String;)
> > > (a, b, c);
> > >     });
>
> > > }-*/;
>
> > > Actually, you'd generally call some static method that uses the
> > > UncaughtExceptionHandler if there's one:
> > > public native void doSomething(MyCallback callback) /*-{
> > >     $wnd.doSomething(function(a, b, c) {
> > >         @my.package.MyClass::callback(Lmy/package/MyCallback;IILjava/
> > > lang/String;)(a, b, c, callback);
> > >     });}-*/;
>
> > > private static void callback(MyCallback callback, int a, int b, String
> > > c) {
> > >    UncaughtExceptionHandler handler = GWT.getUncaughtExceptionHandler
> > > ();
> > >    if (handler != null) {
> > >       callbackImpl(callback, a, b, c);
> > >    } else {
> > >       callbackAndCatch(handler, callback, a, b, c);
> > >    }}
>
> > > private static void callbackImpl(MyCallback callback, int a, int b,
> > > String c) {
> > >    callback.callback(a, b, c);}
>
> > > private static void callbackAndCatch(UncaughtExceptionHandler handler,
> > > MyCallback callback, int a, int b, String c) {
> > >    try {
> > >       callbackImpl(callback, a, b, c);
> > >    } catch (Throwable t) {
> > >       handler.onUncaughtException(t);
> > >    }
>
> > > }
>
> > > ..and finally, if your callback is "this":
> > > public native void doSomething() /*-{
> > >    var that = this;
> > >    $wnd.doSomething(function(a, b, c) {
> > >     �...@my.package.myclass::callback(Lmy/package/MyCallback;IILjava/lang/
> > > String;)(that, a, b, c);
> > >    });
>
> > > }-*/;
>
> > > You'll find those patterns several times in GWT itself, as well as in
> > > other GWT libraries wrapping JavaScript libs (GALGWT, GWT-in-the-AIR,
> > > etc.)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to google-web-toolkit@googlegroups.com
To unsubscribe from this group, send email to 
google-web-toolkit+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to