SOAPRequest.h

00001 // $Id: SOAPRequest.h 21 2010-09-05 04:18:17Z cschwarz1 $
00002 
00003 #ifndef BASE_SOAP_SOAPREQUEST_H
00004 #define BASE_SOAP_SOAPREQUEST_H
00005 
00006 #include <map>
00007 #include <vector>
00008 #if XERCESC_V3
00009     #include <xercesc/dom/DOMLSParser.hpp>
00010 #else
00011     #include <xercesc/dom/DOMBuilder.hpp>
00012 #endif
00013 #include <xercesc/dom/DOMDocument.hpp>
00014 #include <xercesc/dom/DOMElement.hpp>
00015 #include <xercesc/dom/DOMImplementation.hpp>
00016 #include <xercesc/framework/MemBufFormatTarget.hpp>
00017 #include "SOAPAttachment.h"
00018 #include "SOAPException.h"
00019 #include "SOAPStruct.h"
00020 #include "SOAPTranscoder.h"
00021 
00022 namespace base_soap {
00023     class SOAPResponse;
00024 
00026 
00030     class PPBASE_SOAP_EXPORT SOAPRequest: public SOAPStruct {
00031     public:
00033         enum {
00034             contextUnknown = 0,   
00035             contextUser = 1,      
00036             contextSupport = 2,   
00037             contextSystem = 4     
00038         };
00039 
00041 
00044         SOAPRequest(const SOAPRequest &request);
00045 
00047 
00052     #if XERCESC_V3
00053         SOAPRequest(xercesc::DOMImplementation *implementation, xercesc::DOMLSParser *parser, xercesc::DOMDocument *document);
00054     #else
00055         SOAPRequest(xercesc::DOMImplementation *implementation, xercesc::DOMBuilder *parser, xercesc::DOMDocument *document);
00056     #endif
00057 
00059 
00064         SOAPRequest(const base::String &classname, const base::String &method, const base::String &instance = "");
00065 
00067 
00072         SOAPRequest(const base::String &classname, const base::String &method, int instance);
00073 
00075         ~SOAPRequest();
00076 
00078 
00082         void addAttachment(SOAPAttachment *attachment, bool own = false);
00083 
00085 
00088         SOAPResponse *createResponse();
00089 
00091 
00095         SOAPResponse *createResponse(const SOAPException &excp);
00096 
00098 
00103         SOAPAttachment *getAttachment(const base::String &id, bool throwex = true) const;
00104 
00106 
00109         std::vector<SOAPAttachment*> getAttachments() const;
00110 
00112 
00115         base::String getClass() const;
00116 
00118 
00121         int getContext() const;
00122 
00124 
00127         base::String getInstance() const;
00128 
00130 
00133         base::String getMethod() const;
00134 
00136 
00139         base::String getProgram() const;
00140 
00142 
00146         base::String getQName(const base::String &name) const;
00147 
00149 
00152         base::String getRemoteAddr() const;
00153 
00155 
00158         SOAPResponse *getResponse() const;
00159 
00161 
00164         int getUserId() const;
00165 
00167 
00170         base::String getUserName() const;
00171 
00173 
00176         void setClass(const base::String &classname);
00177 
00179 
00182         void setContext(int context);
00183 
00185 
00188         void setInstance(const base::String &instance);
00189 
00191 
00194         void setMethod(const base::String &method);
00195 
00197 
00200         void setProgram(const base::String &program);
00201 
00203 
00206         void setRemoteAddr(const base::String &addr);
00207 
00209 
00212         void setResponse(SOAPResponse *response);
00213 
00215 
00218         void setUserId(int userid);
00219 
00221 
00224         void setUserName(const base::String &username);
00225 
00227 
00230         void toXML(xercesc::MemBufFormatTarget *target) const;
00231 
00233 
00236         base::String toXML() const;
00237 
00238     protected:
00240 
00245         void constructor(const base::String &classname, const base::String &method, const base::String &instance);
00246 
00247         std::vector<SOAPAttachment*>  _attachments;     
00248         xercesc::DOMElement          *_header;          
00249         xercesc::DOMImplementation   *_implementation;  
00250         std::vector<bool>             _own;             
00251     #if XERCESC_V3
00252         xercesc::DOMLSParser         *_parser;          
00253     #else
00254         xercesc::DOMBuilder          *_parser;          
00255     #endif
00256         base::String                  _prefix;          
00257         SOAPResponse                 *_response;        
00258     };
00259 }
00260 
00261 #endif