Hi Gabo
great it's working - I'd also credit the jaxrs experts who came up with the feature and a cxf user who said a couple of months ago
arbitrary regexs were not supported :-)
Thanks, Sergey
Hi Sergey,
Just to note down what I did from your suggestions.
Currently, I am using 2.2 snapshot. I have modified the code as follows:
1. I have defined the method as follows:
@GET
@Path("/{search:search.*}")
public WSAccounts getAccounts(
@PathParam("search")
SearchFilter sf) {
2. SearchFilter now has a constructor that accepts a String as parameter.
As a result, the code is able to handle the following cases freely:
/search/accountid%3D%271%27+and+balance+between+1+and+2/accountid/1/10
/search/accountid%3D%271%27+and+balance+between+1+and+2
/search?wherecondition=accountid%3D%271%27+and+balance+between+1+and+2&sortstring=accountid&startingrow=1&lastrow=10
/search?wherecondition=accountid%3D%271%27+and+balance+between+1+and+2
wherein defaults may be loaded in the samples 2 and 4 above.
Again, my thanks!
Gabo
Sergey Beryozkin wrote:
Hi Gabo
Hi Sergey,
> It's correct. Given that you're running a 2.1.4-snapshot, you may
want to try
> @Path(value="/search/{params}", unlimited=true)
Is there a way that the excess/pattern is not captured? Also, I think the keyword is limited, I'm assuming the value would be
false.
Yes, sorry, it should be limited=false.
Please note you can only set a limited value on with 0.8 api, on 2.1.x.
Another thing, when using arbitrary regular expressions, you probably don't want to use 'limited=false' at all, but rather use
just @Path(value="/search{bar:.*}")
Note the syntax of the expression, {bar:.*}, the 'bar' is seperated by ':' from
a regular expression.
So, to summarize, on 2.2-snapshot line you can only use custom regular
expressions to customize the way some matching is done.
On 2.1-snapshot, you can use either regular expressions, or in cases where a
greedy all-capturing match is needed, limited=false.
For ex,
@Path(value="/search{bar:.*}")
@Path(value="/search{bar},limited=false)
Please try the 2.1.4-SNAPSHOT which Dan released last Friday if you'd like to try the arbitrary reg expressions, otherwise try
using limited=false
Cheers, Sergey
@Path(value="/search{.*}", limited=false)
results to: Exception in thread "main" java.util.regex.PatternSyntaxException:
Illegal repetition near index 6
/search{\.*}(/.*)?
which is simply hints that the name is required as specified in the docs:
http://www.jboss.org/file-access/default/members/resteasy/freezone/docs/1.0-beta-9/javadocs/javax/ws/rs/Path.html
@Path(value="/search.*", limited=false)
@Path(value="/search", limited=false)
results to: org.apache.cxf.interceptor.Fault: .No operation matching request
path /search/additional/path/here
Gabo
------------------------------------------------------------------------
No virus found in this incoming message.
Checked by AVG - http://www.avg.com Version: 8.0.176 / Virus Database:
270.9.18/1848 - Release Date: 12/14/2008 12:28 PM