That's just an org.w3c.dom.Element.
On Wed, Oct 13, 2010 at 5:33 PM, Jeffrey Rodgers <[email protected]> wrote: > Right, that gives me a: > "com.sun.org.apache.xerces.internal.dom.ElementNSImpl" class > > Which eclipse lists as a forbidden reference. I can lift the restriction and > toy with that I suppose. I definitely expected something similar to what > you described, but that threw me for a loop. There are some hits on Google > to at least further investigate. > > Jeffrey > > On Wed, Oct 13, 2010 at 5:07 PM, Daniel Kulp <[email protected]> wrote: > >> >> My suggestion is to do a System.out.pritnln(_any.getClass().getName()) >> to see what the real class is for the object and then go from there. It's >> likely one of: >> >> some subclass of org.w3c.dom.Element >> or >> JAXBElement (grab the object/value out of it) >> or >> SubjectsDS >> >> >> Dan >> >> >> >> On Wednesday 13 October 2010 4:28:03 pm Jeffrey Rodgers wrote: >> > I have one @XmlSeeAlso in the SrvSoap SEI, the block as follows: >> > >> > @WebService(targetNamespace = "http://foo/moo/", name = "SrvSoap") >> > @XmlSeeAlso({ObjectFactory.class}) >> > public interface SrvSoap { >> > @WebResult(name = "GetLatestSubjectsDSResult", targetNamespace = " >> > http://foo/moo/") >> > @RequestWrapper(localName = "GetLatestSubjectsDS", targetNamespace = >> " >> > http://foo/moo/", className = "com.srv.GetLatestSubjectsDS") >> > @WebMethod(operationName = "GetLatestSubjectsDS", action = " >> > http://foo/moo/GetLatestSubjectsDS") >> > @ResponseWrapper(localName = "GetLatestSubjectsDSResponse", >> > targetNamespace = "http://foo/moo/", className = >> > "com.srv.GetLatestSubjectsDSResponse") >> > public com.srv.GetLatestSubjectsDSResponse.GetLatestSubjectsDSResult >> > getLatestSubjectsDS( >> > @WebParam(name = "numSubjects", targetNamespace = >> > "http://foo/moo/") int numSubjects, >> > @WebParam(name = "lastId", targetNamespace = "http://foo/moo/") >> > int lastId >> > ); >> > >> > The JAXB unmarshaller was the first place I went to earlier, but since >> _any >> > is an Object and doesn't want to accept an obvious cast from me, I have >> not >> > been able to properly pass it to unmarshall method (maybe I am missing >> > something very obvious with accessing the innards of that any property). >> > >> > Thanks, >> > Jeff >> > >> > On Wed, Oct 13, 2010 at 4:08 PM, Daniel Kulp <[email protected]> wrote: >> > > If CXF generated the code for that schema, there should also be an >> > > @XmlSeeAlso >> > > annotation on the SEI that points to the OjbectFactory for that schema. >> > > That SHOULD make it more or less just work. Can you check to see if >> the >> > > XmlSeeAlso is there? >> > > >> > > If it IS a DOM, you can always do something along the lines of: >> > > >> > > >> > > >> JAXBContext.newContext(SubjectsDS.class).createUnmarshaller().unmarshall( >> > > dom, SubjectsDS.class); >> > > >> > > >> > > >> > > Dan >> > > >> > > On Wednesday 13 October 2010 4:02:56 pm Jeffrey Rodgers wrote: >> > > > Benson, >> > > > >> > > > Thanks for the help and back/forth- >> > > > >> > > > I'm pretty sure CXF does know the schema though, no? Part of the >> WSDL >> > > >> > > has >> > > >> > > > a schema import for that particular s:any namespace in the form of: >> > > > <s:import namespace="http://tempuri.org/SubjectsDS.xsd"/> >> > > > <s:import schemaLocation=" >> > > > >> > > > http://localhost:9999/Srv.asmx?schema=SubjectsDS" namespace=" >> > > > http://tempuri.org/SubjectsDS.xsd"/> >> > > > >> > > > The schema for that particular object is gigantic, since the owners >> of >> > > >> > > that >> > > >> > > > web service decided to put everything into a single table back on the >> > > > DS. It's essentially dozens of ints, strings, a couple timestamps, >> and >> > > > some binary data. CXF's wsdl2java code generation did in fact >> > > > generate a >> > > >> > > fully >> > > >> > > > featured SubjectsDS to at least contain the schema (equally bloated >> but >> > > >> > > it >> > > >> > > > is what it is) too. >> > > > >> > > > I guess at the most basic level, what's the preferred way to actually >> > > > access the XML inside that any? I can likely make the translation >> and >> > > > mapping myself, but I can't seem to bust into that abstract object. >> > > > >> > > > Jeff >> > > > >> > > > On Wed, Oct 13, 2010 at 3:52 PM, Benson Margulies >> > > >> > > <[email protected]>wrote: >> > > > > The 'any' means that Microsoft knows the structure of this data but >> > > > > isn't telling us. Since it isn't telling us, we can't do anything >> > > > > about it. You could ask them what's up with the 'any':-) >> > > > > >> > > > > If you could come up with your own XML schema for what shows up in >> > > > > there, I could offer some suggestions for how to use it. >> > > > > >> > > > > On Wed, Oct 13, 2010 at 3:50 PM, Jeffrey Rodgers >> > > > > <[email protected]> >> > > > > >> > > > > wrote: >> > > > > > Benson, >> > > > > > >> > > > > > Yes, that was my suspicion - the xs:any is in fact part of the >> > > > > > WSDL. >> > > >> > > I >> > > >> > > > > > can't seem to crack the nut on how to use that any property or >> the >> > > > > > getAny accessor to unmarshall back to the generated java >> equivalent >> > > >> > > of >> > > >> > > > > > my .NET >> > > > > >> > > > > DS >> > > > > >> > > > > > (essentially a couple pages of public properties in >> > > > > > SubjectsDS.java) >> > > > > > >> > > > > > The WSDL for that particular section: >> > > > > > <s:element name="GetLatestSubjectsDSResponse"> >> > > > > > >> > > > > > <s:complexType> >> > > > > > >> > > > > > <s:sequence> >> > > > > > >> > > > > > <s:element minOccurs="0" maxOccurs="1" >> > > > > > >> > > > > > name="GetLatestSubjectsDSResult"> >> > > > > > >> > > > > > <s:complexType> >> > > > > > >> > > > > > <s:sequence> >> > > > > > >> > > > > > <s:any >> > > > > > namespace="http://tempuri.org/SubjectsDS.xsd >> > > >> > > "/> >> > > >> > > > > > </s:sequence> >> > > > > > >> > > > > > </s:complexType> >> > > > > > >> > > > > > </s:element> >> > > > > > >> > > > > > </s:sequence> >> > > > > > >> > > > > > </s:complexType> >> > > > > > >> > > > > > </s:element> >> > > > > > >> > > > > > Thanks, >> > > > > > Jeffrey >> > > > > > >> > > > > > On Wed, Oct 13, 2010 at 3:41 PM, Benson Margulies >> > > > > > <[email protected] >> > > > > > >> > > > > >wrote: >> > > > > >> Jefferson, >> > > > > >> >> > > > > >> It sounds as if the XML Schema in the WSDL uses an xs:any >> > > > > >> particle, and that .NET has magic ways of turning this into a >> DS. >> > > > > >> >> > > > > >> All CXF can do with an 'any', by default, is give you the XML >> DOM >> > > >> > > for >> > > >> > > > > >> whatever arrives. >> > > > > >> >> > > > > >> In the data bindings, you can add custom handling, or you can >> work >> > > > > >> with the DOM object. >> > > > > >> >> > > > > >> Please have a look at the schema and see if I'm right about the >> > > >> > > 'any'. >> > > >> > > > > >> --benson >> > > > > >> >> > > > > >> >> > > > > >> On Wed, Oct 13, 2010 at 2:29 PM, Jeffrey Rodgers < >> > > >> > > [email protected]> >> > > >> > > > > >> wrote: >> > > > > >> > Hello, >> > > > > >> > >> > > > > >> > I've used the wsdl2java application to generate the following >> > > > > >> > classes >> > > > > >> > > > > for >> > > > > >> > > > > >> my >> > > > > >> >> > > > > >> > particular WSDL: >> > > > > >> > >> > > > > >> > GetLatestSubjectsDS.java >> > > > > >> > GetLatestSubjectsDSResponse.java >> > > > > >> > Init.java >> > > > > >> > InitResponse.java >> > > > > >> > ObjectFactory.java >> > > > > >> > package-info.java >> > > > > >> > SaveSubject.java >> > > > > >> > SaveSubjectResponse.java >> > > > > >> > SrvSoap.java >> > > > > >> > Srv.java >> > > > > >> > SrvSoap_SrvSoap_Client.java >> > > > > >> > SrvSoap_SrvSoap12_Client.java >> > > > > >> > SubjectsDS.java >> > > > > >> > >> > > > > >> > Which I then pulled into Eclipse for usage. The most basic >> > > > > >> > basic web service calls are working as expected, but I am >> > > > > >> > having difficulties >> > > > > >> > > > > using >> > > > > >> > > > > >> > our GetLatestSubjects web service call which should a set of >> > > > > >> > > > > "Subjects" >> > > > > >> > > > > >> data >> > > > > >> >> > > > > >> > to the client, in which I would ideally unmarshalling into a >> > > > > >> > > > > SubjectsDS >> > > > > >> > > > > >> > object. We treat this as a dataset in .NET but I understand >> > > > > >> > that >> > > > > >> > > > > won't >> > > > > >> > > > > >> be >> > > > > >> >> > > > > >> > happening here. Within SubjectsDS is a multitude of >> properties >> > > > > >> > (more >> > > > > >> >> > > > > >> than a >> > > > > >> >> > > > > >> > dozen). >> > > > > >> > >> > > > > >> > As far as I can tell, the only accessors that I can play with >> in >> > > >> > > the >> > > >> > > > > >> > GetLatestSubjectsDSResponse is an "any" property which looks >> > > > > >> > like >> > > >> > > a >> > > >> > > > > >> > DOM-esque object in the debugger (as expected given the web >> > > > > >> > service's origin). I'm unsure what to do with this from here, >> > > > > >> > but more >> > > > > >> > > > > importantly >> > > > > >> > > > > >> > may fear that I'm going about this in a wrong way given my >> > > > > >> > > > > inexperience >> > > > > >> > > > > >> with >> > > > > >> >> > > > > >> > CXF. >> > > > > >> > >> > > > > >> > Thanks in advance, >> > > > > >> > Jefferson >> > > >> > > -- >> > > Daniel Kulp >> > > [email protected] >> > > http://dankulp.com/blog >> >> -- >> Daniel Kulp >> [email protected] >> http://dankulp.com/blog >> >
