GsonBuilder registerTypeAdapter deserialization

6.5k Views Asked by At

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.

1

There are 1 best solutions below

3
On BEST ANSWER

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.