I have a dispatch method, exposed through JsInterop, which can take various 
kinds of payloads.

Once called from native javascript, I need to cast the payload, but this 
doesn't quite work as I would like it too.

Here is a simplified example.

*GWT:*
@JsExport
@JsType
@JsNamespace("foo")
public class Dispatcher {
public String dispatch(String action, Payload payload){
if("action1".equals(action))
return dispatchWithCast(payload);
return "Unknown action: " + action;
}
public String dispatchWithCast(Payload payload){
ConcretePayload w = (ConcretePayload) payload;
return w.foo;
}
}

@JsExport
@JsType
public class Payload {}

@JsExport
@JsType
public class ConcretePayload extends Payload {
public String foo;
public int bar;
}

*Javascript:*
var test = new foo.Dispatcher();
alert("Dispatch: " + test.dispatch("action1", {"foo": "a", "bar": 2})); 
// Uncaught java.lang.ClassCastException

Everything works just fine if I replace the Payload type in the Dispatcher 
class 
with ConcretePayload, and removes the cast.

I guess this this may be beyond the capabilities of the transpiler, I just 
need to figure out an alternative approach.

Any ideas?

(By the way, I am using the sso linker.)

-- 
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 post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

Reply via email to