cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Romain Manni-Bucau <rmannibu...@gmail.com>
Subject Re: rest matching patterns
Date Thu, 13 Oct 2011 16:01:01 GMT
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> 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<sberyozkin@gmail.com**>
>>
>>  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>
>>> >
>>>
>>> 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<sberyozkin@gmail.com****>
>>>>
>>>>  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
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message