Chris,

Thanks for trying to help me with this. As for your questions, I'm not
sure I understand the second one, but I'll exemplify better what my
code is doing:

First there is a listener interface:

public interface TestMessageListener {
        void messageReceived(String message);
}

Then there is the RPC service (client side version here):

public interface TestServiceAsync {
        void addMessageListener(TestMessageListener listener,
AsyncCallback<Void> callback);

        void removeMessageListener(TestMessageListener listener,
AsyncCallback<Void> callback);
}

Then there is the concrete listener class in the client:

public class TestMessageListenerImpl extends AbstractRpcObserver
implements TestMessageListener {
        @Override
        public void messageReceived(String message) {
                System.out.println(message + " received");
        }
}

The extended class AbstractRpcObserver looks like this:

public abstract class AbstractRpcObserver implements RpcObserver,
Serializable  {
        protected int rpcReversedSessionId;

        protected int observerId;

        protected transient Object source;

        protected AbstractRpcObserver() {
        }

        public void setSource(Object source) {
                this.source = source;
        }

        public void setRpcReversedSessionId(int rpcReversedSessionId) {
                this.rpcReversedSessionId = rpcReversedSessionId;
        }
}

The generated class extends this AbstractRpcObserver (and is thereby
Serializable) and implements the TestMessageListener interface. An
instance of the generated class is used as argument in the
addMessageListener method invoction in the RPC service.

This is part of a framework for asynchronous invocations of observers
in the client from the server. The idea is to have the framework
generate the plumbing code so that any interface can be used as a
"listener" to be added to the server.

Everything works like a charm in GWT 1.7.1, but as you say, that could
be just a happy coincidence.

/Martin

On 11 Jan, 23:03, Chris Ramsdale <[email protected]> wrote:
> Martin,
>
> The RPC serialization generator is most likely being run before your custom
> generator. As a result serialization code, whitelisting, etc... are not
> being created. Unfortunately there is no way of guaranteeing that your
> generator is run before the RPC serialization generator.
>
> That said, I did have a couple of thought:
>
> 1. Within your RPCs, what class is your server expecting?
> 2. Rather than generate classes that you send across the wire, would it be
> possible to send an interface, and generate client-side classes that
> understand how to instantiate themselves based on said interface?
>
> 2010/1/11 Martin Söderström <[email protected]>
>
>
>
> > Hi,
>
> > I have a custom Generator (subclassing
> > com.google.gwt.core.ext.Generator) class that generates a class to be
> > used as argument in an RPC method. The generated class implements
> > Serializable and the interface that the RPC method expects. This used
> > to work in GWT 1.7, but with GWT 2.0 I get a
> > com.google.gwt.user.client.rpc.SerializationException. Using
> > IsSerializable instead of Serializable does not make any difference.
>
> > It feels like, in GWT 2.0, the scanning for RPC serializable classes
> > does not take into consideration the custom generated classes. Does
> > anyone know anything about this? A possible workaround?
>
> > /Martin
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Google Web Toolkit" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> > [email protected]<google-web-toolkit%2Bunsubs 
> > [email protected]>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/google-web-toolkit?hl=en.
-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.


Reply via email to