В службе отдыха, использующей спецификацию JAX-RS, я могу определить универсальную службу, такую как
@GET
@Path("something")
@Produces( { MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public List<MyPojo> getMyPojoList() {
...
}
Что-то волшебное происходит в Джерси, потому что при вызове
javax.ws.rs.ext.MessageBodyWriter#writeTo(T t,
Class<?> type,
Type genericType,
Annotation annotations[],
MediaType mediaType,
MultivaluedMap<String, Object> httpHeaders,
OutputStream entityStream) throws IOException, WebApplicationException;
при анализе genericType
легко увидеть, что его значение равно class MyPojo
.
Я пытался прочитать исходный код Джерси, чтобы понять, как они извлекают тип Collection Generic, прежде чем вызывать метод writeTo
из javax.ws.rs.ext.MessageBodyWriter
, но я заблудился, когда прибыл, чтобы прочитать класс GenericEntity
.
Может ли кто-нибудь помочь мне понять, какую магию они там используют? Заранее спасибо !!!