Para analisar alguns resultados de webservice, tenho um java bean que Jackson pode analisar assim:
ObjectMapper mapper = new ObjectMapper();
mapper.readValue(in, ResultPage.class);
Agora dentro da minha ResultPage, entre outros dados, tenho uma lista de resultados (o payload que estou procurando). Dependendo da consulta que entrega o resultado, o tipo de documentos listados pode variar (Documentos, Tags, Palavras-chave, ...) mas o formato geral da lista não varia. Assim, fiz do meu bean ResultPage um tipo genérico que contém uma lista de resultados como esta:
public class ResultPage<T> {
...
private List<T> results;
...
}
Como próximo passo, eu teria que chamar o analisador ao fornecer esse tipo, e estou me perdendo nisso
public <T> ResultPage<T> parseResultPage(InputStream in, Class<T> valueType) throws IOException {
return mapper.readValue(in, ResultPage<valueType>.class);
}
Além disso, esta (tentativa aparentemente mais simples) não compila para mim:
ResultPage<Tag> rp = mapper.readValue(responseEntity.getContent(), ResultPage<Tag>.class);
Como eu poderia fazer essa configuração funcionar?
Usar
TypeReference
: