have it injected as a  thread-safe Context:

private @Context HttpHeaders headers;

Cheers, Sergey

On Thu, Jun 2, 2011 at 4:46 PM, Rice Yeh <[email protected]> wrote:
> Hi Sergey,
>  I do not understand your solution. My exception mapper is like the
> following:
>
> public class MyExceptionMapper extends ExceptionMapper<Throwable>
> {
>    public Response toResponse(Throwable throwable) {
>        if (the throwable comes from a matched method provide
> application/json)
>          map throwable to json
>        else if (.... provide text/html)
>          map throwable to html
>        ....
>    }
> }
>
> Where should put the HttpHeaders in MyExceptionMapper?
>
> Regards,
> Rice
>
> On Thu, Jun 2, 2011 at 6:09 PM, Sergey Beryozkin <[email protected]>wrote:
>
>> Hi Rice
>>
>> On Thu, Jun 2, 2011 at 10:55 AM, Rice Yeh <[email protected]> wrote:
>> > I have a feeling that the spec of JAX-RS is kind of weak on exception
>> > handling. It regulates a lot of tags for matching a method to handle a
>> > request based on path, consume, provide, ... But once an exception
>> happen,
>> > all these mechanism are gone. I have to judge what kind of content to
>> return
>> > in the method toResonse(Throwable...) based on very little information
>> > available.
>> >
>>
>> You can get @HttpHeaders injected and get the properly sorted list of
>> acceptable media types,
>> thus if you have a single method with @Produces having multiple values
>> then you can use the first *known* value in the list of acceptable
>> media types is the one which is expected by the client.
>> Ex, if you know that @Produces has html/xml/json and you get a sorted
>> list starting with json then it's json. If the lists starts from the
>> type not available on @Produces then you need to skip it.
>>
>> Cheers, Sergey
>>
>> > Rice
>> >
>> > On Thu, Jun 2, 2011 at 5:32 PM, Rice Yeh <[email protected]> wrote:
>> >
>> >> Hi,
>> >>   I write a ExceptionMapper to handle exception. In the ExceptionMapper,
>> I
>> >> have a need to know the matched response type to return different
>> response.
>> >> For example, if the the matched response type is html, it returns a html
>> >> response and if the matched response is  json, it returns json. How do I
>> do
>> >> this?
>> >>
>> >> Regards,
>> >> Rice
>> >>
>> >
>>
>>
>>
>> --
>> Sergey Beryozkin
>>
>> Application Integration Division of Talend
>> http://sberyozkin.blogspot.com
>>
>



-- 
Sergey Beryozkin

Application Integration Division of Talend
http://sberyozkin.blogspot.com

Reply via email to