Sorry, I forgot to mention... For:
http://example.com/images/1;2;5?select=random
I already have a sub-resource that matches @Path("{id}"). This means that I
want one method returning a sub-resource (the "Image" resource), and another
method returning an XML document (the list of random images). In other
words, the method return-type varies based on the query string.
Is there a way for me to configure JAX-RS to pick the right method somehow?
What do you recommend?
Thanks,
Gili
Gili wrote:
> 
> Paul,
> 
> Does @Path ignore query arguments? If I want to parse for:
> 
> http://example.com/images/1;2;5?select=random
> 
> Can I use the following?
> 
> @Path("{id}?select=random")
> 
> or would I be forced to use a single method and fork execution myself
> based on the query arguments?
> 
> Thanks,
> Gili
> 
> 
> Paul Sandoz wrote:
>> 
>> 
>> On Nov 10, 2008, at 10:40 PM, Gili wrote:
>> 
>>>
>>>
>>> Paul Sandoz wrote:
>>>>
>>>> A better use would be:
>>>>
>>>>   http://example.com/images;1;2;5/tags
>>>>
>>>> as then the matrix parameters are associated with a named path
>>>> segment. Matrix parameters are ignored when path matching. The best
>>>> way to think about them is as query parameters scoped to a path  
>>>> segment.
>>>>
>>>
>>> I don't understand how the above would work. Are you saying that  
>>> "images"
>>> would have 3 matrix parameters: 1, 2 and 5?
>> 
>> Yes, specifically there are three matrix parameter names, each of  
>> which has no value.
>> 
>> 
>>> Paul Sandoz wrote:
>> 
>>>>
>>>> If you are using the path segment matching approach you could do:
>>>>
>>>>    @GET_at_Path("images/{id: <regex for digits and commas>}/tags")
>>>>     public ... get(@PathParam("id") ImageList images) { ... }
>>>>
>>>> and the class ImageList has a string constructor that parses the  
>>>> comma
>>>> separated list of names (see the Sparklines sample [1]).
>>>>
>>>
>>> Okay, I just wanted to get back a List<Integer>. I guess I could  
>>> code this
>>> up myself.
>> 
>> You could only do that with @MatrixParam (or @QueryParam) if you have  
>> one or more matrix parameters with the same name. You can use the  
>> following class for any @*Param value:
>> 
>>    public class IntegerList extends ArrayList<Integer> {
>>        public IntegerList(String s) {
>>            super();
>> 
>>            for (String v : s.split(",")) {
>>                try {
>>                    add(Integer.parseInt(v.trim()));
>>                } catch (Exception ex) {
>>                    throw new WebApplicationException(400);
>>                }
>>            }
>>            if (isEmpty())
>>                throw new WebApplicationException(400);
>>        }
>>    }
>> 
>> Paul.
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>> 
>> 
>> 
> 
> 
-- 
View this message in context: http://n2.nabble.com/Example-of-matrix-URIs--tp1482069p1486308.html
Sent from the Jersey mailing list archive at Nabble.com.