Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members   Examples  

IWrapperSoapSerializer.hpp

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 #if !defined(_IWRAPPERSOAPSERIALIZER_H____OF_AXIS_INCLUDED_)
00018 #define _IWRAPPERSOAPSERIALIZER_H____OF_AXIS_INCLUDED_
00019 
00020 #include "AxisUserAPI.hpp"
00021 #include "TypeMapping.hpp"
00022 #include "WSDDDefines.hpp"
00023 
00024 /*
00025  *  @class IWrapperSoapSerializer
00026  *  @brief interface for the IWrapperSoapSerializer class.
00027  *
00028  *
00029  *  @author Susantha Kumara (skumara@virtusa.com, susantha@opensource.lk)
00030  *  @author Roshan Weerasuriya (roshan@jkcs.slt.lk, roshan@opensource.lk)
00031  *
00032  */
00033 
00034 AXIS_CPP_NAMESPACE_START
00035 
00036 class IWrapperSoapSerializer
00037 {
00038 public:
00039     virtual ~IWrapperSoapSerializer(){};
00040 
00041     virtual int AXISCALL createSoapMethod(const AxisChar* sLocalName, 
00042         const AxisChar* sURI)=0;
00043 
00044     virtual int AXISCALL createSoapFault(const AxisChar* sLocalName, 
00045         const AxisChar* sURI, const AxisChar* sFaultCode,
00046         const AxisChar* sFaultString)=0;
00047 
00048     virtual const AxisChar* AXISCALL getNamespacePrefix
00049         (const AxisChar* pNamespace)=0;
00050 
00051     virtual void AXISCALL removeNamespacePrefix(const AxisChar* pNamespace)=0;
00052 
00053     /* for basic types */
00054     virtual int AXISCALL addOutputParam(const AxisChar* pchName, void* pValue, 
00055         XSDTYPE type)=0;
00056 
00057     /* for arrays */
00058     virtual int AXISCALL addOutputCmplxArrayParam(const Axis_Array* pArray, 
00059         void* pSZFunct, void* pDelFunct, void* pSizeFunct, 
00060         const AxisChar* pName, const AxisChar* pNamespace)=0;
00061 
00062     virtual int AXISCALL addOutputBasicArrayParam(const Axis_Array* pArray, 
00063         XSDTYPE nType, const AxisChar* pName)=0;
00064 
00065     /* for complex types */
00066     virtual int AXISCALL addOutputCmplxParam(void* pObject, void* pSZFunct, 
00067         void* pDelFunct, const AxisChar* pName, const AxisChar* pNamespace) = 0;
00068 
00069     virtual int AXISCALL addFaultDetail(void* pObject, void* pSZFunct,
00070         void* pDelFunct, const AxisChar* pName, const AxisChar* pNamespace) = 0;
00071 
00072     /* Methods used to serialize arrays */
00073     virtual int AXISCALL serializeCmplxArray(const Axis_Array* pArray, 
00074         void* pSZFunct, void* pDelFunct, void* pSizeFunct, 
00075         const AxisChar* pName, const AxisChar* pNamespace)=0;
00076 
00077     virtual int AXISCALL serializeBasicArray
00078         (const Axis_Array* pArray, XSDTYPE nType, const AxisChar* pName)=0;
00079 
00080     /* Basic Type Serializing methods */
00081     virtual int AXISCALL serializeAsElement(const AxisChar* sName, 
00082         void* pValue, XSDTYPE type)=0;
00083 
00084     virtual int AXISCALL serializeAsAttribute(const AxisChar* sName, 
00085         const AxisChar* pNamespace, void* pValue, XSDTYPE type)=0;
00086 
00087     virtual void AXISCALL serialize(const char* pFirst, ...)=0;
00088 
00089     /* 
00090      * following two functions are needed by serializer 
00091      * functions of complex types for RPC style web services 
00092      */
00093     virtual void AXISCALL serializeStartElementOfType(const AxisChar* pName, 
00094         const AxisChar* pNamespace, const AxisChar* pPrefix)=0;
00095 
00096     virtual void AXISCALL serializeEndElementOfType(const AxisChar* pName)=0;
00097 
00098     /* Externalization of serializer API */
00099 
00100     /* Following functions need not be exposed. They are internal to the
00101          * Axis Engine - Commented by Susantha 02/07/2004
00102 
00103     virtual int setOutputStream(SOAPTransport* pStream)=0;
00104 
00105     virtual void markEndOfStream()=0;    
00106 
00107     virtual int init()=0;    
00108 
00109     virtual void setStyle(AXIS_BINDING_STYLE nStyle)=0;
00110 
00111     virtual AXIS_BINDING_STYLE getStyle()=0;
00112     */
00113 
00114     virtual PROVIDERTYPE getCurrentProviderType()=0;
00115 
00116     virtual void setCurrentProviderType(PROVIDERTYPE nType)=0;    
00117 
00118     virtual int addOutputAnyObject(AnyType* pAnyObject)=0;
00119 
00120     virtual int serializeAnyObject(AnyType* pAnyObject)=0;
00121 
00122     virtual int serializeAsChardata(void* pValue, XSDTYPE type)=0;
00123 };
00124 
00125 AXIS_CPP_NAMESPACE_END
00126 
00127 #endif
00128 

Generated on Thu Dec 16 19:43:11 2004 for AxisC++ by doxygen1.2.18