00001 /* 00002 * Copyright 2003-2004 The Apache Software Foundation. 00003 * 00004 * Licensed under the Apache License, Version 2.0 (the "License"); 00005 * you may not use this file except in compliance with the License. 00006 * You may obtain a copy of the License at 00007 * 00008 * http://www.apache.org/licenses/LICENSE-2.0 00009 * 00010 * Unless required by applicable law or agreed to in writing, software 00011 * distributed under the License is distributed on an "AS IS" BASIS, 00012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 * See the License for the specific language governing permissions and 00014 * limitations under the License. 00015 */ 00016 00017 00018 #if !defined(_IHANDLERSOAPDESERIALIZER_H____OF_AXIS_INCLUDED_) 00019 #define _IHANDLERSOAPDESERIALIZER_H____OF_AXIS_INCLUDED_ 00020 00021 #include "IWrapperSoapDeSerializer.h" 00022 #include "IHeaderBlock.h" 00023 #include "AxisUserAPI.h" 00024 /* 00025 * @class IHandlerSoapDeSerializer 00026 * @brief interface for the IHandlerSoapDeSerializer class. 00027 * 00028 * 00029 * @author Roshan Weerasuriya (roshan@opensource.lk, roshanw@jkcsworld.com) 00030 */ 00031 00032 /* 00033 * Revision 1.1 2004/06/14 roshan 00034 * Removed virtual int AXISCALL addHeaderBlock(IHeaderBlock* pBlk)=0; method 00035 * from this interface, because a user should not be able to add any thing 00036 * to the DeSerialzer. 00037 */ 00038 00039 #ifdef __cplusplus 00040 00041 class IHandlerSoapDeSerializer : public IWrapperSoapDeSerializer 00042 { 00043 public: 00044 virtual ~IHandlerSoapDeSerializer() {}; 00045 00046 /* 00047 * The soap body may be encrypted/compressed and a 00048 * handler in the request message 00049 * path may decode and then decrypt and/or decompress 00050 * whole soap body and set the 00051 * XML to the Deserializer. In such a case a handler 00052 * will use following functions 00053 * to get soap body and set back the XML. 00054 * If this process goes throgh several 00055 * handlers the intermediate binary data 00056 * (unencrypted/uncompressed body) may be kept 00057 * in the IMessageData until it is converted to XML. 00058 * A handler usually converts it 00059 * to XML and use SetNewSoapBody(..) function to set 00060 * the new SoapBody back to the 00061 * Deserializer. 00062 */ 00063 virtual xsd__hexBinary AXISCALL getBodyAsHexBinary()=0; 00064 virtual xsd__base64Binary AXISCALL getBodyAsBase64Binary()=0; 00065 virtual int AXISCALL setNewSoapBody(AxisChar* pNewSoapBody)=0; 00066 00074 virtual IHeaderBlock* getHeaderBlock(const AxisChar* pName, 00075 const AxisChar* pNamespace) = 0; 00076 }; 00077 00078 #else 00079 00080 typedef struct 00081 { 00082 void* unused; 00083 /* this corresponds to C++ virtual function 00084 * pointer which is ignored in C 00085 */ 00086 void* unused_; 00087 /* this corresponds to IWrapperSoapDeSerializerFunctions pointer */ 00088 IHandlerSoapDeSerializerFunctions* __vfptr; 00089 } IHandlerSoapDeSerializer; 00090 00091 #endif 00092 00093 #endif 00094 00095