axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Eran Chinthaka" <chinth...@opensource.lk>
Subject RE: [Axis2] getBody() method in SOAPEnvelopeImpl
Date Tue, 26 Apr 2005 02:57:20 GMT
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:Ashutosh.Shahi@ca.com] 
Sent: Wednesday, April 13, 2005 3:20 PM
To: axis-dev@ws.apache.org
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



Mime
View raw message