Hi John, 
 
We will soon release the  design documentation of WS -Attachment to the mailing 
list. 
 
Regards, 
Rangika and Nithya 
 
 
On Mon, 10 Jan 2005 08:59:55 +0000, John Hawkins wrote 
> Cool, thankyou, 
>  
> Is any of this in the docs anywhere? 
>  
> John Hawkins 
>  
>              Roshan                                                   
>                    Weerasuriya                                        
>                          <[EMAIL PROTECTED]                            
>                To  
>              e.lk>                     Apache AXIS C User List        
>                                              <axis-c- 
> [EMAIL PROTECTED]>,                     09/01/2005 11:36           
> [email protected]                                              
>                                        cc 
>  
>              Please respond to                                      
> Subject               "Apache AXIS C           Re: SoapSerializer  
> was modified to                  User List"             support  
> attachments. 
>  
> hi John, 
>  
> >I'm a little confused as to the relationship between a soap attachment, 
> > body and header. How come the IWrapperSoapSerializer has setters for all 
> > three but there are only interfaces for the attachment. how do I create a 
> > body or header - we have methods for creating an attachment but not the 
> > others? What does a body or header look like? can it be anything etc. 
> etc. 
> > Some doc in the code might be good here? 
> > 
>  
> The following is the structure. 
>  
> A soap attachment which we receives (or sends) in a MIME message  
> will have the Mime Headers and the Mime Body. So as a whole (both  
> MIME headers and the body) it represents the SOAP Attachement. So  
> there is a class called SoapAttachment  
> (src/soap/SoapAttachment.hpp/cpp) as a placeholder for a attachment. 
>  
> //-----SoapAttachment class----- 
> class SoapAttachment 
> { 
> private: 
>         SoapAttachementHeaders* m_AttachementHeaders; 
>         xsd__base64Binary* m_AttachementBody; 
> public: 
>  
>         void serialize(SoapSerializer& pSZ); 
>         void addBody(xsd__base64Binary* objBody); 
>         void addHeader(AxisString name, AxisString value); 
>         SoapAttachment(); 
>         virtual ~SoapAttachment(); 
> }; 
> //------------------------------- 
>  
> A user of this class will not have to create a seperate Attachment Headders 
>  
> for example, but can just call the addHeader by passing the  
> HeaderName and HeaderValue. 
>  
> The SoapSerializer is having a map to store objects of above SoapAttachment 
> type. The SoapSerializer also has following new methods: 
>  - void addAttachmentBody(const AxisChar* achId, xsd__base64Binary* 
> pAttchBody); 
>  - void addAttachmentHeader(const AxisChar* achId, const AxisChar* 
> achHeaderName, 
>     const AxisChar* achHeaderValue); 
>  - void addAttachment(AxisString id, SoapAttachment* objAttach); 
>  
> A user of these methods for example a person who calls the 
> addAttachmentHeader 
> don't need to worry abt creting any of the Attachement objects etc. The 
> SoapSerializer will manage that part (i.e if necessory the SoapSerializer 
> creates a SoapAttachment object and puts it its SoapAttachment map).  
> You will realize this if you look at the code of these 3 methods.  
> But if necessory the API also provieds the "addAttachment()" methods  
> which is the last of the above 3, to any one who needs to directly  
> set a SoapAttachment object. 
>  
> Any how the Wrapper class will not be seing the SoapSerializer, but instead 
> it sees the IWrapperSoapSerializer.hpp. So the following API methods 
> are added to the  IWrapperSoapSerializer interface: 
>  
> virtual void addAttachment(const AxisChar* achId, ISoapAttachment* 
> > > objAttach)=0; 
> > > 
> > >  virtual void addAttachmentBody(const AxisChar* achId, 
> > > xsd__base64Binary* pAttchBody)=0; 
> > > 
> > >  virtual void addAttachmentHeader(const AxisChar* achId, const 
> > > AxisChar* achHeaderName, const AxisChar* achHeaderValue)=0; 
>  
> If the user of this interface needs to create a object of SoapAttachment 
> then the following mehods of this interface could be used. 
>  
> /** 
> > >     * creates and returns a SoapAttachment object to the caller of 
> > > this methods. 
> > >  *  The user can use this object and fill in the attachment details. 
> This 
> > >  *  method doesn't add the created SoapAttachment object to the 
> > Serializer. 
> > >  *  The user will have to add this object explictly by calling the 
> > > addAttachment 
> > >  *  method of the IWrapperSoapSerializer interface 
> > >     * 
> > >     */ 
> > >  virtual ISoapAttachment* createSoapAttachement()=0; 
>  
> Here another interface called "ISoapAttachment" is used to avoid static 
> linkage of Axis engine/library code to the web service. 
>  
> With this explanation if you just go through these methods you will get 
> the idea. 
>  
> > What is the memory management model for an attachment? 
> All the attachments are maintained by the SoapSerializer. It will clean 
> the memory for those attahments in its Destructor. 
>  
> Roshan 
>  
> On Fri, 2005-01-07 at 19:06, John Hawkins wrote: 
> > 
> > Hi, 
> > 
> > I'm a little confused as to the relationship between a soap attachment, 
> > body and header. How come the IWrapperSoapSerializer has setters for all 
> > three but there are only interfaces for the attachment. how do I create a 
> > body or header - we have methods for creating an attachment but not the 
> > others? What does a body or header look like? can it be anything etc. 
> etc. 
> > Some doc in the code might be good here? 
> > 
> > And I don't actually understand what an attachment header is (knowing 
> this 
> > might help me understand the above :-) 
> > 
> > What is the memory management model for an attachment? 
> > 
> > cheers for now, 
> > John. 
> > 
> > 
> > John Hawkins 
> > 
> > 
> > 
> > "Rangika Mendis" <[EMAIL PROTECTED]> wrote on 07/01/2005 10:41:07: 
> > 
> > > Hi All, 
> > > 
> > > We added  functionalities to  the serializer to serialize soap 
> > > attachments. The following files were added for that purpose. 
> > > 
> > > 1. SoapAttachmentHeaders 
> > > 2. SoapAttachment 
> > > 
> > > New API  allows to add Soap Attachment objects to the serializer. 
> > > 
> > > The following methods in IWrapperSoapSerializer.hpp can be used  to 
> > > add attachment details to the Serializer. 
> > > 
> > > virtual void addAttachment(const AxisChar* achId, ISoapAttachment* 
> > > objAttach)=0; 
> > > 
> > >  virtual void addAttachmentBody(const AxisChar* achId, 
> > > xsd__base64Binary* pAttchBody)=0; 
> > > 
> > >  virtual void addAttachmentHeader(const AxisChar* achId, const 
> > > AxisChar* achHeaderName, const AxisChar* achHeaderValue)=0; 
> > > 
> > >  /** 
> > >     * creates and returns a SoapAttachment object to the caller of 
> > > this methods. 
> > >  *  The user can use this object and fill in the attachment details. 
> This 
> > >  *  method doesn't add the created SoapAttachment object to the 
> > Serializer. 
> > >  *  The user will have to add this object explictly by calling the 
> > > addAttachment 
> > >  *  method of the IWrapperSoapSerializer interface 
> > >     * 
> > >     */ 
> > >  virtual ISoapAttachment* createSoapAttachement()=0; 
> > > 
> > > These methods will be used by the web service wrapper class. 
> > > 
> > > Any comments on this will be greatly appreciated. 
> > > 
> > > Regards, 
> > > 
> > >  Nithya & Rangika 
> > > 
> > > 
> > 
> > 
 
 
-- 
Lanka Software Foundation (http://www.opensource.lk) 
 

Reply via email to