Indeed, it seems to be good solutions too. Thanks Yves On 15 déc, 10:15, Paul Robinson <ukcue...@gmail.com> wrote: > You don't have to hard code anything to send class names. In the client, > you can use this: > > class MyType<T extends MyGen> implements Serializable { > > String className; > > MyType() {} // mandatory no-arg contructor > > MyType(T anObject) { // with a non-null param value ! > this.className = anObject.getClass().getName(); > } > > } > > or this: > > class MyType<T extends MyGen> implements Serializable { > > String className; > > MyType() {} // mandatory no-arg contructor > > MyType(Class<? extends T> cls) { // with a non-null param value ! > this.className = cls.getName(); > } > > } > > and then on the server, if you need a Class rather than a String, use > Class.forName(myType.className) > > HTH > Paul > > On 14/12/10 18:49, yves wrote: > > > Hi all, thanks for your comments and advices. > > > To solve my problem I'll do something like Didier said : I'll > > instantiate an object of type T (which is Serializable), instead of > > Class<T>, and pass it to the server via the RPC. > > > class MyType<T extends MyGen> implements Serializable { > > > T anObject; > > > MyType() {} // mandatory no-arg contructor > > > MyType(T anObject) { // with a non-null param value ! > > this.anObject = anObject; > > } > > } > > > Doing so, the server will receive a MyType object, will recognize the > > type T of anObject and will be able to select the right handler. > > And even the generics is not anymore required as the type of anObject > > will be checked dynamically by the server. > > > Actually class.getCanonicalName() is not implemented too in GWT, so my > > previous post is not realistic. > > > I personnaly prefer this solution than harcode the full className (as > > it will change if I reorganize the packages...) > > > Regards > > Yves > > > On 14 d�c, 15:51, ep<eplisc...@googlemail.com> wrote: > > >> you dont need to, just put a fullyqualified classname on the wire and > >> forName() it in the VM. you may also think about providing your custom > >> field serializer for the class, but actually would be nonsense since > >> you anyway cannot use it reasonably on the client > > >> On 14 Dez., 12:20, yves<yves.ko...@gmail.com> wrote: > > >>> @Didier > >>> Of course MyType implements Serializable . It is just a typo in the > >>> example. Sorry. > > >>> @Paul > >>> I didn't realized that Class is not GWT-serializable. Thanks for your > >>> remark. I lost pretty much time to find out why I get an exception > >>> during an RPC call > > >>> It would have been nice if Class<T> was serializable. I would have > >>> used it to select an appropriate handler at server-side. Anyway I use > >>> instead the canonical class name to map the handler, but the code is > >>> little bit more uggly :-) > > >>> I noticed also the a call to class.hashCode() does not give the same > >>> value in the (gwt-compiled)-client and in the (JVM running)-server. > >>> In my attempts to workaround the "unserializability" of Class, I tried > >>> to use the hashCode() value, unsuccessfully... > > >>> Regards > >>> Yves > > >>> On 14 d�c, 10:42, Paul Robinson<ukcue...@gmail.com> wrote: > > >>>> Class is not gwt-serializable. > > >>>> MyType has a non-final, non-transient field of type Class > > >>>> Therefore MyType is not serializable > > >>>> On 14/12/10 09:33, Didier Durand wrote: > > >>>>> Hi, > > >>>>> Serializable is an interface not a class. That's why it's not the list > >>>>> you mention. An interface has nothing to be serialized per se. > > >>>>> You should let us know about your class MyType in order to better > >>>>> help. > > >>>>> regards > > >>>>> didier > > >>>>> On Dec 14, 9:21 am, Paul Robinson<ukcue...@gmail.com> wrote: > > >>>>>> If you look at the Class.java that GWT uses to emulate the JVM's Class, > >>>>>> you'll see that it does not implement Serializable. > > >>>>>> On 13/12/10 22:19, yves wrote: > > >>>>>>> Hi, > > >>>>>>> I have a class defined in a way similar to this: > > >>>>>>> class MyType<T extends MyGen> extends Serializable { > > >>>>>>> private Class<T> aClass; > > >>>>>>> public MyType() {} > > >>>>>>> public void setClass(Class<T> aClass) { > >>>>>>> this.aClass = aClass; > >>>>>>> } > >>>>>>> } > > >>>>>>> where MyGen is also Serializable > > >>>>>>> When I compile de project (I'am currently still using GWT 2.1.0 RC1), > >>>>>>> then I find the following : > > >>>>>>> 1) the compiler (using the compiler options -extra, -work and -gen) > >>>>>>> does not generate the code MyType_FieldSerializer.java as it does for > >>>>>>> all other serializable classes. > > >>>>>>> 2) In the "extra" / rpclog dir, the class MyType is flagged like this: > >>>>>>> Serialization status > >>>>>>> Not serializable > > >>>>>>> 3) And when I run my app, I get an "InvocationException" : the client > >>>>>>> is unable to make an RPC call with a parameter of type MyType. > > >>>>>>> Is it a bug in the compiler, or did I missed something about Class<T> > >>>>>>> "serializability" ? > > >>>>>>> Thanks for your help > >>>>>>> Yves
-- 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-tool...@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.