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.