I should add "unless your xxxxSOAPRequest element is not the top level node in 
your resulting XML".  If that's the case, well, then you're pooched :(

Craig.

On 2011-07-14, at 8:46 AM, Craig Tataryn wrote:

> For mdaoud's problem, he could just define one mapping that has all the 
> properties he'd ever need for that class:
> 
> <class name="com.mycomp.pkg.Class">
>    <map-to xml="firstSOAPRequest"/>
>    <field name="name" type="string">
>        <bind-xml name="Name" node="element"/>
>    </field>
>    <field name="address" type="string">
>        <bind-xml name="Address" node="element"/>
>    </field>
> </class>
> 
> Castor is not going to complain if the payload doesn't contain one of the 
> elements.
> 
> Just prior to marshalling he'd call the .setRootElement("xxxxxSOAPRequest"), 
> where xxxxx would be replaced with "first" or "second" depending on the 
> scenario.  Essentially here you are overriding the "<map-to>" xml attribute 
> value from the mapping.
> 
> mdaoud, you're using Spring OXM right?  This makes things trickier, but I've 
> had to do this myself (and for Unmarshalling to different classes see this 
> JIRA for a scenario when I've had to do that)
> 
> Werner, would a writeup on customizing marshalling/unmarshalling with Spring 
> OXM be a good addition to the docs?  If so I'll add that.
> 
> Craig
> 
> On 2011-07-14, at 7:44 AM, Swindells, Thomas wrote:
> 
>> Have you considered just using two instances of the marshaller, each 
>> configured for each request.
>> If you have control of your soap request you could modify the structure so 
>> that they are structured like so:
>> SoapRequest1() {
>> Data {
>>   String status,
>>   int foo
>> }
>> }
>> 
>> SoapRequest2() {
>> Data { ...}
>> }
>> 
>> Then while your soap requests would be separate classes all they would 
>> contain is a reference to a shared common standard class.
>> 
>> Thomas
>> 
>>> -----Original Message-----
>>> From: mdaoud [mailto:[email protected]]
>>> Sent: 14 July 2011 13:05
>>> To: [email protected]
>>> Subject: Re: [castor-user] Unmarshalling multiple xml to one class
>>> 
>>> 
>>> Hi Werner,
>>> 
>>> Thanks for your declaration. Actually i supplied just the part of the XML 
>>> which
>>> i have problem with (cannot use the same class twice). but i have for the
>>> response (marshalling) something like:
>>> 
>>>    <class name="com.mycomp.pkg.ClassResponse">
>>>        <map-to xml="firstSOAPResponse"/>
>>>        <field name="status">
>>>            <bind-xml name="Status" node="element" type="string"/>
>>>        </field>
>>>    </class>
>>> 
>>> If there is noway to use the same class twice, what other approaches can i
>>> use to (un)marshal my web services request/response?
>>> 
>>> Many thanks for your great help,
>>> 
>>> 
>>> 
>>> Werner Guttmann-6 wrote:
>>>> 
>>>> Hi,
>>>> 
>>>> as already said, XML data binding basically supports two operations:
>>>> 
>>>> * unmarshalling: XML --> object instances
>>>> * marshalling: object instances --> XML
>>>> 
>>>> When you supply a mapping file for Castor XML, you are actually
>>>> supplying enough information so that *both* operations have enough
>>>> information that is *not* ambiguous.
>>>> 
>>>> In your case, the mapping information you provide would be sufficient
>>>> for the unmarshalling side of things, but would be AMBIGUOUS for
>>>> marshalling (see my question below).
>>>> 
>>>> As such, this is currently not supported out of the box.
>>>> 
>>>> Regards
>>>> Werner Guttmann
>>>> 
>>>> On 14.07.2011 11:47, mdaoud wrote:
>>>>> 
>>>>> Hi Werner,
>>>>> 
>>>>> Thank you so much for your help. I am sorry as i am quite newbie to
>>>>> Castor i am bit lost.
>>>>> Basically, Class is just pojo class which has some properties
>>>>> (name,address,age,..) and i have some webservices operation like
>>>>> updateAge which passes the age, and i have updateName which passes
>>>>> the name. So i want to map those 2 requests to Class (as it will be
>>>>> bit trivial building class for every single request!!) Did i miss
>>>>> something??
>>>>> 
>>>>> Thanks,
>>>>> 
>>>>> 
>>>>> Werner Guttmann-6 wrote:
>>>>>> 
>>>>>> HI,
>>>>>> 
>>>>>> this is currently not possible with Castor XML. Whilst on the
>>>>>> unmarshalling side this could be achievable, it would cause complete
>>>>>> chaos on the marshalling side of things. What XML element would you
>>>>>> Castor expect to use when you marshalled an instance of
>>>>>> com.mycomp.pkg.Class".
>>>>>> 
>>>>>> I hope this helps.
>>>>>> 
>>>>>> Kind Regards
>>>>>> Werner Guttmann
>>>>>> 
>>>>>> On 14.07.2011 11:10, mdaoud wrote:
>>>>>>> 
>>>>>>> Hi guys,
>>>>>>> 
>>>>>>> I am quite new to use Castor and i would really appreciate if you
>>>>>>> can guide me to solve my problem.
>>>>>>> Basically, I am integrating Castor with Spring-ws. I would like to
>>>>>>> map multiple xml (SOAP requests) to the same class. when i try to
>>>>>>> define something like the code below, i get an error saying the
>>>>>>> class already in use! any way to solve this?
>>>>>>> 
>>>>>>> <class name="com.mycomp.pkg.Class">
>>>>>>>    <map-to xml="firstSOAPRequest"/>
>>>>>>>    <field name="name" type="string">
>>>>>>>        <bind-xml name="Name" node="element"/>
>>>>>>>    </field>
>>>>>>>    <field name="address" type="string">
>>>>>>>        <bind-xml name="Address" node="element"/>
>>>>>>>    </field>
>>>>>>> </class>
>>>>>>> 
>>>>>>> <class name="com.mycomp.pkg.Class">
>>>>>>>    <map-to xml="secondSOAPRequest"/>
>>>>>>>    <field name="name" type="string">
>>>>>>>        <bind-xml name="Name" node="element"/>
>>>>>>>    </field>
>>>>>>> </class>
>>>>>>> 
>>>>>>> Thanks in advance,
>>>>>> 
>>>>>> --------------------------------------------------------------------
>>>>>> - To unsubscribe from this list, please visit:
>>>>>> 
>>>>>>    http://xircles.codehaus.org/manage_email
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe from this list, please visit:
>>>> 
>>>>    http://xircles.codehaus.org/manage_email
>>>> 
>>>> 
>>>> 
>>>> 
>>> 
>>> --
>>> View this message in context: http://old.nabble.com/Unmarshalling-
>>> multiple-xml-to-one-class-tp32059761p32060631.html
>>> Sent from the Castor - User mailing list archive at Nabble.com.
>>> 
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe from this list, please visit:
>>> 
>>>    http://xircles.codehaus.org/manage_email
>>> 
>> 
>> 
>> 
>> **************************************************************************************
>> This message is confidential and intended only for the addressee. If you 
>> have received this message in error, please immediately notify the 
>> [email protected] and delete it from your system as well as any copies. The 
>> content of e-mails as well as traffic data may be monitored by NDS for 
>> employment and security purposes. To protect the environment please do not 
>> print this e-mail unless necessary.
>> 
>> NDS Limited. Registered Office: One London Road, Staines, Middlesex, TW18 
>> 4EX, United Kingdom. A company registered in England and Wales. Registered 
>> no. 3080780. VAT no. GB 603 8808 40-00
>> **************************************************************************************
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe from this list, please visit:
>> 
>>    http://xircles.codehaus.org/manage_email
>> 
>> 
> 

Reply via email to