I too feel Option2 is good. But instead of what Ashu was saying to
throw an OMException in case of Body already being present, I would
say we add a warning or debug log info sort of thing and still proceed
with detaching and adding the new body. Eran! is there any standard
out there that can tell us as to whether reassinging of a different
body is acceptable or not? Or we may ask the author of 1.2 version
code where SOAPException is being thrown, if that is the standard
behaviour one is expected to follow.
In fact, in OM when trying to reassign a node to a different parent, I
once noticed similar kind of programming construct being employed. It
then appeared logical to me for some reason I don't exactly remember
now :D

Thanks
Jayachandra

On 4/26/05, Eran Chinthaka <[EMAIL PROTECTED]> wrote:
> Agreed.
> 
> But there is a small catch here. Can someone call detach() method of
> SOAPBody as SOAP messages must always have a body element.
> 
> For me this is a chicken and egg problem. Lets say you have a SOAP Envelope
> with a SOAPBody. Now you need to put a different SOAPBody. How can you do
> this ??
> 
> 1. envelope.getBody().detach();
> envelope.addChild(newSOAPBodyElement);
> 
> 2. envelope.addBody(newSOAPBody);
> 
>    public class SOAPEnvelopeImpl{
>       private SOAPBody soapBody;
> 
>         public void addBody(SOAPBody newSOAPBody){
>                 if(soapBody != null){
>                         soapBody.detach();
>                 }
>                 this.addChild(newSOAPBody);
>                 this.soapBody = newSOAPBody;
>         }
> 
>   }
> 
> So Shahi, what do u think ? Shall we not expose the detach() method of
> SOAPBody and use the option 2 .
> 
> Regards,
> Chinthaka
> 
> ________________________________________
> From: Shahi, Ashutosh [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, April 13, 2005 3:20 PM
> To: [email protected]
> Subject: [Axis2] getBody() method in SOAPEnvelopeImpl
> 
> 
> Hi Eran,
>  In getBody() method of SOAPEnvelopeImpl we do a
> getNextSiblingElement() call on SOAPHeader expecting to get a SOAPBody. But
> the SOAPBody might have already been removed through the detach() method and
> we are not taking care of that. As a result we get a NullPointerException
> from the method. A simple If() test on 'element' to see if it is null should
> solve the issue.
> 
> Thanks,
> Ashutosh
> 
> 


-- 
-- Jaya

Reply via email to