The RESTEasy client framework fails to handle collection or array parameters correctly (query param, matrix param).
Consider the following JAX-RS service interface:
@Path(value = "/myresource")
The matrix param "id" is of type List<String>, so the parameter can be repeated any number of times to form a collection of strings. A GET URL for this resource could be the following: http://host/app/myresource;id=1;id=2;id=3
This works fine with the RESTEasy server side framework. However, the client framework produces URLs like this: http://host/app/myresource;id=%5B1%2C%202%2C%203%5D
The RestEasy client framework fails to notice that this is actually a collection of values and simply invokes the toString method of the collection, which leads to the invalid GET URL posted above.
Upon receiving a request with such an URL the REST server (implemented with RESTEasy) produces the following error message:
Unable to extract parameter from http request: javax.ws.rs.MatrixParam(\"id\") value is '[1, 2, 3]' for public abstract [... method signature omitted ...]
My current low-level workaround is to put a comma separated list into a string and do the parsing manually as this seemed to be the simplest way to workaround this problem.
I think the method createRequest(Object) in org.jboss.resteasy.client.core.ClientInvoker should check if the argument is an array or a collection. If this is the case it should iterate over the array/collection and invoke marshallers[i].build(request, args[i]) for each single element.
Additional information: There is a stackoverflow entry on the same topic which proposes a more sophisticated workaround using wrapper objects