----- Il 2-set-16, alle 13:24, Sergey Beryozkin [email protected] ha scritto:
> Hi Francesco > Would like to return to this issue raised by Colm, > > Can you give me a favor please and check sometime next week, with > Syncope loaded into Tomcat, with a breakpoint set at: > > https://github.com/apache/cxf/blob/cxf-3.1.7/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java#L372 > > what QUERY_STRING returns. > > I believe you should see ';' gone and then it is down to Tomcat itself > or, quite possibly, to some filters, sitting in front of CXF. I'm > curious because I'm not sure I've heard that Tomcat strips ';' before. Sure, I'll keep you posted. Regards. > On 30/08/16 15:07, Sergey Beryozkin wrote: >> It's Jetty vs Tomcat, I've double checked, added >> @Encoded @QueryParam("_s") >> to ensure CXF does not decode itself and still see ';'. >> >> Yeah, minor issue, though not ideal if a user is typing it manually... >> >> P.S. Happy to see Syncope being so cool about allowing arbitrary >> FIQL/(and OData ?) search filter queries :-) >> >> Thanks, Sergey >> >> On 30/08/16 14:59, Colm O hEigeartaigh wrote: >>> I'll take your word for it that it works fine in CXF :-) It's probably >>> Tomcat alright which is causing the problem. It's not a big deal in any >>> case, URL encoding fixes the problem. >>> >>> Colm. >>> >>> On Tue, Aug 30, 2016 at 2:51 PM, Sergey Beryozkin <[email protected]> >>> wrote: >>> >>>> CXF won't be that bad though and start picking up the matrix parameters >>>> from a query component :-), so my guess Tomcat is stripping it. >>>> >>>> When I run CXF JAXRSClientServerBook.testSearchBook123 >>>> I see in the server log: >>>> >>>> Address: http://localhost:9001/bookstore/books/search?_s=name==CXF*; >>>> id=ge=123;id=lt=124 >>>> >>>> If I update a test server method from : >>>> @GET >>>> @Path("/books/search") >>>> @Produces("application/xml") >>>> public Book getBook(@Context SearchContext searchContext) >>>> >>>> to >>>> ... >>>> public Book getBook(@QueryParam("_s") String s) >>>> >>>> then I can see _s being equal to: >>>> >>>> name==CXF*;id=ge=123;id=lt=124 >>>> >>>> Colm you can try it in CXF too :-) >>>> >>>> Thanks, Sergey >>>> >>>> >>>> >>>> On 30/08/16 14:16, Colm O hEigeartaigh wrote: >>>> >>>>> Actually it appears Francesco is right, encoding ';' as '%3B' gives the >>>>> correct result. >>>>> >>>>> Colm. >>>>> >>>>> On Tue, Aug 30, 2016 at 1:03 PM, Sergey Beryozkin >>>>> <[email protected]> >>>>> wrote: >>>>> >>>>> Hi Francesco >>>>>> On 30/08/16 13:00, Francesco Chicchiriccò wrote: >>>>>> >>>>>> Il 30 agosto 2016 13:50:18 CEST, "Francesco Chicchiriccò" < >>>>>>> [email protected]> ha scritto: >>>>>>> >>>>>>> Hi Colm, >>>>>>>> have you already tried via SyncopeClient? There should be >>>>>>>> integration >>>>>>>> test cases for AND... >>>>>>>> >>>>>>>> >>>>>>> I'd think that the fiql string needs to be encoded, otherwise ; >>>>>>> could be >>>>>>> interpreted by CXF as separator for matrix parameters... >>>>>>> >>>>>>> No, only if it is provided as part of a path, like this: >>>>>>> >>>>>> http://cxf.apache.org/docs/jax-rs-search.html#JAX-RSSearch-S >>>>>> earchExpressionsinURIPathsegments >>>>>> >>>>>> Otherwise if it is a query component, it is not a problem >>>>>> >>>>>> Cheers, Sergey >>>>>> >>>>>> >>>>>> Il 30 agosto 2016 13:39:10 CEST, Colm O hEigeartaigh >>>>>> >>>>>>> <[email protected]> ha scritto: >>>>>>>> >>>>>>>> Hi all, >>>>>>>>> >>>>>>>>> I've created the following users in Syncope with attributes of >>>>>>>>> "city" >>>>>>>>> and >>>>>>>>> "country": >>>>>>>>> >>>>>>>>> alice/dublin/ireland >>>>>>>>> bob/dublin/canada >>>>>>>>> eve//usa >>>>>>>>> >>>>>>>>> Search for users who live in dublin gives the correct total of "2": >>>>>>>>> >>>>>>>>> curl -u admin:password >>>>>>>>> http://localhost:9080/syncope/rest/users?fiql=city==dublin >>>>>>>>> >>>>>>>>> However, if I search for users who live in dublin and canada, I >>>>>>>>> still >>>>>>>>> get >>>>>>>>> "2", meaning that the second search term is ignored: >>>>>>>>> >>>>>>>>> curl -u admin:password >>>>>>>>> http://localhost:9080/syncope/rest/users?fiql=city==dublin;c >>>>>>>>> ountry==canada >>>>>>>>> >>>>>>>>> The strange thing is that the "or" condition appears to work ok. >>>>>>>>> Searching >>>>>>>>> for users who live in dublin or the usa returns all 3 users as >>>>>>>>> expected: >>>>>>>>> >>>>>>>>> curl -u admin:password >>>>>>>>> http://localhost:9080/syncope/rest/users?fiql=city==dublin,c >>>>>>>>> ountry==usa >>>>>>>>> >>>>>>>>> This is reproducible on both 2.0.0-SNAPSHOT + 1.2.8. It is a bug >>>>>>>>> IMO >>>>>>>>> but >>>>>>>>> wanted to get some feedback first before creating a JIRA. >>>>>>>>> >>>>>>>>> Colm. >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>> -- >>>>>> Sergey Beryozkin >>>>>> >>>>>> Talend Community Coders >>>>>> http://coders.talend.com/ >>>>>> >>>>>> >>>>> >>>>> >>>>> >>>> >>> >>> >> >> > > > -- > Sergey Beryozkin > > Talend Community Coders > http://coders.talend.com/ -- Francesco Chicchiriccò Tirasa - Open Source Excellence http://www.tirasa.net/ Involved at The Apache Software Foundation: member, Syncope PMC chair, Cocoon PMC, Olingo PMC, CXF Committer, OpenJPA Committer, PonyMail PPMC http://home.apache.org/~ilgrosso/
