Stephen Muccione created CXF-4981: ------------------------------------- Summary: wsdl2js failes to generate deserializer for nested complex sequences, but calles the deserialize in the outer type Key: CXF-4981 URL: https://issues.apache.org/jira/browse/CXF-4981 Project: CXF Issue Type: Bug Components: JavaScript Client Affects Versions: 2.7.4 Environment: windows, 2.7.4 released binaries Reporter: Stephen Muccione
When createing a js client where the wsdl has nested complex types, the client code calls a deserializer that is never emitted (the call looks appropriate) The wsdl in question is: <xsi:complexType name="continuousNBData"> <xsi:sequence> <xsi:element name="type" minOccurs="1" maxOccurs="1" type="xsi:unsignedInt"/> <xsi:element name="classId" minOccurs="1" maxOccurs="1" type="xsi:unsignedInt"/> <xsi:element name="active" minOccurs="1" maxOccurs="1" type="xsi:unsignedInt"/> <xsi:element name="frequencyRange" minOccurs="2" maxOccurs="2" type="xsi:unsignedInt"/> <xsi:element name="peakPower" minOccurs="1" maxOccurs="1" type="xsi:int"/> <xsi:element name="peakFrequency" minOccurs="1" maxOccurs="1" type="xsi:unsignedInt"/> <xsi:element name="capacityImpact" minOccurs="1" maxOccurs="1" type="xsi:unsignedInt"/> <xsi:element name="duration" minOccurs="1" maxOccurs="1" type="xsi:unsignedInt"/> <xsi:element name="perMinDuration" minOccurs="15" maxOccurs="15" type="xsi:unsignedInt"/> <xsi:element name="hits" minOccurs="1" maxOccurs="1" type="xsi:unsignedInt"/> <xsi:element name="perMinHits" minOccurs="15" maxOccurs="15" type="xsi:unsignedInt"/> <xsi:element name="stabilityImpact" minOccurs="1" maxOccurs="1"> <xsi:complexType> <xsi:sequence> <xsi:sequence minOccurs="1" maxOccurs="1"> <xsi:element name="CRC" minOccurs="1" maxOccurs="1" type="xsi:unsignedInt"/> </xsi:sequence> <xsi:sequence minOccurs="1" maxOccurs="1"> <xsi:element name="FEC" minOccurs="1" maxOccurs="1" type="xsi:unsignedInt"/> </xsi:sequence> <xsi:sequence minOccurs="1" maxOccurs="1"> <xsi:element name="SES" minOccurs="1" maxOccurs="1" type="xsi:unsignedInt"/> </xsi:sequence> </xsi:sequence> </xsi:complexType> </xsi:element> <xsi:element name="perMinHits" minOccurs="15" maxOccurs="15" type="xsi:unsignedInt"/> <xsi:element name="noisePSD" minOccurs="1" maxOccurs="1"> <xsi:complexType> <xsi:sequence> <xsi:sequence minOccurs="12" maxOccurs="12"> <xsi:element name="avgNoisePSD" minOccurs="1" maxOccurs="1" type="xsi:unsignedInt"/> </xsi:sequence> <xsi:sequence minOccurs="12" maxOccurs="12"> <xsi:element name="maxNoisePSD" minOccurs="1" maxOccurs="1" type="xsi:unsignedInt"/> </xsi:sequence> <xsi:sequence minOccurs="12" maxOccurs="12"> <xsi:element name="minNoisePSD" minOccurs="1" maxOccurs="1" type="xsi:unsignedInt"/> </xsi:sequence> </xsi:sequence> </xsi:complexType> </xsi:element> </xsi:sequence> </xsi:complexType> and the emitted code is: cxfjsutils.trace('curElement: ' + cxfjsutils.traceElementName(curElement)); cxfjsutils.trace('processing stabilityImpact'); var value = null; if (!cxfjsutils.isElementNil(curElement)) { item = XSDI_stabilityImpact_deserialize(cxfjsutils, curElement); } newobject.setStabilityImpact(item); where XSDI_stabilityImpact_deserialize is never emitted: of note, this function naming may well be inappropriate. I have multiple top-level types declared with the same element name (stabilityImpact) as part of a sequence. If a top-level deserializer is emitted, they would have identical names for their embedded element deserializers. A more appropriate name would be: XSDI_continuousNBData_stabilityImpact_deserialize should probably chain the element names up the stack until you reach root-level in order to guarantee uniqueness of names (either that or some other obfuscation mechanism to guarantee uniqueness) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira