I have filed a JIRA issue CXF-2888 for this bug. Regards, Rice
On Sat, Jul 10, 2010 at 11:11 AM, Rice Yeh <[email protected]> wrote: > After more tracking, I think the bug is on line 180 in > org.apache.cxf.jaxrs.model.URITemplate. The final group should be gotten by > the following statement: > > String finalGroup = m.group(m.groupCount()); > > The original statement fails because it does not assume uri template could > also contains group in it. > > Regards, > Rice > > > On Sat, Jul 10, 2010 at 10:13 AM, Rice Yeh <[email protected]> wrote: > >> Hi, >> I traced the code to >> org.apache.cxf.jaxrs.utils.JAXRSUtils.findTargetMethod method where the path >> is gotten from the final match group (line 284, see below). Based on the >> JAX-RS 1.0 spec, this is correct. However, on step 5 in 3.7.3 in JAX-RS >> spec, a ‘(/.*)?’ should be appended to the uri template. CXF seems missing >> this step and the final matching group becomes the address extension in my >> case. Otherwise, it should be "". >> >> Regards, >> Rice >> >> String path = values.getFirst(URITemplate.FINAL_MATCH_GROUP); >> >> >> On Sat, Jul 10, 2010 at 4:26 AM, Sergey Beryozkin >> <[email protected]>wrote: >> >>> Hi >>> >>> On Fri, Jul 9, 2010 at 10:29 AM, Rice Yeh <[email protected]> wrote: >>> >>> > Hi, >>> > I have root resource class which match request's address extension. >>> For >>> > example, htttp://localhost:8080/image/g1.png. The root resource class >>> is >>> > successfully matched and then try to match the right method. However, >>> in >>> > CXF, the path used to match to the methods is the extension "png". In >>> > Jboss's RESTEasy, it is the empty string "". I think the empty string >>> is >>> > more correct. >>> > >>> > RestEasy is a good implementation all right :-) >>> >>> >>> > >>> > @Path("{resource:.+\\.(js|css|gif|png)}") >>> > public class PassThroughResource >>> > { >>> > >>> > @GET >>> > @Path("") >>> > public InputStream get(@Context UriInfo uri) { >>> > ... >>> > } >>> > } >>> > >>> > >>> I'm presuming you debugged it - how did it happen that .gif was not >>> 'eaten' >>> by the above regular expression ? >>> >>> thanks, Sergey >>> >>> >>> > Regards, >>> > Rice >>> > >>> >> >> >
