Hi Mandy

Thanks for the help :-),

I've thought of the other possible option which
might be used before 2.7.8 gets released,

- create JAX-RS Response and return it as CXF MessageContentsList,

Response r = new MyExceptionMapper().toResponse(new MyException());
return new MessageContentsList(r);

This will work with a custom invoker though, something like this should work with the in interceptor:

Response r = new MyExceptionMapper().toResponse(new MyException());
Message outMessage = new MessageImpl();
outMessage.setContent(List.class, new MessageContentsList(r));

inMessage.getExchange().setOutMessage(outMessage);
inMessage.getInterceptorChain().abort();

Cheers, Sergey


On 13/10/13 21:58, Mandy Warren wrote:
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 <sberyoz...@gmail.com>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 <sberyoz...@gmail.com
<mailto:sberyoz...@gmail.com>> 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
        <sberyoz...@gmail.com <mailto:sberyoz...@gmail.com>
        <mailto:sberyoz...@gmail.com <mailto:sberyoz...@gmail.com>>**>
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
                         <david....@enstratius.com
        <mailto:david.hay@enstratius.**com <david....@enstratius.com>>
        <mailto:david.hay@enstratius._**_com
        <mailto:david.hay@enstratius.**com <david....@enstratius.com>>>
                         <mailto:david.hay@enstratius.
        <mailto:david.hay@enstratius.>**____com

                         <mailto:david.hay@enstratius._**_com
        <mailto:david.hay@enstratius.**com <david....@enstratius.com>>>>>
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
                         <david....@enstratius.com
        <mailto:david.hay@enstratius.**com <david....@enstratius.com>>
        <mailto:david.hay@enstratius._**_com
        <mailto:david.hay@enstratius.**com <david....@enstratius.com>>>
                              <mailto:david.hay@enstratius.
        <mailto:david.hay@enstratius.>**____com

                         <mailto:david.hay@enstratius._**_com
        <mailto:david.hay@enstratius.**com <david....@enstratius.com>>>>>
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
                                  <sberyoz...@gmail.com
        <mailto:sberyoz...@gmail.com>
                         <mailto:sberyoz...@gmail.com
        <mailto:sberyoz...@gmail.com>>
                         <mailto:sberyoz...@gmail.com
        <mailto:sberyoz...@gmail.com>

                         <mailto:sberyoz...@gmail.com
        <mailto:sberyoz...@gmail.com>>**>__> 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