cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sergey Beryozkin <sberyoz...@gmail.com>
Subject Re: Missing xsi:type in derrived types
Date Tue, 22 May 2012 21:09:47 GMT
Hi,

So, for example, you have

com.foo.Base and com.foo.Base1 (extending com.foo.Base) with 
XMLRootElement on both classes ? The resource method returns
com.foo.Base, when Base1 is returned no xsi:type is added, right ?

Cheers, Sergey
On 22/05/12 16:52, Nikolay Aleksiev wrote:
> Hello,
>
> I have a REST service which returns a com.foo.Base class. This class is
> part of a complex domain hierarchy which looks like this:
>
> /com.foo.Base -> com.foo.Base1 -> com.foo.Base2 -> com.foo.Base3/ and
> Base3 is extended by multiple Concrete implementors.
>
> What I want to achieve is to have "xsi:type" set in the returned XML
> when a concrete class instance is used. I went through the documentation
> and added "JaxbElementClassNames" to my JAXBProvider. Here is my config:
>
> <bean id="jaxbProvider"
> class="org.apache.cxf.jaxrs.provider.JAXBElementProvider">
> <property name="marshallerProperties" ref="marshallerPropertiesMap" />
> <property name="jaxbElementClassNames" ref="myJaxbElementClassNames"/>
> </bean>
>
> <util:map id="marshallerPropertiesMap">
> <entry key="jaxb.encoding">
> <value type="java.lang.String">UTF-8</value>
> </entry>
> </util:map>
>
> <util:list id="myJaxbElementClassNames">
> <value>/com.foo.Base/</value>
> <value>/com.foo.Base/1</value>
> <value>/com.foo.Base/2</value>
> <value>/com.foo.Base/3</value>
> <value>/com.foo.Concrete1/</value>
> <value>/com.foo.Concrete2/</value>
> <value>/com.foo.Concrete3/</value>
> <value>/com.foo.Concrete4/</value>
> </util:list>
>
> <jaxrs:server id="clientServer" address="/">
> <jaxrs:providers>
> <ref bean="systemExceptionMapper" />
> <ref bean="jaxbProvider" />
> <ref bean="jsonProvider"/>
> <ref bean="followUpFilter" />
> </jaxrs:providers>
> ...
> </jaxrs:server>
>
> The result is that the xsi:type attribute is not added. All the concrete
> classes and com.foo.Base have @XMLRootElement annotation (the other base
> ones DO NOT). @XMLSeeAlso is added in all the classes.
>
> I'm using apache 2.4.7.
>
> Thanks for the help. Any ideas are welcome!
>
> Cheers,
> Nikolay
>
>
>
>


-- 
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/

Blog: http://sberyozkin.blogspot.com

Mime
View raw message