chrapchp wrote:
Hello, I cannot get a successful WSDL doc generation from ?WSDL or Java2WSDL when I include complex anonymous types. I cannot modify the WSDL doc since it is driven by a third party spec. What I did was create a simple WSDL doc to try an isolate the problem from which I just perform a WSDL2Java and then Java2WSDL to track the problem. It fails on the Java2WSDL operation. e.g.
writeTypeForPart() + qname={http://www.w3.org/2001/XMLSchema}string writeTypeForPart()com.flashsense.test._PoopsyDataIn writeTypeForPart() + qname={http://test.flashsense.com}_PoopsyDataIn AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException faultSubcode: faultString: java.lang.NullPointerException faultActor: faultNode: faultDetail:
{http://xml.apache.org/axis/}stackTrace:java.lang.NullPointerException at org.apache.axis.wsdl.fromJava.Types.isSimpleType(Types.java:1242) at org.apache.axis.wsdl.fromJava.Types.isAcceptableAsAttribute(Types.java:1260) at org.apache.axis.encoding.ser.BeanSerializer.writeAttribute(BeanSerializer.ja va:476) at org.apache.axis.encoding.ser.BeanSerializer.writeSchema(BeanSerializer.java: 386) at org.apache.axis.wsdl.fromJava.Types.makeTypeElement(Types.java:1707) at org.apache.axis.wsdl.fromJava.Types.writeTypeForPart(Types.java:429) at org.apache.axis.wsdl.fromJava.Emitter.writePartToMessage(Emitter.java:1700) at org.apache.axis.wsdl.fromJava.Emitter.writeRequestMessage(Emitter.java:1394) at org.apache.axis.wsdl.fromJava.Emitter.writeMessages(Emitter.java:1086) at org.apache.axis.wsdl.fromJava.Emitter.writePortType(Emitter.java:1057) at org.apache.axis.wsdl.fromJava.Emitter.getWSDL(Emitter.java:495) at org.apache.axis.wsdl.fromJava.Emitter.emit(Emitter.java:346) at org.apache.axis.wsdl.fromJava.Emitter.emit(Emitter.java:441) at org.apache.axis.wsdl.Java2WSDL.run(Java2WSDL.java:622) at org.apache.axis.wsdl.Java2WSDL.main(Java2WSDL.java:668)
I read in earlier posts from which there were no replies to the error "Caused by: makeTypeElement() was told to create a type "{http://test.flashsense.com}>PoopsyDataIn", with no containing element" I get that too, but I see the code is invoking writeTypeForPart() with a null for the Element parameter. Should createElementWithAnonymousType() be invoked somewhere? Am I missing something? Any suggestions would be appreciated.
Frustratingly yours, pjc
A fragment of the WSDL is as follows:
<?xml version="1.0" encoding="utf-8" ?> - <wsdl:definitions name="eek" targetNamespace="urn:DunceService" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="urn:DunceService" xmlns:intf="urn:DunceService" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <wsdl:documentation /> - <wsdl:types> - <xsd:schema targetNamespace="http://test.flashsense.com" xmlns:tns="http://test.flashsense.com"> - <xsd:element name="PoopsyDataIn"> - <xsd:complexType> <xsd:attribute name="arg1" type="xsd:string" /> <xsd:attribute name="arg2" type="xsd:double" /> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> - <!-- WSDL created by Apache Axis version: 1.2alpha Built on Dec 09, 2003 (01:04:27 MST)
--> - <wsdl:message name="upperStringRequest"> <wsdl:part name="aString" type="xsd:string" /> </wsdl:message> - <wsdl:message name="doubleNumberRequest"> <wsdl:part name="aNum" type="xsd:int" /> </wsdl:message> - <wsdl:message name="doubleNumberResponse"> <wsdl:part name="doubleNumberReturn" type="xsd:int" /> </wsdl:message> - <wsdl:message name="upperStringResponse"> <wsdl:part name="upperStringReturn" type="xsd:string" /> </wsdl:message> - <wsdl:message name="poopsyRequest"> <wsdl:part element="tns:PoopsyDataIn" name="poopsyIn" xmlns:tns="http://test.flashsense.com" /> </wsdl:message> - <wsdl:message name="PoopsyResponse"> <wsdl:part name="out" type="xsd:string" /> </wsdl:message> - <wsdl:portType name="DunceService"> - <wsdl:operation name="doubleNumber" parameterOrder="aNum"> <wsdl:input message="impl:doubleNumberRequest" name="doubleNumberRequest" /> <wsdl:output message="impl:doubleNumberResponse" name="doubleNumberResponse" /> </wsdl:operation> - <wsdl:operation name="upperString" parameterOrder="aString"> <wsdl:input message="impl:upperStringRequest" name="upperStringRequest" /> <wsdl:output message="impl:upperStringResponse" name="upperStringResponse" /> </wsdl:operation> - <wsdl:operation name="PoopsyService"> <wsdl:input message="impl:poopsyRequest" name="poopsyRequest" /> <wsdl:output message="impl:PoopsyResponse" name="PoopsyResponse" /> </wsdl:operation> </wsdl:portType> ....