I'm looking for the documentation on custom MessageBodyWriter and MessageBodyReader, but can't find it in the user guide. Is it somewhere else? Is one of the sample applications a good demonstration of using custom MessageBodyWriter?
On May 19, 2011, at 1:05 PM, Daniel Larsson wrote:
> You can write code like your first example, even with a custom mime type, but you'll need to provide a custom MessageBodyWriter for it. This should be pretty simple, as you can utilize the original MessageBodyWriter to do the actual work.
>
>
> 2011/5/19 Jason Erickson <jason_at_jasonerickson.com>
>
> Say I have a method like this:
>
> @GET
> @Produces("application/json")
> @Path("{id}")
> public Car getCar(@PathParam("id") Long id) {
> return carDao.getById(id);
> }
>
> This works great. However, I keep coming across recommendations not to use things like "application/json" when you really mean something custom like "application/vnd.car+json" or even "application/vnd.car+1.0+json". If I wanted to do something like that for my @Produces, then I would have to change it something like this right?
>
>
> @GET
> @Produces("application/vnd.car+1.0+json")
> @Path("{id}")
> public Response getCar(@PathParam("id") Long id) {
> Car car = carDao.getById(id);
> JSONObject entity = new JSONObject();
> ... some logic to convert car to entity ...
> return Response.ok().entity(entity).build();
> }
>
> Is this the recommended way? Is there a way to still return a Car object and have a custom content type? I still want to produce JSON, but I want to support vendor specific content negotiation. I have the same question on the @Consumes side of things, but one problem at a time...
>