tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Romain Manni-Bucau <rmannibu...@tomitribe.com>
Subject Re: TomEE JAX-RS MessageBodyWriter / Reader not working like the standard
Date Mon, 20 Oct 2014 06:34:12 GMT
Hi

you can surely not use the writer but OutputStream directly or
OutputStreamWriter will use a buffer to not touch the stream each time
you write a byte - for performances. That's why you needed to call
flush (tomcat, tomee, or plain main ;))
Romain Manni-Bucau
Twitter: @rmannibucau
Blog: http://rmannibucau.wordpress.com/
LinkedIn: http://fr.linkedin.com/in/rmannibucau
Github: https://github.com/rmannibucau



2014-10-20 3:20 GMT+02:00 iluvtr <iluvtr@gmail.com>:
> I solved guys!, it just was a matter of adding  writer.flush(); at the end of
> the method 'writeTo'
>
> But I don't remember I added that line to plain Tomcat, well, it's solved
> anyway,
>
> The code is here maybe some of you find it useful
>
>
> @Provider
> @Produces(MediaType.APPLICATION_JSON)
> @Consumes(MediaType.APPLICATION_JSON)
> public class GsonJsonProvider<T> implements MessageBodyReader<T>,
> MessageBodyWriter<T> {
>
>     private Gson gson;
>
>     public GsonJsonProvider() {
>         gson = new Gson();
>     }
>
>     @Override
>     public boolean isReadable(Class<?> type, Type genericType, Annotation[]
> annotations, MediaType mediaType) {
>         return true;
>     }
>
>     @Override
>     public T readFrom(Class<T> type, Type genericType, Annotation[]
> annotations, MediaType mediaType, MultivaluedMap<String, String>
> httpHeaders,
>             InputStream entityStream) throws IOException,
> WebApplicationException {
>         InputStreamReader streamReader = new InputStreamReader(entityStream,
> StandardCharsets.UTF_8);
>         return gson.fromJson(streamReader, type);
>     }
>
>     @Override
>     public boolean isWriteable(Class<?> type, Type genericType, Annotation[]
> annotations, MediaType mediaType) {
>         return true;
>     }
>
>     @Override
>     public long getSize(T t, Class<?> type, Type genericType, Annotation[]
> annotations, MediaType mediaType) {
>         return -1;
>     }
>
>     @Override
>     public void writeTo(T t, Class<?> type, Type genericType, Annotation[]
> annotations,
>             MediaType mediaType, MultivaluedMap<String, Object> httpHeaders,
> OutputStream entityStream) throws IOException, WebApplicationException {
>         OutputStreamWriter writer = new OutputStreamWriter(entityStream,
> StandardCharsets.UTF_8);
>         gson.toJson(t, writer);
>         writer.flush();  //This line is  the path to success!
>     }
>
> }
>
>
>
>
> --
> View this message in context: http://tomee-openejb.979440.n4.nabble.com/TomEE-JAX-RS-MessageBodyWriter-Reader-not-working-like-the-standard-tp4672454p4672455.html
> Sent from the TomEE Users mailing list archive at Nabble.com.

Mime
View raw message