Hi,
Thanks for posting it. Actually, you'll likely get a faster response if you
ask on the jaxb-users list, as opposed to jaxb-dev. If you do post to the
users as well, then please consider dropping my response as it makes it a
bit more difficult for JAXB experts out there to see what the real issue is,
just ask them what is the way to force JAXB to introduce xsi:type into a
serialized XML fragment for DerivedType, given the original schema
cheers, Sergey
Qzpmwo wrote:
>
> Hi Sergey,
>
> Thanks a lot for so fast response and your investigation. I have posted my
> initial email and your response to jaxb nabble.
>
>
>
>
> Sergey Beryozkin wrote:
>>
>> Hi
>>
>> I've experimented a bit and I've managed to have a test producing the
>> expected data, but only when using an explicit JAXBElement, this one
>>
>> @Test
>> public void testWriteDerivedTypeJaxbElement() throws Exception {
>> JAXBElementProvider provider = new JAXBElementProvider();
>> Method m = CollectionsResource.class.getMethod("getBaseJaxb", new
>> Class[0]);
>> DerivedType derived = new DerivedType();
>> JAXBElement<BaseType> jaxb = new
>> JAXBElement<BaseType>(_Base_QNAME, BaseType.class, null, derived);
>> ByteArrayOutputStream bos = new ByteArrayOutputStream();
>> provider.writeTo(jaxb, m.getReturnType(),
>> m.getGenericReturnType(),
>> new Annotation[0], MediaType.TEXT_XML_TYPE, new
>> MetadataMap<String, Object>(), bos);
>> String s = bos.toString();
>> System.out.println(s);
>>
>> }
>>
>> produces
>>
>> <?xml version="1.0" encoding="UTF-8" standalone="yes"?><ns2:base
>> xmlns:ns2="http://www.cisco.com/dms/xml/ns/dsmCommonService"
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>> xsi:type="ns2:DerivedType"/>
>>
>> I'm presuming you have a method like this one :
>>
>>
>> public class RootResource {
>> @GET
>> public BaseType getType() { return new DerivedType(); }
>> }
>>
>> I'm not sure why JAXB chooses to serialize it as
>>
>> <?xml version="1.0" encoding="UTF-8" standalone="yes"?><ns2:derivedType
>> xmlns:ns2="http://www.cisco.com/dms/xml/ns/dsmCommonService"/>
>>
>> in this case, given that ObjectFactory has a method returning
>> JAXBElement<BaseType>. I tried to force an ObjectFactory method returning
>> JAXBElement<BaseType> be used, I removed @XmlRootElement on BaseType but
>> it didn't make any difference. Removing @XmlRootElement on DerivedType
>> causes a JAXB failure - though ObjectFactory has a method returning
>> JAXBElement<DerivedType>.
>>
>> Can you please post a question to the JAXB users list ? I'd be interested
>> to see what they reply. Unless our resident experts (Dan, Benson) can
>> help ?
>>
>> thanks, Sergey
>>
>
>
--
View this message in context:
http://www.nabble.com/Possible-problem-with-JAXB-marshalling-tp24549727p24571272.html
Sent from the cxf-user mailing list archive at Nabble.com.