You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Dorner Thomas <th...@edmb.debis.com> on 2004/07/21 13:42:33 UTC

Help please - Complex Types

Hello,

this is my second post for this problem - unfortunately no one can help me!?

My Problem is:
I send a HashMap from a WebService-Client to my WebService - no Problem so
far.
The WSDL for the HashMap looks like this:

<schema elementFormDefault="qualified"
targetNamespace="http://xml.apache.org/xml-soap"
xmlns="http://www.w3.org/2001/XMLSchema">
	<complexType name="mapItem">
		<sequence>
			<element name="key" nillable="true"
type="xsd:anyType" /> 
			<element name="value" nillable="true"
type="xsd:anyType" /> 
		</sequence>
	</complexType>
	<complexType name="Map">
		<sequence>
			<element maxOccurs="unbounded" minOccurs="0"
name="item" type="apachesoap:mapItem" /> 
		</sequence>
	</complexType>
</schema>

Now i can see the value for the HashMap is defined as xsd:anyType, so I can
send everything.

When I now use to send an Array in the HashMap for the value I got some
Error:

<faultcode>soapenv:Server.userException</faultcode>
<faultstring>
org.xml.sax.SAXException: SimpleDeserializer encountered a child element,
which is NOT expected, in something it was trying to deserialize.
</faultstring>

Why this error???
--> the value of the HashMap looks like this:

<item xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns2="http://xml.apache.org/xml-soap" xmlns="">
	<key>kem</key>
	<value>
		<item xsi:type="soapenc:string">teset</item>
            <item xsi:type="soapenc:string">test</item>
      </value>
</item>

So I have more then one item in the value of the HashMap

Okay,on the other hand -  when I send an Array to a Class which was defined
in the wsdl like this:

<element name="isActual">
	<complexType>
		<sequence>
			<element maxOccurs="unbounded"
name="isActualVersionOBIDs" type="xsd:string" /> 
			<element maxOccurs="unbounded" name="isActualKem"
type="xsd:string" /> 
			<element name="isActualLanguageID" type="xsd:string"
/> 
		</sequence>
	</complexType>
</element> 

There is no Problem!
--> Axis know there is a Array coming and deserialize it.

Maybe I had define in my WSDL that the value can hold xsd:anyType with
maxOccurs="unbounded".
I think this defines an Array[] of anyType - in Doc/lit - wrapped style?

Can someone tell me, what the hell I must do to send an Array in my HashMap
without an error when 
Axis want to deserialize the Value?

Some help will be appreciated

Thanks Tomi