That said I fixed it to make sure JSON sequences created from the
explicit collections of beans without a preconfigured wrapper name can
be read as is. It might've been a regression after all - I added a
test now...

Cheers, Sergey

On Tue, May 3, 2011 at 10:50 AM, Sergey Beryozkin <[email protected]> wrote:
> Hi
>
> Response contains 'Customers' because you have an explicit collection
> of Customer beans returned and Customer bean's xml name is 'Customer'
> - by default JSONProvider will try to pluralize it in order to have a
> 'better' collection name.
>
> When you get an explicit (top-level) JSON collection submitted, it has
> to be 'Customer' - because all we hae on the input is Customer.class
> instance to be populated, thus having 'Customers' won't work.
>
> What you can do is:
> - customize the name of the collection wrapper to 'Customer':
> http://cxf.apache.org/docs/jax-rs-data-bindings.html#JAX-RSDataBindings-Handlingexplicitcollections
>
> or set inTransformElements property on JSONProvider:
> http://cxf.apache.org/docs/jax-rs-data-bindings.html#JAX-RSDataBindings-CustomizingJAXBXMLandJSONinputandoutput
>
> which will convert 'Customers' into 'Customer' on input:
>
> "Customers" : "Customer"
>
> Hope that helps, Sergey
>
>
>
> On Tue, May 3, 2011 at 10:33 AM, arnavawasthi <[email protected]> wrote:
>> There was one more issue.
>>
>> List of Customers: Notice the "Customers" root key.
>> http://localhost:8080/cxfjaxrs/jaxrs/customerservice/listCustomers
>> Response:
>> {"Customers":[{"id":2999,"name":"Som Awasthi"},{"id":3000,"name":"Arnav
>> Awasthi"}]}
>>
>> When I submitted the same in addCustomersList
>>
>> http://localhost:8080/cxfjaxrs/jaxrs/customerservice/addCustomersList
>> Response:
>> {"Customers":[JAXBException occurred : unable to marshal type
>> "com.sun.org.apache.xerces.internal.dom.ElementNSImpl" as an element because
>> it is missing an @XmlRootElement annotation. unable to marshal type
>> "com.sun.org.apache.xerces.internal.dom.ElementNSImpl" as an element because
>> it is missing an @XmlRootElement annotation.
>>
>> And when I changed the key from "Customers" to "Customer", it worked. This
>> is somewhat confusing. Ideally same json format should work both ways.
>>
>> Thanks,
>> Arnav
>>
>> On Sun, May 1, 2011 at 10:45 PM, Sergey Beryozkin-5[via CXF] <
>> [email protected]> wrote:
>>
>>> Please try 2.3.4
>>>
>>> thanks, Sergey
>>>
>>> On Sun, May 1, 2011 at 3:50 PM, arnavawasthi <[hidden 
>>> email]<http://user/SendEmail.jtp?type=node&node=4363121&i=0&by-user=t>>
>>> wrote:
>>>
>>> > Souce code:
>>> > https://bitbucket.org/arnavawasthi/apache-cxf-jaxrs-spring/overview
>>> >
>>> > Test case:
>>> > I want to add multiple customers in one request. So instead of making
>>> > multiple calls, I want to make one with array of Customer objects. I
>>> > expected that this array would be easily converted into List<Customer>
>>> but
>>> > it didn't work as expected.
>>> >
>>> > URL:
>>> http://localhost:8080/jaxrs/jaxrs/customerservice/addCustomersArray/
>>> > Accept: application/json
>>> > Content-Type: application/json
>>> > Input JSON:
>>> > {"Customers":{"Customer":[{"id":2999,"name":"Som
>>> > Awasthi"},{"id":3000,"name":"Arnav Awasthi"}]}}
>>> >
>>> > Output: ERROR
>>> >
>>> > Accept: application/json
>>> > Content-Type: application/xml
>>> > Input XML:
>>> > <Customers><Customer><id>2999</id><name>Som
>>> > Awasthi</name></Customer><Customer><id>3000</id><name>Arnav
>>> > Awasthi</name></Customer></Customers>
>>> >
>>> > Output json:
>>> > {"Customers":{"Customer":[{"id":2999,"name":"Som
>>> > Awasthi"},{"id":3000,"name":"Arnav Awasthi"}]}}
>>> >
>>> > Now since you have the source code, you can try other options as well.
>>> Let
>>> > me know if you get it working.
>>> >
>>> > Thanks,
>>> > Arnav
>>> >
>>> > On Sun, May 1, 2011 at 7:13 PM, arnav awasthi <[hidden 
>>> > email]<http://user/SendEmail.jtp?type=node&node=4363121&i=1&by-user=t>>wrote:
>>>
>>> >
>>> >> If you want, I can share the code and use cases I am trying.
>>> >>
>>> >> On Sun, May 1, 2011 at 7:12 PM, Benson Margulies[via CXF] <
>>> >> [hidden 
>>> >> email]<http://user/SendEmail.jtp?type=node&node=4363121&i=2&by-user=t>>
>>> wrote:
>>> >>
>>> >>> Now we have to wait for Sergey or someone. I'm puzzled by this
>>> >>> producing that particular error status.
>>> >>>
>>> >>> On Sun, May 1, 2011 at 9:39 AM, arnavawasthi <[hidden email]<
>>> http://user/SendEmail.jtp?type=node&node=4362780&i=0&by-user=t>>
>>>
>>> >>> wrote:
>>> >>>
>>> >>> > @Consumes("application/json") was already there. Just to experiment I
>>>
>>> >>> added
>>> >>> > @Consumes({"application/xml", "application/json"}) and tried with
>>> >>> equivalent
>>> >>> > xml instead. With xml it worked.
>>> >>> > Input XML:
>>> >>> > <Customers><Customer><id>2999</id><name>Som
>>> >>> > Awasthi</name></Customer><Customer><id>3000</id><name>Arnav
>>> >>> > Awasthi</name></Customer></Customers>
>>> >>> >
>>> >>> > Output JSON:
>>> >>> > {"Customer":[{"id":2999,"name":"Som
>>> Awasthi"},{"id":3000,"name":"Arnav
>>> >>> > Awasthi"}]}
>>> >>> >
>>> >>> > But if I try the opposite, it doesn't work. May be this error is due
>>> to
>>> >>> the
>>> >>> > JAXB library, which does not support this feature.--
>>> >>> > View this message in context:
>>> >>>
>>> http://cxf.547215.n5.nabble.com/How-to-submit-JSON-data-as-request-body-in-Apache-CXF-jax-rs-REST-tp4361669p4362777.html<http://cxf.547215.n5.nabble.com/How-to-submit-JSON-data-as-request-body-in-Apache-CXF-jax-rs-REST-tp4361669p4362777.html?by-user=t><http://cxf.547215.n5.nabble.com/How-to-submit-JSON-data-as-request-body-in-Apache-CXF-jax-rs-REST-tp4361669p4362777.html%3Chttp://cxf.547215.n5.nabble.com/How-to-submit-JSON-data-as-request-body-in-Apache-CXF-jax-rs-REST-tp4361669p4362777.html?by-user=t%3E&by-user=t>
>>>
>>> >>>
>>> >>> > Sent from the cxf-user mailing list archive at Nabble.com.
>>> >>> >
>>> >>>
>>> >>>
>>> >>> ------------------------------
>>> >>>  If you reply to this email, your message will be added to the
>>> discussion
>>> >>> below:
>>> >>>
>>> >>>
>>> http://cxf.547215.n5.nabble.com/How-to-submit-JSON-data-as-request-body-in-Apache-CXF-jax-rs-REST-tp4361669p4362780.html<http://cxf.547215.n5.nabble.com/How-to-submit-JSON-data-as-request-body-in-Apache-CXF-jax-rs-REST-tp4361669p4362780.html?by-user=t>
>>> >>>  To unsubscribe from How to submit JSON data as request body in Apache
>>> CXF
>>> >>> jax-rs (REST), click here<
>>> >>>
>>> >>>
>>> >>
>>> >>
>>> > --
>>> > View this message in context:
>>> http://cxf.547215.n5.nabble.com/How-to-submit-JSON-data-as-request-body-in-Apache-CXF-jax-rs-REST-tp4361669p4362858.html<http://cxf.547215.n5.nabble.com/How-to-submit-JSON-data-as-request-body-in-Apache-CXF-jax-rs-REST-tp4361669p4362858.html?by-user=t>
>>> > Sent from the cxf-user mailing list archive at Nabble.com.
>>>
>>>
>>>
>>> --
>>> Sergey Beryozkin
>>>
>>> Application Integration Division of Talend
>>> http://sberyozkin.blogspot.com
>>>
>>>
>>> ------------------------------
>>>  If you reply to this email, your message will be added to the discussion
>>> below:
>>>
>>> http://cxf.547215.n5.nabble.com/How-to-submit-JSON-data-as-request-body-in-Apache-CXF-jax-rs-REST-tp4361669p4363121.html
>>>  To unsubscribe from How to submit JSON data as request body in Apache CXF
>>> jax-rs (REST), click 
>>> here<http://cxf.547215.n5.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=4361669&code=YXJuYXZhd2FzdGhpQGdtYWlsLmNvbXw0MzYxNjY5fC04MTcxNzc0NTY=>.
>>>
>>>
>>
>>
>> --
>> View this message in context: 
>> http://cxf.547215.n5.nabble.com/How-to-submit-JSON-data-as-request-body-in-Apache-CXF-jax-rs-REST-tp4361669p4366811.html
>> Sent from the cxf-user mailing list archive at Nabble.com.
>
>
>
> --
> Sergey Beryozkin
>
> Application Integration Division of Talend
> http://sberyozkin.blogspot.com
>



-- 
Sergey Beryozkin

Application Integration Division of Talend
http://sberyozkin.blogspot.com

Reply via email to