On Apr 1, 2009, at 3:59 PM, Farrukh Najmi wrote:
> Paul Sandoz wrote:
>>
>> On Apr 1, 2009, at 1:57 PM, Farrukh Najmi wrote:
>>> Hi Paul,
>>>
>>> If the jsonString represents List<PostalAddressType> where
>>> PostalAddressType is my JAXB generated bean then what should c be
>>> and how can I create an instance. Sorry for asking such a basic
>>> question. Also I note that the second arg to getMessageBodyReader
>>> is of a different type. I can get that with following code (thanks
>>> Marc):
>>>
>>> GenericEntity<List<PostalAddressType>> entityPostalAddresses =
>>> new
>>> GenericEntity<List<PostalAddressType>>(listPostalAddresses) {};
>>> Type genericTypePostalAddresses = entityPostalAddresses.getType();
>>>
>>> So my call looks like:
>>>
>>> providers.getMessageBodyReader(??, genericTypePostalAddresses,
>>> (java.lang.annotation.Annotation[])null, "application/json");
>>>
>>> and I am unsure how to get the first param in the call.
>>>
>>
>
> I just realized that the formParams are returned in a MultiValuedMap
> where the key PostalAddress has a List<String> value which looks
> like below when using MultiValuedMap.toString()
>
> PostalAddress=[{streetNumber:"65",street:"Marla
> Ln
> .",stateOrProvince
> :"MA",postalCode:"01867",country:"USA",city:"Reading"},
> {streetNumber:"1",street:"Main
> St
> .",stateOrProvince
> :"MA",postalCode:"01867",country:"USA",city:"Reading"}]
>
> So I have a List<String> that I need to convert to
> List<PostalAddressType> where PostalAddressType is the JAXB
> generated bean class.
>
The List<String> is returned because there could be more than one form
parameter "PostalAddress" declared. It is the same for query
parameters e.g.
http://host:8080/path?a=one&a=two
If you like you can also use:
@FormParam("PostalAddress") String postalAddress
or
@FormParam("PostalAddress") List<String> postalAddresses
the former will obtain the first parameter value for the parameter
name "PostalAddress", where as the latter will obtain all values.
> Does this mean that I need to convert each String in List<String> to
> PostalAddressType or can I convert List<String> to convert to
> List<PostalAddressType> directly?
>
The former.
> I would not be asking such detailed questions except that I am
> finding the Provoiders.getMessageBodyReader params type and
> genericType not obvious. Perhaps its my lack of clarity on java
> generics.
>
Using arrays is easier.
Paul.