GWT-RPC does this by convention. The custom serializer must be in the same 
package as the class it (de)serializes and is named <class 
name>_CustomFieldSerializer, e.g. ImmutableSet_CustomFieldSerializer.

I wouldn't use an annotation because a guava collection could be used by a 
large amount of classes so you only want to define the serializer once for 
a given collection type. To do so you would need some kind of a 
"configuration" class where you can put annotations once. Or use such a 
configuration class the google-gin way: 

void configure() {
  serialize(ImmutableSet.class).with(ImmutableSetJsonSerializer.class).
}

If you don't want a configuration class then you could also define a 
configuration property in your gwt module xml instead. That property could 
then be filled by users of your library. The property values should point 
to full qualified class names of custom serializers. google-gin also has an 
example of this technique because you could define a configuration property 
and then reference it on the Ginjector like:

@GinModules(value = MyModule.class, properties = { 
"my.google.gin.extention.property1", "my.google.gin.extention.property2" }
public interface MyInjector extends Ginjector {}

<define-configuration-property 
name="my.google.gin.extention.property1" is-multi-valued="true" /> (would 
go in your library gwt xml)
<extend-configuration-property name="my.google.gin.extention.property1" 
value="com.example.ExtentionModule" /> (thats what a library user would 
need to define in their gwt xml)



-- J.



-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-web-toolkit+unsubscr...@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at http://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to