users@jax-rs-spec.java.net

[jax-rs-spec users] [jsr339-experts] Re: Error responses with entities and the media types

From: Bill Burke <bburke_at_redhat.com>
Date: Wed, 13 Mar 2013 16:20:55 -0400

Accept is a suggestion by the client. The server doesn't have to honor it.

On 3/13/2013 10:20 AM, Sergey Beryozkin wrote:
> Hi
>
> We've talked about it before, in context of the exception mappers
> mapping the exceptions to Responses with non empty entities,
>
> example, the client Accepts application/xml, the server throws an
> exception, the mapper maps it to
>
> Response.status(400).type("text/plain").entity("Bad response").build().
>
> and this is exactly what the client should get back despite expecting
> only XML.
>
> However, consider that either the application code or even the exception
> mapper does
>
> Response.status(200).type("application/json").entity(someEntityBean).build().
>
>
> This is clearly an error that is better be detected by the server
> runtime, before the client code like "client.get(StreamSource.class)"
> reports something like "{" is not allowed in XML, etc.
>
> Should the spec say that if Response status is >=400 and the entity is
> not null then this Response media type whatever it is, is used;
> otherwise, if Response is 200, the entity is not null, then the runtime
> should treat its media type the same way it treats @Produces ?
>
> Sergey

-- 
Bill Burke
JBoss, a division of Red Hat
http://bill.burkecentral.com