00001
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