Caros,
Estou tentando usar o vraptor-gson-plugin, para serializar os JSONs usando a API Gson, do Google.
O problema é que a escolha, por parte do VRaptor, de qual a implementação de br.com.caelum.vraptor.serialization.JSONSerialization não parece ser determinística. Ou seja, quando eu inicio a aplicação uma vez, ele usa o padrão do VRaptor, com XStream. Quando eu executo uma outra vez, usa o Gson.
Observe que, diferente do que a última frase posso insinuar, não é intercalado. É, como se o VRaptor estivesse jogando cara-ou-coroa entre as duas implementações e quem ganha é usado.
Para resolver o problema já tentei as seguintes abordagens:
- Criar um br.com.caelum.vraptor.util.gson.GsonSerializationProvider, que herda de SpringProvider e colocar ele no web.xml:
<context-param>
<param-name>br.com.caelum.vraptor.packages</param-name>
<param-value>br.com.caelum.vraptor.restfulie</param-value>
</context-param>
<context-param>
<param-name>br.com.caelum.vraptor.provider</param-name>
<param-value>br.com.caelum.vraptor.util.gson.GsonSerializationProvider</param-value>
</context-param>
Neste caso, imaginei que ao ativar o restfulie, o pacote de serialização padrão ganhava prioridade.
- Colocar o pacote onde estão os serializadores no web.xml
<context-param>
<param-name>br.com.caelum.vraptor.packages</param-name>
<param-value>br.com.caelum.vraptor.serialization.gson,br.com.caelum.vraptor.restfulie</param-value>
</context-param>
Aqui não imagino uma explicação.
Imaginei que deveria rolar uma forma de “desregistrar”, no VRaptor, o serializador padrão de JSON. Mas, não achei como.
Alguém teria uma idéia?