Hi,
I am using a WSDL file supplied to be by a third party and I suspect it
doesn't quite reflect what their .NET server is returning in the SOAP
messages. I am getting this exception:
java.io.IOException: Non nillable element 'requestCategoryCode' is null.
at
org.apache.axis.encoding.ser.BeanSerializer.serialize(BeanSerializer.
java:215)
at
org.apache.axis.encoding.SerializationContext.serializeActual(Seriali
zationContext.java:1426)
at
org.apache.axis.encoding.SerializationContext.serialize(Serialization
Context.java:914)
at
org.apache.axis.encoding.SerializationContext.serialize(Serialization
Context.java:702)
at
org.apache.axis.encoding.ser.BeanSerializer.serialize(BeanSerializer.
java:230)
at
org.apache.axis.encoding.SerializationContext.serializeActual(Seriali
zationContext.java:1426)
at
org.apache.axis.encoding.SerializationContext.serialize(Serialization
Context.java:914)
So looking at (an extract of) the XML received by Axis:
<AdministrationDetails><ComplaintTypeCode>PESTM</ComplaintTypeCode><Com
plaintTypeText>Mice</ComplaintTypeText><AllocatedToCode>CRMTES</AllocatedToCode>
<AllocatedToText>CRM Test
Officer</AllocatedToText><HowReceivedCode>CC</HowRecei
vedCode><HowReceivedText>Call
Centre</HowReceivedText><TimeReceived>2005-08-04T0
6:52:03.0000000+01:00</TimeReceived><StatusCode>REC</StatusCode><StatusText>Rece
ived</StatusText><AreaTeamCode>E</AreaTeamCode><AreaTeamText>Eastern Area
Team</
AreaTeamText></AdministrationDetails>
And here's the relevant part of the WSDL:
<xs:complexType name="AdministrationDetailsType">
<xs:annotation>
<xs:documentation>Contains details of status,
allocated officer
codes etc</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="ComplaintTypeCode"
type="uni:CNCODE_CodeValue">
<xs:annotation>
<xs:documentation>Code
value for complaint
type</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ComplaintTypeText"
type="uni:CNCODE_TextValue">
<xs:annotation>
<xs:documentation>Full text of complaint type - read
only</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="RequestCategoryCode"
type="uni:CNCODE_CodeValue">
<xs:annotation>
<xs:documentation>complaint type category code if set
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="AllocatedToCode" type="uni:CNCODE_CodeValue">
<xs:annotation>
<xs:documentation>Officer code for
allocated officer</xs:documenta
tion>
</xs:annotation>
</xs:element>
<xs:element name="AllocatedToText"
type="uni:CNCODE_TextValue">
<xs:annotation>
<xs:documentation>Full name of allocated
officer</xs:documentation
>
</xs:annotation>
</xs:element>
<xs:element name="TimeAllocated"
type="xs:dateTime" minOccurs="0">
<xs:annotation>
<xs:documentation>The date and time the request
was allocated to a
n officer to investigate</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="HowReceivedCode"
type="uni:CNCODE_CodeValue">
<xs:annotation>
<xs:documentation>Code value indicating how the
complaint was rece
ived</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="HowReceivedText"
type="uni:CNCODE_TextValue">
<xs:annotation>
<xs:documentation>Full description of how received
code</xs:docume
ntation>
</xs:annotation>
</xs:element>
(etc.)
It would seem to me that this change needs to be made:
<xs:element name="RequestCategoryCode" type="uni:CNCODE_CodeValue"
minOccurs="0" nillable="true">
As the .NET server has not sent back a RequestCategoryCode element.
Does this sound correct?
Thanks,
John