I am having the following rest template (used for json requests to a server):
public RestTemplate createRestTemplate() {
RestTemplate restTemplate = new RestTemplate();
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(Image.class, new ImageDeserializer());
builder.registerTypeAdapter(MetaData.class, new MetaDataDeserializer());
builder.registerTypeAdapter(Vector.class, new VectorsDeserializer());
GsonHttpMessageConverter jsonConverter = new GsonHttpMessageConverter();
jsonConverter.setGson(builder.create());
FormHttpMessageConverter formHttpMessageConverter = new FormHttpMessageConverter();
StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter();
final List<HttpMessageConverter<?>> listHttpMessageConverters = restTemplate.getMessageConverters();
listHttpMessageConverters.add(jsonConverter);
listHttpMessageConverters.add(formHttpMessageConverter);
listHttpMessageConverters.add(stringHttpMessageConverter);
restTemplate.setMessageConverters(listHttpMessageConverters);
return restTemplate;
}
For some reason the third registerTypeAdapter call to the deserializer VectorsDeserializer
does nothing. I am probably missing something here, any ideas/clarifications are very welcome.
I'm assuming you're using java.util.Vector
.
I so, I guess, it's because of using plain Vector.class
instead of
new TypeToken<Vector<Whatever>>() {}.getType()
in the registration.