This is what EMF generates:
public class AwesomeCustomerImpl extends CustomerImpl implements
AwesomeCustomer {...}
public class CustomerImpl extends EObjectImpl implements Customer {...}
public interface AwesomeCustomer extends Customer {...}
public interface Customer extends EObject {...}
On Mon, Apr 18, 2011 at 9:32 AM, Sergey Beryozkin <[email protected]> wrote:
> Simon, does AwesomeCustomerImpl extends CustomerImpl, or do you have both
> AwesomeCustomerImpl and CustomerImpl implementing Customer ?
>
> If it is the former then returning and accepting CustomerImpl should work
> but in the method accepting CustomerImpl you'll need to further cast to
> AwesomeCustomerImpl or SuperAwesomeCustomerImpl. CXF will add xsi:type to
> serialized data, see
> http://cxf.apache.org/docs/jax-rs-data-bindings.html#JAX-RSDataBindings-AutomaticJAXBElementconversionduringserialization
>
> Cheers, Sergey
>
> On Mon, Apr 18, 2011 at 1:53 PM, Sergey Beryozkin <[email protected]>wrote:
>
>> Hi
>>
>> On Sat, Apr 16, 2011 at 4:40 AM, [email protected] <
>> [email protected]> wrote:
>>
>>>
>>>> Can you send me a pointer to some examples?
>>>>
>>>
>>>
>>> @Path("/")
>>> class WebStore {
>>> @POST
>>> @Path("/customers/")
>>> Response addCustomer(@XmlJavaTypeAdapter(CustomerImplAdapter.class)
>>> Customer c) {
>>> ...
>>> }
>>> }
>>>
>>>
>>>
>>>
>>>
>>> public class CustomerImplAdapter extends XmlAdapter<CustomerImpl,
>>> Customer> {
>>>
>>> @Override
>>> public Customer unmarshal(CustomerImpl v) throws Exception {
>>> return v;
>>> }
>>>
>>> @Override
>>> public CustomerImpl marshal(Customer v) throws Exception {
>>> return (CustomerImpl) v;
>>> }
>>> }
>>>
>>>
>>> ... and annotate CustomerImpl with @XmlRootElement
>>>
>>> Alternatively, instead of adding
>>> @XmlJavaTypeAdapter(CustomerImplAdapter.class) to the parameter, you can add
>>> it to Customer inteface directly.
>>>
>>>
>> But how can we deal here with returning not only CustomerImpl but also
>> AwesomeCustomerImpl ?
>> Usually we can rely on xsi:type but this info is not available at the
>> adapter level
>>
>> Cheers, Sergey
>>
>>
>>> Cheers,
>>> Joerg
>>>
>>
>