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

Reply via email to