Sarathi Balasundaram
2009-07-24 10:43:00 UTC
Hi
This is my first stab at using Castor...It has been good learning
curve so
far. I am presently stuck with something and would need your help
in
resolving it.
The output xml that I am looking for should be as below
<my-response>
<employee-wrapper>
<manager/>
</employee-wrapper>
<employee-wrapper>
<manager/>
</employee-wrapper>
</my-response>
My mapping looks as below
<class name="MyResponse" auto-complete=
"true">
<map-to xml="my-response"/>
<field name="employees" type="Employee"
collection="array">
<bind-xml auto-naming="deriveByClass" location=
"employee-wrapper" node="element"/>
</field>
</class>
Employee is an abstract class. Manager and Worker are concrete
classes that extend Employee class.
The WSDL definition for employee-wrapper is
<xs:element name="employeeWrapper">
<xs:complexType>
<xs:choice>
<xs:element name="manager" type="Manager"/>
<xs:element name="worker" type="Worker"/>
</xs:choice>
</xs:complexType>
</xs:element>
So, the employeeWrapper can have either manager or worker or both
But the problem that I am facing are of 2 kinds
1. When 2 managers are a part of the employeeWrapper , it fails
with
org.exolab.castor.xml.MarshalException: element "manager" occurs
more than
once.
2. If there is manager and worker, the output is as below which
is different from what I expect.
<my-response>
<employee-wrapper>
<manager/>
<worker/>
</employee-wrapper>
</my-response>
Any help would be appreciated.
thanks
Kind Regards
Sarathi Balasundaram
This is my first stab at using Castor...It has been good learning
curve so
far. I am presently stuck with something and would need your help
in
resolving it.
The output xml that I am looking for should be as below
<my-response>
<employee-wrapper>
<manager/>
</employee-wrapper>
<employee-wrapper>
<manager/>
</employee-wrapper>
</my-response>
My mapping looks as below
<class name="MyResponse" auto-complete=
"true">
<map-to xml="my-response"/>
<field name="employees" type="Employee"
collection="array">
<bind-xml auto-naming="deriveByClass" location=
"employee-wrapper" node="element"/>
</field>
</class>
Employee is an abstract class. Manager and Worker are concrete
classes that extend Employee class.
The WSDL definition for employee-wrapper is
<xs:element name="employeeWrapper">
<xs:complexType>
<xs:choice>
<xs:element name="manager" type="Manager"/>
<xs:element name="worker" type="Worker"/>
</xs:choice>
</xs:complexType>
</xs:element>
So, the employeeWrapper can have either manager or worker or both
But the problem that I am facing are of 2 kinds
1. When 2 managers are a part of the employeeWrapper , it fails
with
org.exolab.castor.xml.MarshalException: element "manager" occurs
more than
once.
2. If there is manager and worker, the output is as below which
is different from what I expect.
<my-response>
<employee-wrapper>
<manager/>
<worker/>
</employee-wrapper>
</my-response>
Any help would be appreciated.
thanks
Kind Regards
Sarathi Balasundaram