Hi David,

I asked a similar question not so long ago and Sergey sent me the following 
link which explained how to get exceptions from interceptors handled:

https://cwiki.apache.org/confluence/display/CXF20DOC/JAX-RS+Basics#JAX-RSBasics-MappingexceptionsthrownfromCXFinterceptors

Note you need to be using 2.7.8-SNAPSHOT to above to test this.

The Exception Mapper in 2.7.7 and earlier will only catch exceptions from your 
filters or from your application code.

FYI my full thread can be seen here:

http://cxf.547215.n5.nabble.com/Handling-exceptions-in-a-JAX-RS-fault-interceptor-when-using-Local-Transport-td5733958.html

Hope that helps

Mandy

On 11 Oct 2013, at 21:50, David Hay wrote:

> Hi Sergey,
> 
> Thanks, that worked with a custom Interceptor at Phase.PRE_INVOKE.
> 
> However, it looks like any exception I throw is NOT caught by my JAX-RS
> ExceptionMapper.
> 
> Is there any way to hook things up so that it is?
> 
> cheers,
> 
> David
> 
> 
> 
> On Wed, Oct 9, 2013 at 10:53 AM, Sergey Beryozkin <[email protected]>wrote:
> 
>> Or may be you can use Spring AOP for now if you work with Spring
>> 
>> Sergey
>> 
>> On 09/10/13 15:52, Sergey Beryozkin wrote:
>> 
>>> Hi
>>> On 09/10/13 15:18, David Hay wrote:
>>> 
>>>> Hi Sergey,
>>>> 
>>>> Yes, that worked by upgrading, thx.
>>>> 
>>>> So I am able to get the path params from URIInfo in the
>>>> ContainerRequestFilter, but I am also passing a single non-path
>>>> "command" parameter that encapsulates all the other params (passed as
>>>> JSON) and has a validate() method added to it.
>>>> 
>>>> I need to call that validate() method in the ContainerRequestFilter, but
>>>> can't see a way to grab the object.
>>>> 
>>>> The method signature is similar to:
>>>>    public Response doSomething(@PathParam("**pathParam1")long
>>>> pathParam1,
>>>> MyCmdObject myCmdObject)
>>>> 
>>>> Can you point me in the right direction, please, to access myCmdObject
>>>> in the filter?
>>>> 
>>>> Right, it is not possible to do it the portable way, I'm hoping JAX-RS
>>> will get it fixed somehow, in meantime, try either a custom invoker or
>>> regular CXF interceptor at the PRE-INVOKE phase, see:
>>> 
>>> https://issues.apache.org/**jira/browse/CXF-5309?**
>>> focusedCommentId=13789196&**page=com.atlassian.jira.**
>>> plugin.system.issuetabpanels:**comment-tabpanel#comment-**13789196<https://issues.apache.org/jira/browse/CXF-5309?focusedCommentId=13789196&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13789196>
>>> 
>>> 
>>> HTH, Sergey
>>> 
>>> cheers,
>>>> 
>>>> David
>>>> 
>>>> 
>>>> 
>>>> On Mon, Sep 30, 2013 at 12:15 PM, Sergey Beryozkin <[email protected]
>>>> <mailto:[email protected]>> wrote:
>>>> 
>>>>    On 30/09/13 15:17, David Hay wrote:
>>>> 
>>>>        Voted.
>>>> 
>>>>        One more question - if I throw an exception from the
>>>>        ContainerRequestFilter, is there any way to get my
>>>>        ExceptionHandler to
>>>>        catch it?
>>>> 
>>>>    Do you mean JAX-RS ExceptionMapper ? Definitely has to work, in
>>>>    latest CXF 2.7.7 for sure
>>>> 
>>>>    Sergey
>>>> 
>>>> 
>>>> 
>>>> 
>>>>        On Sun, Sep 29, 2013 at 2:07 PM, Sergey Beryozkin
>>>>        <[email protected] <mailto:[email protected]>
>>>>        <mailto:[email protected] <mailto:[email protected]>>**>
>>>> wrote:
>>>> 
>>>>             Sorry,
>>>> 
>>>>        
>>>> https://issues.apache.org/____**jira/browse/CXF-4199<https://issues.apache.org/____jira/browse/CXF-4199>
>>>>        
>>>> <https://issues.apache.org/__**jira/browse/CXF-4199<https://issues.apache.org/__jira/browse/CXF-4199>
>>>>> 
>>>> 
>>>>             
>>>> <https://issues.apache.org/__**jira/browse/CXF-4199<https://issues.apache.org/__jira/browse/CXF-4199>
>>>>        
>>>> <https://issues.apache.org/**jira/browse/CXF-4199<https://issues.apache.org/jira/browse/CXF-4199>
>>>>>> 
>>>> 
>>>>             On 29/09/13 19:06, Sergey Beryozkin wrote:
>>>> 
>>>>                 Vote for this JIRA please...
>>>>                 Sergey
>>>>                 On 29/09/13 19:03, Sergey Beryozkin wrote:
>>>> 
>>>>                     Hi
>>>> 
>>>>                     I've tried it on the trunk & CXF 2.7.8-SNAPSHOT,
>>>>                     getPropertyNames does
>>>>                     not throw NPE and returns an initialized collection,
>>>> 
>>>>                     Get UriInfo from the context and check path
>>>>        parameters from it.
>>>> 
>>>>                     Re supporting @Provider - it is recognized, but no
>>>>                     auto-discovery is
>>>>                     done - I'm hoping to spend some time on it, many
>>>>        providers
>>>>                     do need to be
>>>>                     configured which the default auto-discovery would
>>>>        interfere
>>>>                     with, but I
>>>>                     agree for some simple providers it can make sense...
>>>> 
>>>>                     Sergey
>>>> 
>>>>                     On 27/09/13 20:51, David Hay wrote:
>>>> 
>>>>                         Hi again,
>>>> 
>>>>                         It appears that 'props' is null.
>>>> 
>>>>                         I'm trying to get hold of the path parameters.
>>>>          What's
>>>>                         the best way to
>>>>                         do that?
>>>> 
>>>> 
>>>>                         On Fri, Sep 27, 2013 at 3:32 PM, David Hay
>>>>                         <[email protected]
>>>>        <mailto:david.hay@enstratius.**com <[email protected]>>
>>>>        <mailto:david.hay@enstratius._**_com
>>>>        <mailto:david.hay@enstratius.**com <[email protected]>>>
>>>>                         <mailto:david.hay@enstratius.
>>>>        <mailto:david.hay@enstratius.>**____com
>>>> 
>>>>                         <mailto:david.hay@enstratius._**_com
>>>>        <mailto:david.hay@enstratius.**com <[email protected]>>>>>
>>>> wrote:
>>>> 
>>>>                              Actually, I discovered that CXF doesn't
>>>>        support
>>>>                         @Provider yet?
>>>> 
>>>>                              I went ahead and registered it in CXF, and
>>>>        in the
>>>>                         filter tried to
>>>>                         do:
>>>> 
>>>>                                  Enumeration e =
>>>>                         requestContext.____**getPropertyNames();
>>>> 
>>>> 
>>>>                              However, I get this:
>>>> 
>>>>                                  <ns1:XMLFault
>>>> 
>>>>          xmlns:ns1="http://cxf.apache._**___org/bindings/xformat
>>>>                         
>>>> <http://cxf.apache.org/__**bindings/xformat<http://cxf.apache.org/__bindings/xformat>
>>>>        
>>>> <http://cxf.apache.org/**bindings/xformat<http://cxf.apache.org/bindings/xformat>
>>>>>> "><ns1:____**faultstring
>>>> 
>>>> 
>>>>        xmlns:ns1="http://cxf.apache._**___org/bindings/xformat
>>>>                         
>>>> <http://cxf.apache.org/__**bindings/xformat<http://cxf.apache.org/__bindings/xformat>
>>>> 
>>>> <http://cxf.apache.org/**bindings/xformat<http://cxf.apache.org/bindings/xformat>
>>>>>> ">java.____**lang.NullPointerException</___**
>>>> _ns1:faultstring></ns1:____**XMLFault>*
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>>                              Thoughts?
>>>> 
>>>> 
>>>> 
>>>>                              On Fri, Sep 27, 2013 at 3:16 PM, David Hay
>>>>                         <[email protected]
>>>>        <mailto:david.hay@enstratius.**com <[email protected]>>
>>>>        <mailto:david.hay@enstratius._**_com
>>>>        <mailto:david.hay@enstratius.**com <[email protected]>>>
>>>>                              <mailto:david.hay@enstratius.
>>>>        <mailto:david.hay@enstratius.>**____com
>>>> 
>>>>                         <mailto:david.hay@enstratius._**_com
>>>>        <mailto:david.hay@enstratius.**com <[email protected]>>>>>
>>>> wrote:
>>>> 
>>>>                                  Hi Sergey,
>>>> 
>>>>                                  I added a ContainerRequestFilter with
>>>>                         @Provider...but I don't
>>>>                                  see it getting called at all.
>>>> 
>>>>                                  What am I missing?
>>>> 
>>>> 
>>>>                                  On Fri, Sep 6, 2013 at 4:51 AM, Sergey
>>>>        Beryozkin
>>>>                                  <[email protected]
>>>>        <mailto:[email protected]>
>>>>                         <mailto:[email protected]
>>>>        <mailto:[email protected]>>
>>>>                         <mailto:[email protected]
>>>>        <mailto:[email protected]>
>>>> 
>>>>                         <mailto:[email protected]
>>>>        <mailto:[email protected]>>**>__> wrote:
>>>> 
>>>>                                      Hi
>>>> 
>>>>                                      On 05/09/13 20:09, David Hay wrote:
>>>> 
>>>>                                          Hi,
>>>> 
>>>>                                          I have a group of RESTful
>>>>        endpoints
>>>>                         that all require the
>>>>                                          same
>>>>                                          pre-validation (eg ensuring
>>>>        that the
>>>>                         related domain
>>>>                                          object exists).
>>>> 
>>>>                                          Is it possibly to set up an
>>>>        interceptor
>>>>                         that is somehow
>>>>                                          configured to
>>>>                                          perform such validation for a
>>>>        set of
>>>>                         methods/classes/urls?
>>>> 
>>>>                                          If not, is there a suggested
>>>>        way to
>>>>                         accomplish this?
>>>> 
>>>>                                      Starting from CXF 2.7.x you can
>>>>        use JAX-RS
>>>>                         2.0 NameBinding
>>>>                                      to attach ContainerRequestFilter to
>>>>                         individual methods or
>>>>                                      classes, and the filters can also
>>>>        check
>>>>                         request URI and
>>>>                                      ignore the validation if needed.
>>>> 
>>>>                                      ContainerRequestFilter with a
>>>>        @PreMatch
>>>>                         annotation can be
>>>>                                      used to do the validation before
>>>>        the match
>>>>                         has been done
>>>> 
>>>>                                      Cheers, Sergey
>>>> 
>>>>                                          thanks!
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>>             --
>>>>             Sergey Beryozkin
>>>> 
>>>>             Talend Community Coders
>>>>        http://coders.talend.com/
>>>> 
>>>>             Blog: http://sberyozkin.blogspot.com
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>> 
>>> 
>> 
>> --
>> Sergey Beryozkin
>> 
>> Talend Community Coders
>> http://coders.talend.com/
>> 
>> Blog: http://sberyozkin.blogspot.com
>> 

Reply via email to