yep in 2.4.3 it works (i think the snapshot was not deployed last time) sorry the my last useless mail and thank you very much for your time
- Romain 2011/10/13 Sergey Beryozkin <[email protected]> > Hi > > Have a look at these revisions: > > trunk: > http://svn.apache.org/viewvc?**rev=1183107&view=rev<http://svn.apache.org/viewvc?rev=1183107&view=rev> > 2.4.4-SNAPSHOT: > http://svn.apache.org/viewvc?**rev=1183113&view=rev<http://svn.apache.org/viewvc?rev=1183113&view=rev> > > It just works. So I'm wondering, if it the fact that the invocation is > going through OpenEJB integration layer that makes a difference ? > > You asked on IRC if it made sense to change JAXRSUtils.findTargetMethod a > bit to make things work - can you please check why the wrong method is > selected there in your case ? Alternatively, please open a JIRA and attach a > test maven project > > Thanks, Sergey > > > On 13/10/11 18:55, Romain Manni-Bucau wrote: > >> sorry, >> >> it is: >> @GET @Path("/bar) String foo() >> and >> @GET @Path("/{id}") String foo(@PathParam("id"}) Long id) >> >> and the parent has the annotation @Path("/foo"). I tried with some >> @Produces >> to specify plain text or xml media type but the error is the same. There >> is >> no consume (so no filtering at this level). >> >> - Romain >> >> 2011/10/13 Sergey Beryozkin<[email protected]**> >> >> Give me the complete info please: @PathParam, HTTP verb present on both >>> methods or not, @Consumes/@Produces, >>> I'm assuming it is @Path("/foo/bar") for foo() and @Path("/foo/{id}") for >>> foo(Lomg l) >>> >>> >>> On 13/10/11 17:01, Romain Manni-Bucau wrote: >>> >>> I tried 2.4.3. >>>> >>>> Signature 1 foo() >>>> Signature 2 foo(Long l) >>>> >>>> - Romain >>>> >>>> Le 13 oct. 2011 17:55, "Sergey Beryozkin"<sberyozkin@gmail.****com< >>>> [email protected]>> >>>> >>>> a écrit : >>>> >>>> It does not work with 2.4.2 ? >>>> >>>>> >>>>> Can you also send me the signature of the 2 methods ? >>>>> >>>>> cheers, Sergey >>>>> >>>>> On 13/10/11 16:46, Romain Manni-Bucau wrote: >>>>> >>>>> it doesn't seem to work, maybe because the type is not matching: >>>>> >>>>>> >>>>>> /foo/123 >>>>>> /foo/{id} >>>>>> >>>>>> here id and 123 are long so it works but >>>>>> >>>>>> /foo/{id} >>>>>> /foo/bar >>>>>> >>>>>> here id and bar have different types so it doesn't match. >>>>>> >>>>>> am i wrong? >>>>>> >>>>>> - Romain >>>>>> >>>>>> 2011/10/13 Sergey Beryozkin<[email protected]******> >>>>>> >>>>>> Hi >>>>>> >>>>>> >>>>>>> >>>>>>> On 12/10/11 21:34, Romain Manni-Bucau wrote: >>>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> >>>>>>>> thanks for this reply, >>>>>>>> >>>>>>>> i use cxf through OpenEJB and the version is the 2.4.1, do you know >>>>>>>> if >>>>>>>> it >>>>>>>> was already included? >>>>>>>> >>>>>>>> >>>>>>>> There was only one relevant fix after 2.4.1: >>>>>>>> >>>>>>> https://issues.apache.org/********jira/browse/CXF-3608<https://issues.apache.org/******jira/browse/CXF-3608> >>>>>>> <https:/**/issues.apache.org/****jira/**browse/CXF-3608<https://issues.apache.org/****jira/browse/CXF-3608> >>>>>>> > >>>>>>> <https://**issues.apache.org/****jira/**browse/CXF-3608<http://issues.apache.org/**jira/**browse/CXF-3608> >>>>>>> <https:**//issues.apache.org/**jira/**browse/CXF-3608<https://issues.apache.org/**jira/browse/CXF-3608> >>>>>>> > >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> <https://**issues.apache.org/****jira/browse/**CXF-3608<http://issues.apache.org/**jira/browse/**CXF-3608> >>>>>>> <http:/**/issues.apache.org/jira/**browse/**CXF-3608<http://issues.apache.org/jira/browse/**CXF-3608> >>>>>>> > >>>>>>> <https:/**/issues.apache.org/**jira/**browse/CXF-3608<http://issues.apache.org/jira/**browse/CXF-3608> >>>>>>> <https:/**/issues.apache.org/jira/**browse/CXF-3608<https://issues.apache.org/jira/browse/CXF-3608> >>>>>>> > >>>>>>> >>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>>> If you have in 2.4.1 >>>>>>> >>>>>>> class Root { >>>>>>> @Path("/foo/bar") >>>>>>> SomeSubresource getSubresource() {} >>>>>>> >>>>>>> @Path("/foo/{id}") >>>>>>> @GET >>>>>>> SomeData get(@PathParam("id") Long id) {} >>>>>>> >>>>>>> } >>>>>>> >>>>>>> then indeed, /foo/bar will be wrongly handled by get(). May be you >>>>>>> are >>>>>>> seeing exactly this issue in 2.4.1. That must be fixed in 2.4.2 - >>>>>>> give >>>>>>> it >>>>>>> a >>>>>>> try please >>>>>>> >>>>>>> thanks, Sergey >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> - Romain >>>>>>> >>>>>>> >>>>>>>> 2011/10/12 Sergey Beryozkin<[email protected]********> >>>>>>>> >>>>>>>> Hi >>>>>>>> >>>>>>>> >>>>>>>> That must work, which CXF version do you use ? >>>>>>>>> >>>>>>>>> I've added a test locally and it just works, see the diff below as >>>>>>>>> this >>>>>>>>> has >>>>>>>>> to be already tested on the trunk, so I'm not merging it at the >>>>>>>>> moment. >>>>>>>>> >>>>>>>>> Try please 2.3.7/2.4.3 >>>>>>>>> >>>>>>>>> thanks, Sergey >>>>>>>>> >>>>>>>>> >>>>>>>>> Index: src/test/java/org/apache/cxf/**********systest/jaxrs/** >>>>>>>>> JAXRSClientServerBookTest.java >>>>>>>>> ==============================**********======================** >>>>>>>>> ==** >>>>>>>>> ==**==** >>>>>>>>> ==**======= >>>>>>>>> --- src/test/java/org/apache/cxf/**********systest/jaxrs/**** >>>>>>>>> JAXRSClientServerBookTest.java >>>>>>>>> (revision 1182563) >>>>>>>>> +++ src/test/java/org/apache/cxf/**********systest/jaxrs/**** >>>>>>>>> >>>>>>>>> >>>>>>>>> JAXRSClientServerBookTest.java >>>>>>>>> >>>>>>>>> (working copy) >>>>>>>>> @@ -950,6 +950,20 @@ >>>>>>>>> } >>>>>>>>> >>>>>>>>> @Test >>>>>>>>> + public void testGetBook222() throws Exception { >>>>>>>>> + WebClient wc = WebClient.create("http://******* >>>>>>>>> ***localhost< >>>>>>>>> >>>>>>>>> >>>>>>>>> http://localhost>:" >>>>>>>>> >>>>>>>>> + PORT + "/bookstore/books/222"); >>>>>>>>> + Book book = wc.get(Book.class); >>>>>>>>> + assertEquals(222L, book.getId()); >>>>>>>>> + } >>>>>>>>> + >>>>>>>>> + @Test >>>>>>>>> + public void testGetBook333() throws Exception { >>>>>>>>> + WebClient wc = WebClient.create("http://******* >>>>>>>>> ***localhost< >>>>>>>>> >>>>>>>>> >>>>>>>>> http://localhost>:" >>>>>>>>> >>>>>>>>> + PORT + "/bookstore/books/333"); >>>>>>>>> + Book book = wc.get(Book.class); >>>>>>>>> + assertEquals(333L, book.getId()); >>>>>>>>> + } >>>>>>>>> + >>>>>>>>> + @Test >>>>>>>>> public void testGetBook123() throws Exception { >>>>>>>>> getAndCompareAsStrings("http:/**********/localhost<http:// >>>>>>>>> ** >>>>>>>>> >>>>>>>>> localhost<http://localhost>>******:" >>>>>>>>> >>>>>>>>> + >>>>>>>>> PORT + "/bookstore/books/123", >>>>>>>>> "resources/expected_get_****** >>>>>>>>> book123.txt", >>>>>>>>> Index: src/test/java/org/apache/cxf/***** >>>>>>>>> *****systest/jaxrs/BookStore.****** >>>>>>>>> java >>>>>>>>> ==============================**********======================** >>>>>>>>> ==** >>>>>>>>> ==**==** >>>>>>>>> ==**======= >>>>>>>>> --- src/test/java/org/apache/cxf/**********systest/jaxrs/** >>>>>>>>> BookStore.*** >>>>>>>>> *java >>>>>>>>> (revision 1176840) >>>>>>>>> +++ src/test/java/org/apache/cxf/**********systest/jaxrs/** >>>>>>>>> BookStore.*** >>>>>>>>> >>>>>>>>> *java >>>>>>>>> >>>>>>>>> (working >>>>>>>>> >>>>>>>>> copy) >>>>>>>>> @@ -477,12 +477,25 @@ >>>>>>>>> } >>>>>>>>> >>>>>>>>> @GET >>>>>>>>> + @Path("/books/222") >>>>>>>>> + @Produces("application/xml") >>>>>>>>> + public Book getBook222(@PathParam("bookId"**********) String >>>>>>>>> id) >>>>>>>>> >>>>>>>>> >>>>>>>>> throws >>>>>>>>> >>>>>>>>> BookNotFoundFault { >>>>>>>>> + return new Book("222", 222); >>>>>>>>> + } >>>>>>>>> + >>>>>>>>> + @GET >>>>>>>>> @Path("/books/{bookId}/") >>>>>>>>> @Produces("application/xml") >>>>>>>>> public Book getBook(@PathParam("bookId") String id) throws >>>>>>>>> BookNotFoundFault { >>>>>>>>> return doGetBook(id); >>>>>>>>> } >>>>>>>>> >>>>>>>>> + @GET >>>>>>>>> + @Path("/books/333") >>>>>>>>> + @Produces("application/xml") >>>>>>>>> + public Book getBook333(@PathParam("bookId"**********) String >>>>>>>>> id) >>>>>>>>> >>>>>>>>> >>>>>>>>> throws >>>>>>>>> >>>>>>>>> BookNotFoundFault { >>>>>>>>> + return new Book("333", 333); >>>>>>>>> + } >>>>>>>>> >>>>>>>>> >>>>>>>>> @GET >>>>>>>>> >>>>>>>>> >>>>>>>>> On 12/10/11 19:19, Romain Manni-Bucau wrote: >>>>>>>>> >>>>>>>>> Hi, >>>>>>>>> >>>>>>>>> >>>>>>>>> i wonder if it is normal (which i don't think if i write this >>>>>>>>>> mail) >>>>>>>>>> or >>>>>>>>>> not: >>>>>>>>>> >>>>>>>>>> why cxf is taken the first method matching a uri pattern when a >>>>>>>>>> rest >>>>>>>>>> service >>>>>>>>>> is called? >>>>>>>>>> >>>>>>>>>> as an example is clearer than any speech: >>>>>>>>>> >>>>>>>>>> why these patterns are not guarantee to work: >>>>>>>>>> >>>>>>>>>> /foo/{id} # id = Long for instance >>>>>>>>>> /foo/bar >>>>>>>>>> >>>>>>>>>> as the first one will match the second one the result will depend >>>>>>>>>> on >>>>>>>>>> the >>>>>>>>>> order of declaration and if the second takes the first one an >>>>>>>>>> error >>>>>>>>>> will >>>>>>>>>> appear, something like bar cannot be converted to Long. >>>>>>>>>> >>>>>>>>>> - Romain >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> >
