Good Day Folks,
Hopefully you can help me.
I am consuming a wsdl that was incorrectly defined and I need to come up
with a workaround in CXF.
The server side methods return a "serialized" Dom. They used some mapping in
axis1 to map the class they are returning to a class called XmlElement,
which is an empty class.
The end result is that the WSDL shows the methods returning an XmlElement
class looking like this:
------------------------------
------------------------
<complexType name="XmlElement">
<sequence/>
</complexType>
------------------------------------------------------
The CXF code generated from the WSDL correctly creates an XmlElement class
that is empty:
------------------------------------------------------
package com.tt.ws.cxf;
public class XmlElement {
}
------------------------------------------------------
So, when the method getLocations() is invoked it correctly returns the
following response:
------------------------------------------------------
<getLocationsReturn xsi:type="ns1:XmlElement" xmlns:ns1="
http://api.service.timecommerce.timetrade.com/">
<Locations LicenseeId="997" UserId="1" xmlns="">
<Location>
<LocationId>1</LocationId>
<LocationName>JMochel Test Site</LocationName>
<LocationURL>jmochel</LocationURL>
</Location>
</Locations>
</getLocationsReturn>
------------------------------------------------------
The client code returns the empty XmlElement object.
The official WSDL willl not be changed immediately so I need to come up with
a way of allowing the CXF code to take the incoming XML returned and
generate a DOM Element or equivalent.
After digging around I get the hint that some combination of the following
will get me going in the direction I want
1. The xsd:any schema element (hand modify the WSDL and regenerate the code
so that it treats XmlElement as containing xsd:any)
2. Write custom unmarshalling code and figure out how to hook it in.
3. Playing with the JAXBContext
Any suggestions for the cleanest solution to this ?
Thank you,
Jim Mochel