/* | |
* Copyright 2003-2004 The Apache Software Foundation. | |
// (c) Copyright IBM Corp. 2004, 2005 All Rights Reserved | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/ | |
#ifndef IWRAPPERSOAPSERIALIZER_INCLUDED | |
#define IWRAPPERSOAPSERIALIZER_INCLUDED | |
/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */ | |
/* NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE */ | |
/* ---------------------------------------------------------------- */ | |
/* THIS HEADER FILE PATTERNED AFTER CORRESPONDING hpp HEADER FILE. */ | |
/* CHANGES TO hpp HEADER FILE MAY NEED TO BE PROPAGATED HERE AND IN */ | |
/* THE IMPLEMEMTATION OF THE C APIS. */ | |
/* ---------------------------------------------------------------- */ | |
/* NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE */ | |
/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */ | |
#ifdef __cplusplus | |
extern "C" { | |
#endif | |
/** | |
* @file IWrapperSoapSerializer.hpp | |
*/ | |
#include <axis/AxisUserAPI.h> | |
#include <axis/TypeMapping.h> | |
#include <axis/WSDDDefines.h> | |
#include <axis/ISoapAttachment.h> | |
#include <stdarg.h> | |
/** | |
* @class IWrapperSoapSerializer | |
* @brief interface for the IWrapperSoapSerializer class. | |
* | |
* | |
* | |
*/ | |
/** | |
* Destructor | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
void axiscSoapSerializerDestroy(AXISCHANDLE wrapperSoapSerializer); | |
/** | |
* Create new SOAP method, ie the first nested element within a SOAP Body. | |
* | |
* @param sLocalName local name of the method | |
* @param sURI namespace URI of the method | |
* @return status | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
int axiscSoapSerializerCreateSoapMethod(AXISCHANDLE wrapperSoapSerializer, const AxiscChar * sLocalName, | |
const AxiscChar * sURI); | |
/** | |
* Create a new SOAP Fault within the SOAP Body. | |
* | |
* This creates a SOAP Fault with no detail element, this can be added later | |
* using: | |
* | |
* IWrapperSoapSerializer::addFaultDetail(const AxisChar*) for character detail, or | |
* | |
* IWrapperSoapSerializer::addFaultDetail(void*, void*, void*, const AxisChar*, const AxisChar*) for complex detail | |
* | |
* @param sLocalName local name for the SOAP Fault. | |
* @param sURI namespace URI for the SOAP Fault. | |
* @param sFaultCode fault code for the SOAP Fault. | |
* @param sFaultString fault string for the SOAP Fault. | |
* @return status | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
int axiscSoapSerializerCreateSoapFault(AXISCHANDLE wrapperSoapSerializer, const AxiscChar * sLocalName, | |
const AxiscChar * sURI, | |
const AxiscChar * sFaultCode, | |
const AxiscChar * sFaultString); | |
/** | |
* Returns the corrosponding namespace prefix. This method is | |
* called when the caller also wants to know whether this is a new | |
* namespace or not as appose to its overloaded other member. | |
* @param pNamespace The namespace. | |
* @param blnIsNewPrefix The boolean which behaves as | |
* an out parameter to indicate whether this is a new namespace or not. | |
* @return The corrosponding prefix. | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
const AxiscChar * axiscSoapSerializerGetNamespacePrefix(AXISCHANDLE wrapperSoapSerializer, const AxiscChar * pNamespace, | |
AxiscBool * blnIsNewPrefix); | |
/** | |
* Remove the prefix for specified namespace. | |
* @param pNamespace namespace URI for which the corresponding prefix will be removed. | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
void axiscSoapSerializerRemoveNamespacePrefix(AXISCHANDLE wrapperSoapSerializer, const AxiscChar * pNamespace); | |
/** | |
* Add a basic element, ie a SOAP element containing an XSD simple type, | |
* to outgoing SOAP message. | |
* | |
* This method would normally be used in client stubs or service wrappers. | |
* | |
* See AxisUserAPI.hpp for full list of XSD built-in simple types. | |
* | |
* @param pchName local name for SOAP element. | |
* @param pValue value for element data. | |
* @param type XSD type of data. | |
* @return status | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
int axiscSoapSerializerAddOutputParam(AXISCHANDLE wrapperSoapSerializer, const AxiscChar * pchName, | |
void * pValue, | |
AXISC_XSDTYPE type); | |
/** | |
* Add an array of complex type to the outgoing SOAP message. | |
* | |
* This method would normally be used in client stubs or service wrappers. | |
* | |
* @param pArray Axis_Array containing complex type elements. | |
* @param pSZFunct function pointer to complex type serialize method. | |
* @param pDelFunct function pointer to complex type delete method. | |
* @param pName local name for array elements. | |
* @param pNamespace namespace URI for array elements. | |
* @return status | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
int axiscSoapSerializerAddOutputCmplxArrayParam(AXISCHANDLE wrapperSoapSerializer, const Axisc_Array * pArray, | |
void * pSZFunct, | |
void * pDelFunct, | |
const AxiscChar * pName, | |
const AxiscChar * pNamespace); | |
/** | |
* Add an array of basic type to outgoing SOAP message. | |
* | |
* See AxisUserAPI.hpp for full list of XSD built-in simple types. | |
* | |
* This method would normally be used in client stubs or service wrappers. | |
* | |
* @param pArray Axis_Array containing basic type elements. | |
* @param nType XSD type for data. | |
* @param pName local name for array elements. | |
* @return status | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
int axiscSoapSerializerAddOutputBasicArrayParam(AXISCHANDLE wrapperSoapSerializer, const Axisc_Array * pArray, | |
AXISC_XSDTYPE nType, | |
const AxiscChar * pName); | |
/** | |
* Add a complex type element to the outgoing SOAP message. | |
* | |
* This method would normally be used in client stubs or service wrappers. | |
* | |
* @param pObject complex type object. | |
* @param pSZFunct function pointer to complex type serialize method. | |
* @param pDelFunct function pointer to complex type delete method. | |
* @param pName local name for complex type element. | |
* @param pNamespace namespace URI for complex type element. | |
* @return status | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
int axiscSoapSerializerAddOutputCmplxParam(AXISCHANDLE wrapperSoapSerializer, void * pObject, | |
void * pSZFunct, | |
void * pDelFunct, | |
const AxiscChar * pName, | |
const AxiscChar * pNamespace); | |
/** | |
* Use this method to add complex detail to a SOAP Fault. | |
* | |
* The SOAP fault must be created before using this method, by using: | |
* IWrapperSoapSerializer::createSoapFault(const AxisChar*, const AxisChar*, const AxisChar*, const AxisChar*) | |
* | |
* This method would normally be used in client stubs or service wrappers. | |
* | |
* @param pObject complex detail object. | |
* @param pSZFunct function pointer to serialize method. | |
* @param pDelFunct function pointer to delete method. | |
* @param pName local name for detail element | |
* @param pNamespace namespace URI for detail element. | |
* @return status | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
int axiscSoapSerializerAddFaultDetail(AXISCHANDLE wrapperSoapSerializer, void * pObject, | |
void * pSZFunct, | |
void * pDelFunct, | |
const AxiscChar * pName, | |
const AxiscChar * pNamespace); | |
/** | |
* Serialize an array of complex type to the outgoing SOAP message. | |
* | |
* This method would normally be used by the serialize methods in complex types. | |
* | |
* @param pArray Axis_Array containing complex type elements. | |
* @param pSZFunct function pointer to complex type serialize method. | |
* @param pDelFunct function pointer to complex type delete method. | |
* @param pName local name for array elements. | |
* @param pNamespace namespace URI for array elements. | |
* @return status | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
int axiscSoapSerializerSerializeCmplxArray(AXISCHANDLE wrapperSoapSerializer, const Axisc_Array * pArray, | |
void * pSZFunct, | |
void * pDelFunct, | |
const AxiscChar * pName, | |
const AxiscChar * pNamespace); | |
/** | |
* Serialize an array of basic type to outgoing SOAP message. | |
* | |
* See AxisUserAPI.hpp for full list of XSD built-in simple types. | |
* | |
* This method would normally be used by the serialize methods in complex types. | |
* | |
* @param pArray Axis_Array containing basic type elements. | |
* @param pNamespace namespace URI for array elements. | |
* @param nType XSD type for data. | |
* @param pName local name for array elements. | |
* @return status | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
int axiscSoapSerializerSerializeBasicArray(AXISCHANDLE wrapperSoapSerializer, const Axisc_Array * pArray, | |
const AxiscChar * pNamespace, | |
AXISC_XSDTYPE nType, | |
const AxiscChar * pName); | |
/** | |
* Serialize a basic element, ie a SOAP element containing an XSD simple type, | |
* to outgoing SOAP message. | |
* | |
* This method would normally be used by the serialize methods in complex types. | |
* | |
* See AxisUserAPI.hpp for full list of XSD built-in simple types. | |
* | |
* @param sName local name for SOAP element. | |
* @param pNamespace namespace URI for SOAP element | |
* @param pValue value for element data. | |
* @param type XSD type of data. | |
* @return status | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
int axiscSoapSerializerSerializeAsElement(AXISCHANDLE wrapperSoapSerializer, const AxiscChar * sName, | |
const AxiscChar * pNamespace, | |
void * pValue, | |
AXISC_XSDTYPE type); | |
/** | |
* Serialize aa attribute to outgoing SOAP message. | |
* | |
* This method would normally be used by the serialize methods in complex types. | |
* | |
* See AxisUserAPI.hpp for full list of XSD built-in simple types. | |
* | |
* @param sName local name for SOAP attribute. | |
* @param pNamespace namespace URI for SOAP attribute. | |
* @param pValue value for attribute data. | |
* @param type XSD type of data. | |
* @return status | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
int axiscSoapSerializerSerializeAsAttribute(AXISCHANDLE wrapperSoapSerializer, const AxiscChar * sName, | |
const AxiscChar * pNamespace, | |
void * pValue, | |
AXISC_XSDTYPE type); | |
/** | |
* Serialize strings. All arguments must be strings (char *). | |
* The final argument must be NULL. | |
* | |
* The strings will be serialized "as-is", no validation will take place. | |
* | |
* @param pFirst first string to be serialized. | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
void axiscSoapSerializerSerialize(AXISCHANDLE wrapperSoapSerializer, const char * pFirst, | |
... ); | |
/** | |
* Serialize start element tag for complex type. | |
* This is only used for rpc/encoded style web services. | |
* | |
* @param pName local name of element. | |
* @param pNamespace namespace URI of element. | |
* @param pPrefix prefix to be used with namespace URI. | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
void axiscSoapSerializerSerializeStartElementOfType(AXISCHANDLE wrapperSoapSerializer, const AxiscChar * pName, | |
const AxiscChar * pNamespace, | |
const AxiscChar * pPrefix); | |
/** | |
* Serialize end element tag for complex type. | |
* This is only used for rpc/encoded style web services. | |
* | |
* @param pName local name of element. | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
void axiscSoapSerializerSerializeEndElementOfType(AXISCHANDLE wrapperSoapSerializer, const AxiscChar * pName); | |
/** | |
* Get and return the current provider type being used by the SOAP Serializer. | |
* | |
* @return provider type. | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
AXISC_PROVIDERTYPE axiscSoapSerializerGetCurrentProviderType(AXISCHANDLE wrapperSoapSerializer); | |
/** | |
* Set the current provider type to be used by the SOAP serializer. | |
* | |
* @param nType provider type to be used. | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
void axiscSoapSerializerSetCurrentProviderType(AXISCHANDLE wrapperSoapSerializer, AXISC_PROVIDERTYPE nType); | |
/** | |
* Add an AnyType object to the outgoing SOAP message. | |
* | |
* This method would normally be used in client stubs or service wrappers. | |
* | |
* @param pAnyObject an AnyType object containing valid XML. | |
* @return status. | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
int axiscSoapSerializerAddOutputAnyObject(AXISCHANDLE wrapperSoapSerializer, AxiscAnyType * pAnyObject); | |
/** | |
* Serialize an AnyType object to the outgoing SOAP message. | |
* | |
* This method would normally be used by the serialize methods in complex types. | |
* | |
* @param pAnyObject an AnyType object containing valid XML. | |
* @return status. | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
int axiscSoapSerializerSerializeAnyObject(AXISCHANDLE wrapperSoapSerializer, AxiscAnyType * pAnyObject); | |
/** | |
* Serialize an XML simple type. Care must be taken to ensure this is correctly | |
* placed within an element or attribute. | |
* | |
* This method would normally be used by the serialize methods in complex types. | |
* | |
* @param pValue value to be serialized. | |
* @param type XSD type of the data. | |
* @return status | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
int axiscSoapSerializerSerializeAsChardata(AXISCHANDLE wrapperSoapSerializer, void * pValue, | |
AXISC_XSDTYPE type); | |
/** | |
* Add an attachment to the outgoing SOAP message. | |
* | |
* This method would normally be used in client stubs or service wrappers. | |
* | |
* @param achId attachment ID. | |
* @param objAttach SOAP attachment. | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
void axiscSoapSerializerAddAttachment(AXISCHANDLE wrapperSoapSerializer, const AxiscChar * achId, | |
AXISCHANDLE objAttach); | |
/** | |
* Add attachments to the outgoing SOAP message. | |
* | |
* This method would normally be used in client stubs or service wrappers. | |
* | |
* @param pAttach array of ISoapAttachment | |
* @param iAttchArraySize number of attachments to be added. | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
void axiscSoapSerializerAddAttachments(AXISCHANDLE wrapperSoapSerializer, AXISCHANDLE pAttach, | |
int iAttchArraySize); | |
/** | |
* Add attachment body to the outgoing SOAP message. | |
* If an attachment already exists for the given ID the body will be added to it, | |
* otherwise a new attachment will be created. | |
* | |
* This method would normally be used in client stubs or service wrappers. | |
* | |
* @param achId attachment ID. | |
* @param pAttchBody body for SOAP attachment. | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
void axiscSoapSerializerAddAttachmentBody(AXISCHANDLE wrapperSoapSerializer, const AxiscChar * achId, | |
xsdc__base64Binary * pAttchBody); | |
/** | |
* Add attachment header to the outgoing SOAP message. | |
* If an attachment already exists for the given ID the header will be added to it, | |
* otherwise a new attachement will be created. | |
* | |
* This method would normally be used in client stubs or service wrappers. | |
* | |
* @param achId attachment ID. | |
* @param achHeaderName attachment header name. | |
* @param achHeaderValue attachment header value. | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
void axiscSoapSerializerAddAttachmentHeader(AXISCHANDLE wrapperSoapSerializer, const AxiscChar * achId, | |
const AxiscChar * achHeaderName, | |
const AxiscChar * achHeaderValue); | |
/** | |
* 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 | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
AXISCHANDLE axiscSoapSerializerCreateSoapAttachment(AXISCHANDLE wrapperSoapSerializer); | |
/** | |
* This method will clear up all the current out params in preparation of a | |
* new method call | |
*/ | |
AXISC_STORAGE_CLASS_INFO | |
void axiscSoapSerializerReset(AXISCHANDLE wrapperSoapSerializer); | |
#ifdef __cplusplus | |
} | |
#endif | |
#endif /* IWRAPPERSOAPSERIALIZER_INCLUDED */ |