Thank you Sergey!


On Thu, Jun 13, 2013 at 6:48 PM, diana-cxfUser allam-cxfUser <
[email protected]> wrote:

> Thank you Jersey!
>
>
>
> On Thu, Jun 13, 2013 at 6:39 PM, Sergey Beryozkin <[email protected]>wrote:
>
>> Hi Diana
>>
>> On 13/06/13 17:09, diana-cxfUser allam-cxfUser wrote:
>>
>>> Hello,
>>>
>>> What is the provider exactly?
>>> For the marshaling process, I understood that there are a DataWriter and
>>> a
>>> DataBinding instance (JAXB by default).
>>> I suppose that, in the cxf 2.4, the JAXBDataBinding instance (
>>> http://cxf.apache.org/javadoc/**latest/org/apache/cxf/jaxb/**
>>> JAXBDataBinding.html#**JAXBDataBinding%28java.lang.**Class...%29<http://cxf.apache.org/javadoc/latest/org/apache/cxf/jaxb/JAXBDataBinding.html#JAXBDataBinding%28java.lang.Class...%29>
>>> )
>>> has Resource2 class as a context.
>>> In cxf 2.7, JAXBDataBinding instance has Resource1 class as a context.
>>> Is the provider a specific class in cxf which specifies the Data Binding
>>> context?
>>>
>>>  I think we discussed it before. You are right, DataWriter and
>> DataBinding are used by CXF but mainly when working with WS/Soap services.
>> Note, it is possible to use CXF DataBindings (those typically used by WS)
>> in RS endpoints too, but this is not a mainstream case, by default JAX-RS
>> runtime uses JAX-RS MessageBodyWriter and MessageBodyReader - these are
>> providers, the 'data bindings' in the JAX-RS world
>>
>>  I have another question please: Are  the marshalling/unmarshalling
>>> results
>>> the same for all data bindings? for example Aegis?
>>> SDO, Json Data Bindings and others implemented in Cxf?
>>> In cxf, there are different DataReaders and DataWriters for each data
>>> binding.
>>> Does that modify the marshalling/unmarshalling of messages?
>>> Indeed, by considering a POJO approach, is there a real difference
>>> between
>>> these data bindings?
>>> Except performance criterion maybe and the ability to convert some
>>> particular XML syntax into Java?
>>>
>>>  I think every CXF data binding will likely produce a slighty different
>> XML, though I guess in some cases there could be matches
>>
>> Sergey
>>
>>> Regards,
>>>
>>> Diana
>>>
>>>
>>>
>>> On Thu, Jun 13, 2013 at 5:34 PM, Sergey Beryozkin <[email protected]
>>> >wrote:
>>>
>>>  Hi
>>>>
>>>> On 13/06/13 15:22, allam wrote:
>>>>
>>>>  Hello,
>>>>>
>>>>> I have a restful service which implements the following interface:
>>>>> @Path("/service/")
>>>>> public interface ServiceInterface {
>>>>>
>>>>>       @POST
>>>>>       @Path("/resources/")
>>>>>       public void op(Resource1 r);
>>>>>
>>>>> }
>>>>>
>>>>> and I have two classes Resource1 and Resource2, such that Resource2
>>>>> extends
>>>>> Resource1.
>>>>> (I am not using @XmlSeeAlso annotation in Resource1 class to bind on
>>>>> Resource2 class).
>>>>> I would like to call the service method op, using an instance of
>>>>> Resource2.
>>>>>
>>>>> Before, by using CXF 2.5, the Resource2 instance is marshalled to the
>>>>> following XML :
>>>>> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
>>>>> <resource2>
>>>>>      <attr1>default</attr1>
>>>>>      <attr2>0</attr2>
>>>>> </resource2>
>>>>>
>>>>> and an exception is thrown at reception because the expected root
>>>>> element
>>>>> is
>>>>> "resource1" not "resource2".
>>>>>
>>>>>  That is correct I guess
>>>>
>>>>
>>>>  While by using CXF 2.7, the Resource2 instance is marshalled to the
>>>>> following XML:
>>>>> <resource1>
>>>>>      <attr1>default</attr1>
>>>>> </resource1>
>>>>>
>>>>> And there isn't any exception at reception.
>>>>> That means, in CXF 2.5, the marshalling type was the dynamic type,
>>>>> while
>>>>> in
>>>>> the cxf 2.7 version, the marshalling type is the static type.
>>>>> What does make this change between the two versions?
>>>>> and for which reason this modification was done between the two
>>>>> versions?
>>>>>
>>>>>  In CXF 2.5.x the actual object instance class was reported to the
>>>> providers, in CXF 2.7.x - the class of the method parameter, which is
>>>> correct.
>>>> The fact that no exception is reported is good. I think you need now to
>>>> use XmlSeeAlso or may be configure JAXBElementProvider to report
>>>> xsi:type
>>>> if needed, etc, and on the client side, check please
>>>>
>>>> http://cxf.apache.org/docs/****jax-rs-data-bindings.html#JAX-****<http://cxf.apache.org/docs/**jax-rs-data-bindings.html#JAX-**>
>>>> RSDataBindings-****CommonJAXBandJSONconfiguration**<
>>>> http://cxf.apache.org/docs/**jax-rs-data-bindings.html#JAX-**
>>>> RSDataBindings-**CommonJAXBandJSONconfiguration<http://cxf.apache.org/docs/jax-rs-data-bindings.html#JAX-RSDataBindings-CommonJAXBandJSONconfiguration>
>>>> **>
>>>>
>>>> Cheers, Sergey
>>>>
>>>>
>>>>
>>>>
>>>>> Regards,
>>>>>
>>>>> Diana
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> View this message in context: http://cxf.547215.n5.nabble.**
>>>>> com/JAX-RS-marshalling-****unmarshalling-between-cxf-2-5-****
>>>>> and-cxf-2-7-tp5729200.html<htt**p://cxf.547215.n5.nabble.com/**
>>>>> JAX-RS-marshalling-**unmarshalling-between-cxf-2-5-**
>>>>> and-cxf-2-7-tp5729200.html<http://cxf.547215.n5.nabble.com/JAX-RS-marshalling-unmarshalling-between-cxf-2-5-and-cxf-2-7-tp5729200.html>
>>>>> >
>>>>>
>>>>> Sent from the cxf-user mailing list archive at Nabble.com.
>>>>>
>>>>>
>>>>>
>>>> --
>>>> Sergey Beryozkin
>>>>
>>>> Talend Community Coders
>>>> http://coders.talend.com/
>>>>
>>>> Blog: http://sberyozkin.blogspot.com
>>>>
>>>>
>>>
>>
>> --
>> Sergey Beryozkin
>>
>> Talend Community Coders
>> http://coders.talend.com/
>>
>> Blog: http://sberyozkin.blogspot.com
>>
>
>

Reply via email to