users@jersey.java.net

Re: _at_QueryParam Observations with different URI's

From: Paul Sandoz <Paul.Sandoz_at_Sun.COM>
Date: Tue, 31 Jul 2007 17:17:53 +0200

Hi James,

Thanks for finding this bug.

The issue was with the light weight HTTP server. It was using the
decoded query string instead of encoded query string.

It should be fixed in the latest build.

Paul.

James Weir wrote:
> Hi,
> I have looking at how to use the Jersey API and the @QueryParam using
> the StorageService example.
>
> I have the following method:
>
> @UriTemplate("/solutions")
> @ProduceMime("application/xml")
> @ConsumeMime("application/xml")
> public class SolutionsResource {
> .....
> @HttpMethod("GET")
> public Response searchSolutions(@QueryParam("q") String search,
> @QueryParam("hl") String lang) {...}
> ....
> }
>
> Using a simple search/query string it worked no problem at all. I was
> even surprised that you converted the "+" in the URI back to a space for
> me (excellent I thought I was going to have to do that myself). My
> example was:
>
> "query message" is:
> /solutions?hl=en&q=query+message
>
> I receive:
> search: "query message"
> lang: "en"
>
> I then started playing around with other simple query/search strings. I
> used the google substitutions for different symbols i.e.:
> space ==> "+"
> "+" ==> "%2B"
> "&" ==> "%26"
> "|" ==> "%7C"
>
> These are the observations I made:
>
> ====================================================================
> _Example 1_
> "query + message" is:
> /soultion?hl=en&q=query+%2B+message
>
>
> I receive:
> search: "query message" (3 spaces)
> lang: "en"
>
> So the "+" is not preserved
>
>
> _Example 2_
> "query & message" is:
> /solutions?hl=en&q=query+%26+message
>
> I receive:
> search: "query"
> lang: "en"
>
> So the second part of the message (namely the & and word "message" is
> missing)
>
> _Example 3
> _"query || message"
> /solutions?hl=en&q=query+%7C%7C+message
>
> It works, I receive:
> search: "query || message"
> lang: "en"
>
> ===================================================================
>
> From these observations I have a some questions.
>
> Firstly are observations made in Example 1 and Example 2 bugs or are you
> using other symbols to represent "&" and "+" ?.
>
> Also it seems that my method can have many different QueryParams, at the
> moment I only have two but I could see myself extending this. Do you
> have any guidelines on the maximum number of QueryParams a method should
> have and the consequent performance impact ?.
>
> Regards
> James
>

-- 
| ? + ? = To question
----------------\
    Paul Sandoz
         x38109
+33-4-76188109