Hi I'm not sure where a regression might've been introduced but I'll investigate. I think I have a test for proxies using query and path param beans, but no form param beans
cheers, Sergey On Mon, Apr 12, 2010 at 11:54 PM, Josh Cummings <[email protected]>wrote: > For what it is worth, we experienced the same thing. > > We originally had only one method: > > @POST > @Path("/myResource/{c}/{d}") > @Consumes({"application/x-www-form-urlencoded"}) > public E getE(@FormParam("") A a, @PathParam("") B b); > > We had client Java code and form posts using the one method. Upon > upgrading > to 2.2.7, it appears that the handleForm method gets the String name of our > object instead of the object itself. > > The workaround that we found was to split the code into two methods: > > @POST > @Path("/myResource/{c}/{d}") > @Consumes({"application/xml", "application/json"}) > public E getE(A a, @PathParam("") B b); > > @POST > @Path("/myResource/{c}/{d}") > @Consumes({"application/x-www-form-urlencoded"}) > public E getEForm(@FormParam("") A a, @PathParam("") B b); > > I'm also not certain if this is a bug. > > Thanks, > Josh > > > On Mon, Apr 12, 2010 at 11:39 AM, Jungwoo Jang <[email protected] > >wrote: > > > > > Hello all, > > > > I apologize in advance if this is the incorrect mailing list to post this > > question to. > > > > I have a question around whether some behavior I am seeing is a bug or if > > it is functioning as designed. > > > > I am trying out the parameter bean example in the cxf jaxrs > documentation. > > Note the following has been simplified, since I am only worried about > > @FormParam types. > > @Path("/customer/{id}") > > public class CustomerService { > > > > @POST > > public Response addCustomerOrder(@FormParam("") OrderBean bean) { > > ... > > } > > } > > > > public class OrderBean { > > public void setId(Long id) {...} > > public void setWeight(int w) {...} > > } > > > > So, this works when I use a browser as the client. > > But when I use the client runtime library it does not. > > > > CustomerService service = JAXRSClientFactory.create(...); > > service.addCustomerOrder(new OrderBean(123, 150)); > > > > After debugging through the code, it seems like the > > > rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java's > > handleForm(...) method is doing something it shouldn't be doing. > > > > FormUtils.addPropertyToForm(form, p.getName(), > > params[p.getIndex()].toString()); > > > > The params[p.getIndex()] is the OrderBean that I have passed in. But > then > > this code converts it to a String and then in the > > FormUtils.addPropertyToForm method, it makes an > > InjectionUtils.extractValuesFromBean(value, "") call, where the value is > the > > toString() value of the OrderBean. > > > > So, the http request has bytes=somebytes, when I was expecting id=123 and > > weight=150. > > > > Here is the jira ticket that I believe was why this code was introduced. > https://issuesowever, > > . > apache.org/jira/browse/CXF-2389?page=com.atlassian.jira.plugin.ext.subversion%3Asubversion-commits-tabpanel > < > https://issues.apache.org/jira/browse/CXF-2389?page=com.atlassian.jira.plugin.ext.subversion%3Asubversion-commits-tabpanel > > > > > > So, is this bug? I did a search for jira tickets to see if this was > > already a known issue. If it is a bug, should I file a new jira ticket > and > > link it to the ticket mentioned above? > > > > Thanks, > > Jungwoo > > > > > > _________________________________________________________________ > > The New Busy think 9 to 5 is a cute idea. Combine multiple calendars with > > Hotmail. > > > > > http://www.windowslive.com/campaign/thenewbusy?tile=multicalendar&ocid=PID28326::T:WLMTAGL:ON:WL:en-US:WM_HMP:042010_5 > > > > > > -- > Josh Cummings > The Pi-Dye T-Shirt Shop > http://www.pidye.com > 801-556-2751 > > Learn how to be a part of the biggest redistribution of pi in the history > of > mankind at www.pidye.com >
