Advertisement
apuntesdejava

JSONApiPersonaRESTClientWeb/PersonWriter.java

Jun 8th, 2013
3,591
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 1.62 KB | None | 0 0
  1. @Provider
  2. @Produces(MediaType.APPLICATION_JSON)
  3. public class PersonWriter implements MessageBodyWriter<Person> {
  4.  
  5.     @Override
  6.     public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
  7.         /*
  8.          * Devuelve TRUE si la clase es aplicable para convertirlo con este Interprte (Writer)
  9.          */
  10.         return Person.class.isAssignableFrom(type); // por tanto, solo lo evaluamos con la clase
  11.     }
  12.  
  13.     @Override
  14.     public long getSize(Person t, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
  15.         //Este metodo es obsoleto para JAX-RS 2.0. Siempre debe devolver -1
  16.         return -1;
  17.     }
  18.  
  19.     @Override
  20.     public void writeTo(Person t, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream) throws IOException, WebApplicationException {
  21.         //Aqui ya realizamos la conversion desde el objeto a formato JSON
  22.         JsonGenerator gen = Json.createGenerator(entityStream); // creamos el generador desde el stream
  23.         gen.writeStartObject() //... creamos el objeto
  24.                 .write("nombre", t.getName()) //... le colocamos las propiedades
  25.                 .write("sexo", t.getGender()) //... no importa el origen...
  26.                 .write("id", t.getPersonaId()) //..., con tal que le coloquemos el nombre correecto en el json
  27.                 .write("trabajador", t.isWorker());
  28.         gen.writeEnd(); //... y cerramos el objeto
  29.         gen.flush(); //... terminado, cerramos el flujo y esta el json
  30.     }
  31.  
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement