Daniel, It worked like a charm.
I ran into trouble doing that with Axis 2 so I didn't try the same solution in CXF. Thank you for responding quickly and for all of the work you do on the CXF stack! - Jim On Wed, Mar 24, 2010 at 5:25 PM, Daniel Kulp <[email protected]> wrote: > > Personally, I would go with fixing a local copy of the wsdl (either via a > xsd:any or preferably actually defining schemas for the data and using > those) > and regenerate the code with the fixed wsdl. > > Dan > > On Wednesday 24 March 2010 12:41:33 pm Jim Mochel wrote: > > 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 > > -- > Daniel Kulp > [email protected] > http://dankulp.com/blog >
