Sergey, I appreciate your help. There is no rush, I even think that in my case POST is better as I don't want to make it too easy to hit a groovy script on the server side from internet explorer anyway. So for now POST does it for me. It would of course be nice to have this support in the future CXF releases.
-Vitaly Sergey Beryozkin-2 wrote: > > You can still do it even now, but it will require you to do some manual > coding. > You can register a ParameterHandler<ExecuteRequest> and then parse a query > string from within that handler and populate an > ExecuteRequest instance accordingly... But I'll see if I can enhance the > implementation a bit till tomorrow evening > > Sergey > >> >> Yes, I guess I will use POST in this case and this body does fill in my >> map. >> It would be nice to allow it on the Url as well. >> ie: params.k1=v1¶ms.k2=v2 etc. >> >> <ns1:ExecuteRequest ns2:type="ns1:ExecuteRequest" >> xmlns:ns1="http://scripto.ports.v1.webservices.foo.com" >> xmlns:ns2="http://www.w3.org/2001/XMLSchema-instance"> >> <ns1:params> >> >> <ns3:entry xmlns:ns3="urn:org.apache.cxf.aegis.types"> >> >> <ns3:key>k1</ns3:key> >> >> <ns3:value>v1</ns3:value> >> >> </ns3:entry> >> >> <ns3:entry xmlns:ns3="urn:org.apache.cxf.aegis.types"> >> >> <ns3:key>k2</ns3:key> >> >> <ns3:value>v2</ns3:value> >> >> </ns3:entry> >> >> </ns1:params> >> </ns1:ExecuteRequest> >> >> >> Sergey Beryozkin-2 wrote: >>> >>> If you pass the information as a POST body then it should work (Aegis >>> should handle it or JAXB + XmlJavaTypeAdapter on the field of >>> type Map). If you pass it as a query, something like >>> >>> ?name=scriptName¶ms=a%3DaValue%26b%3DbValue >>> >>> then no, params won't be injected into a Map...Dan is plaaning to do a >>> build tomorrow evening or so... I'll try to do a quick >>> update... >>> >>> >>> >>> cheers, Sergey >>> >>> >>>> >>>> Thanks, I understand your suggestion, however the destination of these >>>> params >>>> is a groovy script which is why I wanted to piece together params as >>>> name >>>> value pairs >>>> and map is what fits best. My understanding that passing a map is an >>>> open >>>> issue under CXF >>>> is it? >>>> >>>> >>>> Sergey Beryozkin-2 wrote: >>>>> >>>>> Hi, >>>>> >>>>>> >>>>>> Here is spring config: >>>>>> >>>>>> <jaxrs:server address="/v1/rest"> >>>>>> <jaxrs:serviceBeans> >>>>>> <ref bean="scriptoServiceBean"/> >>>>>> </jaxrs:serviceBeans> >>>>>> >>>>>> <jaxrs:providers> >>>>>> <ref bean="aegisProvider"/> >>>>>> </jaxrs:providers> >>>>>> >>>>>> Here is the impl method: >>>>>> >>>>>> @POST >>>>>> @Path("/execute") >>>>>> public ExecuteResult execute(@QueryParam("") ExecuteRequest req) >>>>>> >>>>>> and ExecuteRequest bean class: >>>>>> >>>>>> @XmlRootElement >>>>>> public class ExecuteRequest extends WSBaseRequest >>>>>> { >>>>>> private String scriptName; >>>>>> private Map<String, String> params; >>>>>> >>>>>> getters.. >>>>>> setters.. >>>>>> } >>>>> >>>>> It won't work, not at the moment. List<String> will be ok, provided >>>>> you >>>>> have a query like scriptName=bar&name=a&name=b. >>>>> But it's not possible to 'connect' a sequence of name/value pairs with >>>>> a >>>>> Map instance at the moment. Can you please post a sample >>>>> query so that I can see why you expect a Map being injected ? Also >>>>> note >>>>> that no JAXB is involved when parameter beans are populated. >>>>> >>>>> What should work well is introducing a ParameterBean and have >>>>> public class ExecuteRequest extends WSBaseRequest >>>>> { >>>>> private String scriptName; >>>>> private ParametersBean params; >>>>>> >>>>>> getters.. >>>>>> setters.. >>>>> } >>>>> >>>>> and then do scriptName=bar¶ms.param1=a¶ms.param2=b >>>>> >>>>> where ParametersBean has setters/getters for param1 & param2 >>>>> >>>>> cheers, Sergey >>>>> >>>>>> >>>>>> >>>>>> Sergey Beryozkin-2 wrote: >>>>>>> >>>>>>> Hi >>>>>>> >>>>>>> I really need more information please. Which bean, a JAXB one, with >>>>>>> one >>>>>>> of >>>>>>> its fields being of Map type ? >>>>>>> Is it a form submission ? what is the resource method signature ? >>>>>>> >>>>>>> thanks, Sergey >>>>>>> >>>>>>>> >>>>>>>> Must be a simple one for anyone already done it. >>>>>>>> I have tried it today and couldn't figure out why it would not >>>>>>>> initialize my bean with a Map in it, anyone knows the trick? >>>>>>>> There seem to be a bug open on this, but I'm not sure if there >>>>>>>> is still an issue and if so is there a way to do this? >>>>>>>> Tried to post app xml in the POST body and on the Url all ends up >>>>>>>> with null set instead of the map with key value pairs. >>>>>>>> >>>>>>>> Thanks, >>>>>>>> -Vitaly >>>>>>>> -- >>>>>>>> View this message in context: >>>>>>>> http://old.nabble.com/CXF-REST-Map%3CString%2C-String%3E-as-argument-can-it-handle-it--tp26312629p26312629.html >>>>>>>> Sent from the cxf-user mailing list archive at Nabble.com. >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> -- >>>>>> View this message in context: >>>>>> http://old.nabble.com/CXF-REST-Map%3CString%2C-String%3E-as-argument-can-it-handle-it--tp26312629p26318928.html >>>>>> Sent from the cxf-user mailing list archive at Nabble.com. >>>>>> >>>>> >>>>> >>>>> >>>> >>>> -- >>>> View this message in context: >>>> http://old.nabble.com/CXF-REST-Map%3CString%2C-String%3E-as-argument-can-it-handle-it--tp26312629p26320714.html >>>> Sent from the cxf-user mailing list archive at Nabble.com. >>>> >>> >>> >>> >> >> -- >> View this message in context: >> http://old.nabble.com/CXF-REST-Map%3CString%2C-String%3E-as-argument-can-it-handle-it--tp26312629p26322286.html >> Sent from the cxf-user mailing list archive at Nabble.com. >> > > > -- View this message in context: http://old.nabble.com/CXF-REST-Map%3CString%2C-String%3E-as-argument-can-it-handle-it--tp26312629p26323375.html Sent from the cxf-user mailing list archive at Nabble.com.
