OK
Thanks for the help Sergey!

On Thu, Dec 17, 2015 at 4:10 PM, Sergey Beryozkin <sberyoz...@gmail.com>
wrote:

> Hi
> I may have got confused
>
> So you need a form sequence where every value is a complex property ?
> Unfortunately JAX-RS does not support helping in this case, but you can
> have a method signature with multiple @FormParam() parameters, and use a
> proxy based API, so in this case by registering a custom
> MyParamConverterProvider you can get that to/from String conversion code
> moved out of the beans to this provider...
>
> Thanks, Sergey
>
>
> On 17/12/15 05:09, Maxim Solodovnik wrote:
>
>> Hello Sergey,
>>
>> thanks for the quick response,
>> maybe you have some example/test I can take a look at? cause currently I
>> need to create methods like:
>>
>> Response resp = getClient(USER_SERVICE_URL)
>> .path("/hash")
>> .query("sid", r.getMessage())
>> .form(new Form().param("user", new
>> JSONObject(user).toString()).param("options", new
>> JSONObject(options).toString()));
>>
>> public static BeanA fromString(String s) {
>> JSONObject o = new JSONObject(s);
>> BeanA b = new BeanA();
>> b.prop1 = o.getString("prop1");
>> b.prop2 = o.getString("prop2");
>> b.prop3 = o.getString("prop3");
>> b.prop4 = o.getString("prop4");
>> return b;
>> }
>>
>> in my beans, which I believe should be done somehow automatically
>>
>> without this code I'm getting
>> Parameter Class org.apache.openmeetings.package.BeanA has no constructor
>> with single String parameter, static valueOf(String) or fromString(String)
>> methods
>>
>>
>>
>> On Wed, Dec 16, 2015 at 4:23 PM, Sergey Beryozkin <sberyoz...@gmail.com>
>> wrote:
>>
>> Hi Max
>>>
>>> It is unfortunate Form accepts parameters with String values, I think we
>>> missed it should be Object instead given that ParamConverterProvider is
>>> available in JAX-RS 2.0.
>>>
>>> form() can deal with MultipartMap - CXF ships MetadataMap which
>>> implements
>>> it, and JAX-RS 2.0 ships a simple implementation too:
>>>
>>>
>>>
>>> https://jax-rs-spec.java.net/nonav/2.0-rev-a/apidocs/javax/ws/rs/core/MultivaluedHashMap.html
>>>
>>> You'll still need registering ParamConverterProvider if values are not
>>> String and the beans do not override toString()
>>>
>>> HTH, Sergey
>>>
>>>
>>>
>>>
>>> It has to be MultivaluedMap, JAX-RS
>>>
>>> On 16/12/15 10:04, Maxim Solodovnik wrote:
>>>
>>> Hello All,
>>>>
>>>> I'm currently trying to write RS service accepting 2 objects of
>>>> different
>>>> types as parameters:
>>>>
>>>> ex. code:
>>>>
>>>>
>>>>
>>>> @WebService(serviceName="org.apache.openmeetings.webservice.UserWebService")
>>>> @Features(features = "org.apache.cxf.feature.LoggingFeature")
>>>> @Produces({MediaType.APPLICATION_JSON})
>>>> @Path("/user")
>>>> public class UserWebService {
>>>> @POST
>>>> @Path("/hash")
>>>> public ServiceResult getRoomHash(
>>>> @FormParam("user") BeanA user
>>>> , @FormParam("options") BeanB options
>>>> ) throws ServiceException
>>>> {}
>>>> }
>>>>
>>>> and I'm trying to invoke this method from JUnit test:
>>>>
>>>>
>>>> ExternalUserDTO user = new ExternalUserDTO();
>>>> RoomOptionsDTO options = new RoomOptionsDTO();
>>>> Map<String, List<Object>> map = new LinkedHashMap<>();
>>>> map.put("user", Arrays.asList((Object)user));
>>>> map.put("options", Arrays.asList((Object)options));
>>>> Response resp = getClient(USER_SERVICE_URL)
>>>> .path("/hash")
>>>> .form(map);
>>>> //throws no body wrapper for LinkedHashMap class
>>>>
>>>> I cannot use .form(new Form().....) due to it can only accepts string
>>>> parameters
>>>>
>>>> can someone please point me to an example or provide with the hint how
>>>> this
>>>> can be implemented
>>>>
>>>> Thanks in advance
>>>>
>>>>
>>>>
>>>>
>>> --
>>> Sergey Beryozkin
>>>
>>> Talend Community Coders
>>> http://coders.talend.com/
>>>
>>>
>>
>>
>>
>
> --
> Sergey Beryozkin
>
> Talend Community Coders
> http://coders.talend.com/
>



-- 
WBR
Maxim aka solomax

Reply via email to