You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by sa...@apache.org on 2004/06/09 12:57:34 UTC
cvs commit: ws-axis/c/tests/client/threadSafe/gen_src InteropTestPortType.cpp InteropTestPortType.h SOAPStruct.cpp SOAPStruct.h SOAPStruct_Array.h
samisa 2004/06/09 03:57:34
Added: c/tests/client/threadSafe Client.cpp
c/tests/client/threadSafe/gen_src InteropTestPortType.cpp
InteropTestPortType.h SOAPStruct.cpp SOAPStruct.h
SOAPStruct_Array.h
Log:
test case for thread safety
Revision Changes Path
1.1 ws-axis/c/tests/client/threadSafe/Client.cpp
Index: Client.cpp
===================================================================
// InteropBaseClient.cpp : Defines the entry point for the console application.
//
#include <string>
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
using namespace std;
#include "gen_src/InteropTestPortType.h"
#define ARRAYSIZE 2
#define NUM_THREADS 3
const char *server = "localhost";
const char *port = "8080";
char endpoint[256];
void *
run(void *arg)
{
int x;
char buffer1[100];
//sprintf(endpoint, "http://%s:%s/axis/base", server, port);
//endpoint for Axis Java sample
sprintf(endpoint, "http://%s:%s/axis/services/echo", server, port);
InteropTestPortType *ws;
if (arg == NULL)
ws = new InteropTestPortType(endpoint);
else
ws = (InteropTestPortType *) arg;
printf("invoking echoString...\n");
//testing echoString
string bigstring;
for (int ii = 0; ii < 2; ii++)
{
bigstring += "hello world ";
}
strcpy(buffer1, bigstring.c_str());
printf(ws->echoString(buffer1));
if (0 == strcmp(ws->echoString("hello world"), "hello world"))
printf("successful\n");
else
printf("failed\n");
// testing echoStringArray
xsd__string_Array arrstr;
arrstr.m_Array = new char *[ARRAYSIZE];
arrstr.m_Size = ARRAYSIZE;
sprintf(buffer1, "%dth element of string array", 0);
//sprintf(buffer2, "%dth element of string array", 1);
for (int i = 0; i < ARRAYSIZE; i++)
{
arrstr.m_Array[i] = buffer1;
}
//arrstr.m_Array[1] = buffer2;
printf("invoking echoStringArray...\n");
if (ws->echoStringArray(arrstr).m_Array != NULL)
printf("successful\n");
else
printf("failed\n");
// testing echoInteger
printf("invoking echoInteger...\n");
if (ws->echoInteger(56) == 56)
printf("successful\n");
else
printf("failed\n");
// testing echoIntegerArray
xsd__int_Array arrint;
arrint.m_Array = new int[ARRAYSIZE];
arrint.m_Size = ARRAYSIZE;
for (x = 0; x < ARRAYSIZE; x++)
{
arrint.m_Array[x] = x;
}
printf("invoking echoIntegerArray...\n");
if (ws->echoIntegerArray(arrint).m_Array != NULL)
printf("successful\n");
else
printf("failed\n");
// testing echoFloat
printf("invoking echoFloat...\n");
float fvalue = 1.4214;
if (ws->echoFloat(fvalue) > 1.42)
printf("successful\n");
else
printf("failed\n");
// testing echoFloat
xsd__float_Array arrfloat;
arrfloat.m_Array = new float[ARRAYSIZE];
arrfloat.m_Size = ARRAYSIZE;
for (x = 0; x < ARRAYSIZE; x++)
{
arrfloat.m_Array[x] = 1.1111 * x;
}
printf("invoking echoFloatArray...\n");
if (ws->echoFloatArray(arrfloat).m_Array != NULL)
printf("successful\n");
else
printf("failed\n");
// testing echo Struct
SOAPStruct stct;
stct.varFloat = 12345.7346345;
stct.varInt = 5000;
stct.varString = strdup("This is string in SOAPStruct");
printf("invoking echoStruct...\n");
if (ws->echoStruct(&stct) != NULL)
printf("successful\n");
else
printf("failed\n");
//testing echo Array of Struct
SOAPStruct_Array arrstct;
arrstct.m_Array = new SOAPStruct[ARRAYSIZE];
arrstct.m_Size = ARRAYSIZE;
for (x = 0; x < ARRAYSIZE; x++)
{
arrstct.m_Array[x].varFloat = 1.1111 * x;
arrstct.m_Array[x].varInt = x;
sprintf(buffer1, "varString of %dth element of SOAPStruct array", x);
arrstct.m_Array[x].varString = buffer1;
}
//testing echo Struct Array
printf("invoking echoStructArray...\n");
if (ws->echoStructArray(arrstct).m_Array != NULL)
printf("successful\n");
else
printf("failed\n");
//testing echo void
printf("invoking echoVoid...\n");
ws->echoVoid();
printf("successful\n");
//testing echo base 64 binary
const char *bstr =
"some string that is sent encoded to either base64Binary or hexBinary";
printf("invoking echoBase64...\n");
xsd__base64Binary bb;
bb.__ptr = (unsigned char *) strdup(bstr);
bb.__size = strlen(bstr);
if (bb.__size == ws->echoBase64(bb).__size)
{
printf("successful\n");
printf("Returned String :\n%s\n", bb.__ptr);
}
else
printf("failed\n");
time_t tim;
time(&tim);
tm *lt = gmtime(&tim);
printf("invoking echoDate...\n");
if (memcmp(&ws->echoDate(*lt), lt, sizeof(tm)) == 0)
printf("successful\n");
else
printf("failed\n");
//testing echo hex binary
printf("invoking echoHexBinary...\n");
xsd__hexBinary hb;
hb.__ptr = (unsigned char *) strdup(bstr);
hb.__size = strlen(bstr);
if (hb.__size == ws->echoHexBinary(hb).__size)
{
printf("successful\n");
printf("Returned String :\n%s\n", hb.__ptr);
}
else
printf("failed\n");
//testing echo decimal
printf("invoking echoDecimal...\n");
if (ws->echoDecimal(1234.567890) > 1234.56)
printf("successful\n");
else
printf("failed\n");
//testing echo boolean
printf("invoking echoBoolean...\n");
if (ws->echoBoolean(true_) == true_)
printf("successful\n");
else
printf("failed\n");
return 0;
}
int
main(int argc, char *argv[])
{
if (argc > 2)
{
server = argv[1];
port = argv[2];
}
if (argc > 3)
{
printf("Usage :\n %s <server> <port>\n\n", argv[0]);
printf("Sending Requests to Server http://%s:%s ........\n\n", server,
port);
//sprintf(endpoint, "http://%s:%s/axis/base", server, port);
//endpoint for Axis Java sample
sprintf(endpoint, "http://%s:%s/axis/services/echo", server, port);
InteropTestPortType *ws = new InteropTestPortType(endpoint);
}
pthread_t thread[NUM_THREADS];
pthread_attr_t attr;
int rc, t, status;
/* Initialize and set thread detached attribute */
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
for (t = 0; t < NUM_THREADS; t++)
{
printf("Creating thread %d\n", t);
rc = pthread_create(&thread[t], &attr, run, NULL);
if (rc)
{
printf("ERROR; return code from pthread_create() is %d\n", rc);
exit(-1);
}
}
/* Free attribute and wait for the other threads */
pthread_attr_destroy(&attr);
for (t = 0; t < NUM_THREADS; t++)
{
//rc = pthread_join(thread[t], (void **)&status);
rc = pthread_detach(thread[t]);
if (rc)
{
printf("ERROR return code from pthread_join() is %d\n", rc);
exit(-1);
}
printf("Completed join with thread %d status= %d\n", t, status);
}
pthread_exit(NULL);
}
1.1 ws-axis/c/tests/client/threadSafe/gen_src/InteropTestPortType.cpp
Index: InteropTestPortType.cpp
===================================================================
/*
* This is the Client Stub implementation file genarated by WSDL2Ws tool.
* InteropTestPortType.cpp: implemtation for the InteropTestPortType.
* Default when no parameter passed. When thrown with no parameter
more general InteropTestPortType is assumed.
*
*/
#include "InteropTestPortType.h"
#include <axis/server/AxisWrapperAPI.h>
using namespace std;
bool CallBase::bInitialized;
CallFunctions CallBase::ms_VFtable;
extern int Axis_DeSerialize_SOAPStruct(SOAPStruct* param, IWrapperSoapDeSerializer *pDZ);
extern void* Axis_Create_SOAPStruct(SOAPStruct *Obj, bool bArray = false, int nSize=0);
extern void Axis_Delete_SOAPStruct(SOAPStruct* param, bool bArray = false, int nSize=0);
extern int Axis_Serialize_SOAPStruct(SOAPStruct* param, IWrapperSoapSerializer* pSZ, bool bArray = false);
extern int Axis_GetSize_SOAPStruct();
InteropTestPortType::InteropTestPortType(const char* pchEndpointUri)
:Stub(pchEndpointUri)
{
}
InteropTestPortType::~InteropTestPortType()
{
}
/*Methods corresponding to the web service methods*/
/*
* This method wrap the service method echoString
*/
xsd__string InteropTestPortType::echoString(xsd__string Value0)
{
xsd__string Ret;
char* cFaultcode;
char* cFaultstring;
char* cFaultactor;
char* cFaultdetail;
try
{
if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL))
return Ret;
m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoString");
m_pCall->setSOAPVersion(SOAP_VER_1_1);
m_pCall->setOperation("echoString", "http://soapinterop.org/");
applyUserPreferences();
m_pCall->addParameter((void*)&Value0, "inputString", XSD_STRING);
if (AXIS_SUCCESS == m_pCall->invoke())
{
if(AXIS_SUCCESS == m_pCall->checkMessage("echoStringResponse", "http://soapinterop.org/"))
{
Ret = m_pCall->getElementAsString("return", 0);
}
}
m_pCall->unInitialize();
return Ret;
}
catch(AxisException& e)
{
if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
{
cFaultcode = m_pCall->getElementAsString("faultcode", 0);
cFaultstring = m_pCall->getElementAsString("faultstring", 0);
cFaultactor = m_pCall->getElementAsString("faultactor", 0);
cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
throw AxisException(cFaultdetail);
}
else throw;
}
}
/*
* This method wrap the service method echoStringArray
*/
xsd__string_Array InteropTestPortType::echoStringArray(xsd__string_Array Value0)
{
xsd__string_Array RetArray = {NULL, 0};
char* cFaultcode;
char* cFaultstring;
char* cFaultactor;
char* cFaultdetail;
try
{
if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL))
return RetArray;
m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoStringArray");
m_pCall->setSOAPVersion(SOAP_VER_1_1);
m_pCall->setOperation("echoStringArray", "http://soapinterop.org/");
applyUserPreferences();
m_pCall->addBasicArrayParameter((Axis_Array*)(&Value0), XSD_STRING, "inputStringArray");
if (AXIS_SUCCESS == m_pCall->invoke())
{
if(AXIS_SUCCESS == m_pCall->checkMessage("echoStringArrayResponse", "http://soapinterop.org/"))
{
RetArray = (xsd__string_Array&)m_pCall->getBasicArray(XSD_STRING, "return", 0);
}
}
m_pCall->unInitialize();
return RetArray;
}
catch(AxisException& e)
{
if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
{
cFaultcode = m_pCall->getElementAsString("faultcode", 0);
cFaultstring = m_pCall->getElementAsString("faultstring", 0);
cFaultactor = m_pCall->getElementAsString("faultactor", 0);
cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
throw AxisException(cFaultdetail);
}
else throw;
}
}
/*
* This method wrap the service method echoInteger
*/
int InteropTestPortType::echoInteger(int Value0)
{
int Ret;
char* cFaultcode;
char* cFaultstring;
char* cFaultactor;
char* cFaultdetail;
try
{
if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL))
return Ret;
m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoInteger");
m_pCall->setSOAPVersion(SOAP_VER_1_1);
m_pCall->setOperation("echoInteger", "http://soapinterop.org/");
applyUserPreferences();
m_pCall->addParameter((void*)&Value0, "inputInteger", XSD_INT);
if (AXIS_SUCCESS == m_pCall->invoke())
{
if(AXIS_SUCCESS == m_pCall->checkMessage("echoIntegerResponse", "http://soapinterop.org/"))
{
Ret = m_pCall->getElementAsInt("return", 0);
}
}
m_pCall->unInitialize();
return Ret;
}
catch(AxisException& e)
{
if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
{
cFaultcode = m_pCall->getElementAsString("faultcode", 0);
cFaultstring = m_pCall->getElementAsString("faultstring", 0);
cFaultactor = m_pCall->getElementAsString("faultactor", 0);
cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
throw AxisException(cFaultdetail);
}
else throw;
}
}
/*
* This method wrap the service method echoIntegerArray
*/
xsd__int_Array InteropTestPortType::echoIntegerArray(xsd__int_Array Value0)
{
xsd__int_Array RetArray = {NULL, 0};
char* cFaultcode;
char* cFaultstring;
char* cFaultactor;
char* cFaultdetail;
try
{
if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL))
return RetArray;
m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoIntegerArray");
m_pCall->setSOAPVersion(SOAP_VER_1_1);
m_pCall->setOperation("echoIntegerArray", "http://soapinterop.org/");
applyUserPreferences();
m_pCall->addBasicArrayParameter((Axis_Array*)(&Value0), XSD_INT, "inputIntegerArray");
if (AXIS_SUCCESS == m_pCall->invoke())
{
if(AXIS_SUCCESS == m_pCall->checkMessage("echoIntegerArrayResponse", "http://soapinterop.org/"))
{
RetArray = (xsd__int_Array&)m_pCall->getBasicArray(XSD_INT, "return", 0);
}
}
m_pCall->unInitialize();
return RetArray;
}
catch(AxisException& e)
{
if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
{
cFaultcode = m_pCall->getElementAsString("faultcode", 0);
cFaultstring = m_pCall->getElementAsString("faultstring", 0);
cFaultactor = m_pCall->getElementAsString("faultactor", 0);
cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
throw AxisException(cFaultdetail);
}
else throw;
}
}
/*
* This method wrap the service method echoFloat
*/
float InteropTestPortType::echoFloat(float Value0)
{
float Ret;
char* cFaultcode;
char* cFaultstring;
char* cFaultactor;
char* cFaultdetail;
try
{
if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL))
return Ret;
m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoFloat");
m_pCall->setSOAPVersion(SOAP_VER_1_1);
m_pCall->setOperation("echoFloat", "http://soapinterop.org/");
applyUserPreferences();
m_pCall->addParameter((void*)&Value0, "inputFloat", XSD_FLOAT);
if (AXIS_SUCCESS == m_pCall->invoke())
{
if(AXIS_SUCCESS == m_pCall->checkMessage("echoFloatResponse", "http://soapinterop.org/"))
{
Ret = m_pCall->getElementAsFloat("return", 0);
}
}
m_pCall->unInitialize();
return Ret;
}
catch(AxisException& e)
{
if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
{
cFaultcode = m_pCall->getElementAsString("faultcode", 0);
cFaultstring = m_pCall->getElementAsString("faultstring", 0);
cFaultactor = m_pCall->getElementAsString("faultactor", 0);
cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
throw AxisException(cFaultdetail);
}
else throw;
}
}
/*
* This method wrap the service method echoFloatArray
*/
xsd__float_Array InteropTestPortType::echoFloatArray(xsd__float_Array Value0)
{
xsd__float_Array RetArray = {NULL, 0};
char* cFaultcode;
char* cFaultstring;
char* cFaultactor;
char* cFaultdetail;
try
{
if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL))
return RetArray;
m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoFloatArray");
m_pCall->setSOAPVersion(SOAP_VER_1_1);
m_pCall->setOperation("echoFloatArray", "http://soapinterop.org/");
applyUserPreferences();
m_pCall->addBasicArrayParameter((Axis_Array*)(&Value0), XSD_FLOAT, "inputFloatArray");
if (AXIS_SUCCESS == m_pCall->invoke())
{
if(AXIS_SUCCESS == m_pCall->checkMessage("echoFloatArrayResponse", "http://soapinterop.org/"))
{
RetArray = (xsd__float_Array&)m_pCall->getBasicArray(XSD_FLOAT, "return", 0);
}
}
m_pCall->unInitialize();
return RetArray;
}
catch(AxisException& e)
{
if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
{
cFaultcode = m_pCall->getElementAsString("faultcode", 0);
cFaultstring = m_pCall->getElementAsString("faultstring", 0);
cFaultactor = m_pCall->getElementAsString("faultactor", 0);
cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
throw AxisException(cFaultdetail);
}
else throw;
}
}
/*
* This method wrap the service method echoStruct
*/
SOAPStruct* InteropTestPortType::echoStruct(SOAPStruct* Value0)
{
SOAPStruct* pReturn = NULL;
char* cFaultcode;
char* cFaultstring;
char* cFaultactor;
char* cFaultdetail;
try
{
if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL))
return pReturn;
m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoStruct");
m_pCall->setSOAPVersion(SOAP_VER_1_1);
m_pCall->setOperation("echoStruct", "http://soapinterop.org/");
applyUserPreferences();
m_pCall->addCmplxParameter(Value0, (void*)Axis_Serialize_SOAPStruct, (void*)Axis_Delete_SOAPStruct, "inputStruct", Axis_URI_SOAPStruct);
if (AXIS_SUCCESS == m_pCall->invoke())
{
if(AXIS_SUCCESS == m_pCall->checkMessage("echoStructResponse", "http://soapinterop.org/"))
{
pReturn = (SOAPStruct*)m_pCall->getCmplxObject((void*) Axis_DeSerialize_SOAPStruct, (void*) Axis_Create_SOAPStruct, (void*) Axis_Delete_SOAPStruct,"return", 0);
}
}
m_pCall->unInitialize();
return pReturn;
}
catch(AxisException& e)
{
if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
{
cFaultcode = m_pCall->getElementAsString("faultcode", 0);
cFaultstring = m_pCall->getElementAsString("faultstring", 0);
cFaultactor = m_pCall->getElementAsString("faultactor", 0);
cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
throw AxisException(cFaultdetail);
}
else throw;
}
}
/*
* This method wrap the service method echoStructArray
*/
SOAPStruct_Array InteropTestPortType::echoStructArray(SOAPStruct_Array Value0)
{
SOAPStruct_Array RetArray = {NULL, 0};
char* cFaultcode;
char* cFaultstring;
char* cFaultactor;
char* cFaultdetail;
try
{
if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL))
return RetArray;
m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoStructArray");
m_pCall->setSOAPVersion(SOAP_VER_1_1);
m_pCall->setOperation("echoStructArray", "http://soapinterop.org/");
applyUserPreferences();
m_pCall->addCmplxArrayParameter((Axis_Array*)(&Value0), (void*)Axis_Serialize_SOAPStruct, (void*)Axis_Delete_SOAPStruct, (void*) Axis_GetSize_SOAPStruct, "inputStructArray", Axis_URI_SOAPStruct);
if (AXIS_SUCCESS == m_pCall->invoke())
{
if(AXIS_SUCCESS == m_pCall->checkMessage("echoStructArrayResponse", "http://soapinterop.org/"))
{
RetArray = (SOAPStruct_Array&)m_pCall->getCmplxArray((void*) Axis_DeSerialize_SOAPStruct, (void*) Axis_Create_SOAPStruct, (void*) Axis_Delete_SOAPStruct, (void*) Axis_GetSize_SOAPStruct, "return", Axis_URI_SOAPStruct);
}
}
m_pCall->unInitialize();
return RetArray;
}
catch(AxisException& e)
{
if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
{
cFaultcode = m_pCall->getElementAsString("faultcode", 0);
cFaultstring = m_pCall->getElementAsString("faultstring", 0);
cFaultactor = m_pCall->getElementAsString("faultactor", 0);
cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
throw AxisException(cFaultdetail);
}
else throw;
}
}
/*
* This method wrap the service method echoVoid
*/
void InteropTestPortType::echoVoid()
{
char* cFaultcode;
char* cFaultstring;
char* cFaultactor;
char* cFaultdetail;
try
{
if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL))
return ;
m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoVoid");
m_pCall->setSOAPVersion(SOAP_VER_1_1);
m_pCall->setOperation("echoVoid", "http://soapinterop.org/");
applyUserPreferences();
if (AXIS_SUCCESS == m_pCall->invoke())
{
if(AXIS_SUCCESS == m_pCall->checkMessage("echoVoidResponse", "http://soapinterop.org/"))
{
/*not successful*/
}
}
m_pCall->unInitialize();
}
catch(AxisException& e)
{
if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
{
cFaultcode = m_pCall->getElementAsString("faultcode", 0);
cFaultstring = m_pCall->getElementAsString("faultstring", 0);
cFaultactor = m_pCall->getElementAsString("faultactor", 0);
cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
throw AxisException(cFaultdetail);
}
else throw;
}
}
/*
* This method wrap the service method echoBase64
*/
xsd__base64Binary InteropTestPortType::echoBase64(xsd__base64Binary Value0)
{
xsd__base64Binary Ret;
char* cFaultcode;
char* cFaultstring;
char* cFaultactor;
char* cFaultdetail;
try
{
if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL))
return Ret;
m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoBase64");
m_pCall->setSOAPVersion(SOAP_VER_1_1);
m_pCall->setOperation("echoBase64", "http://soapinterop.org/");
applyUserPreferences();
m_pCall->addParameter((void*)&Value0, "inputBase64", XSD_BASE64BINARY);
if (AXIS_SUCCESS == m_pCall->invoke())
{
if(AXIS_SUCCESS == m_pCall->checkMessage("echoBase64Response", "http://soapinterop.org/"))
{
Ret = m_pCall->getElementAsBase64Binary("return", 0);
}
}
m_pCall->unInitialize();
return Ret;
}
catch(AxisException& e)
{
if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
{
cFaultcode = m_pCall->getElementAsString("faultcode", 0);
cFaultstring = m_pCall->getElementAsString("faultstring", 0);
cFaultactor = m_pCall->getElementAsString("faultactor", 0);
cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
throw AxisException(cFaultdetail);
}
else throw;
}
}
/*
* This method wrap the service method echoDate
*/
xsd__dateTime InteropTestPortType::echoDate(xsd__dateTime Value0)
{
xsd__dateTime Ret;
char* cFaultcode;
char* cFaultstring;
char* cFaultactor;
char* cFaultdetail;
try
{
if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL))
return Ret;
m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoDate");
m_pCall->setSOAPVersion(SOAP_VER_1_1);
m_pCall->setOperation("echoDate", "http://soapinterop.org/");
applyUserPreferences();
m_pCall->addParameter((void*)&Value0, "inputDate", XSD_DATETIME);
if (AXIS_SUCCESS == m_pCall->invoke())
{
if(AXIS_SUCCESS == m_pCall->checkMessage("echoDateResponse", "http://soapinterop.org/"))
{
Ret = m_pCall->getElementAsDateTime("return", 0);
}
}
m_pCall->unInitialize();
return Ret;
}
catch(AxisException& e)
{
if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
{
cFaultcode = m_pCall->getElementAsString("faultcode", 0);
cFaultstring = m_pCall->getElementAsString("faultstring", 0);
cFaultactor = m_pCall->getElementAsString("faultactor", 0);
cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
throw AxisException(cFaultdetail);
}
else throw;
}
}
/*
* This method wrap the service method echoHexBinary
*/
xsd__hexBinary InteropTestPortType::echoHexBinary(xsd__hexBinary Value0)
{
xsd__hexBinary Ret;
char* cFaultcode;
char* cFaultstring;
char* cFaultactor;
char* cFaultdetail;
try
{
if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL))
return Ret;
m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoHexBinary");
m_pCall->setSOAPVersion(SOAP_VER_1_1);
m_pCall->setOperation("echoHexBinary", "http://soapinterop.org/");
applyUserPreferences();
m_pCall->addParameter((void*)&Value0, "inputHexBinary", XSD_HEXBINARY);
if (AXIS_SUCCESS == m_pCall->invoke())
{
if(AXIS_SUCCESS == m_pCall->checkMessage("echoHexBinaryResponse", "http://soapinterop.org/"))
{
Ret = m_pCall->getElementAsHexBinary("return", 0);
}
}
m_pCall->unInitialize();
return Ret;
}
catch(AxisException& e)
{
if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
{
cFaultcode = m_pCall->getElementAsString("faultcode", 0);
cFaultstring = m_pCall->getElementAsString("faultstring", 0);
cFaultactor = m_pCall->getElementAsString("faultactor", 0);
cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
throw AxisException(cFaultdetail);
}
else throw;
}
}
/*
* This method wrap the service method echoDecimal
*/
xsd__decimal InteropTestPortType::echoDecimal(xsd__decimal Value0)
{
xsd__decimal Ret;
char* cFaultcode;
char* cFaultstring;
char* cFaultactor;
char* cFaultdetail;
try
{
if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL))
return Ret;
m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoDecimal");
m_pCall->setSOAPVersion(SOAP_VER_1_1);
m_pCall->setOperation("echoDecimal", "http://soapinterop.org/");
applyUserPreferences();
m_pCall->addParameter((void*)&Value0, "inputDecimal", XSD_DECIMAL);
if (AXIS_SUCCESS == m_pCall->invoke())
{
if(AXIS_SUCCESS == m_pCall->checkMessage("echoDecimalResponse", "http://soapinterop.org/"))
{
Ret = m_pCall->getElementAsDecimal("return", 0);
}
}
m_pCall->unInitialize();
return Ret;
}
catch(AxisException& e)
{
if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
{
cFaultcode = m_pCall->getElementAsString("faultcode", 0);
cFaultstring = m_pCall->getElementAsString("faultstring", 0);
cFaultactor = m_pCall->getElementAsString("faultactor", 0);
cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
throw AxisException(cFaultdetail);
}
else throw;
}
}
/*
* This method wrap the service method echoBoolean
*/
xsd__boolean InteropTestPortType::echoBoolean(xsd__boolean Value0)
{
xsd__boolean Ret;
char* cFaultcode;
char* cFaultstring;
char* cFaultactor;
char* cFaultdetail;
try
{
if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL))
return Ret;
m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoBoolean");
m_pCall->setSOAPVersion(SOAP_VER_1_1);
m_pCall->setOperation("echoBoolean", "http://soapinterop.org/");
applyUserPreferences();
m_pCall->addParameter((void*)&Value0, "inputBoolean", XSD_BOOLEAN);
if (AXIS_SUCCESS == m_pCall->invoke())
{
if(AXIS_SUCCESS == m_pCall->checkMessage("echoBooleanResponse", "http://soapinterop.org/"))
{
Ret = m_pCall->getElementAsBoolean("return", 0);
}
}
m_pCall->unInitialize();
return Ret;
}
catch(AxisException& e)
{
if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
{
cFaultcode = m_pCall->getElementAsString("faultcode", 0);
cFaultstring = m_pCall->getElementAsString("faultstring", 0);
cFaultactor = m_pCall->getElementAsString("faultactor", 0);
cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
throw AxisException(cFaultdetail);
}
else throw;
}
}
int InteropTestPortType::getStatus()
{
if ( m_pCall==NULL )
return AXIS_SUCCESS;
else
return m_pCall->getStatus();
}
int InteropTestPortType::getFaultDetail(char** ppcDetail)
{
return m_pCall->getFaultDetail(ppcDetail);
}
1.1 ws-axis/c/tests/client/threadSafe/gen_src/InteropTestPortType.h
Index: InteropTestPortType.h
===================================================================
/*
* This is the Client Stub Class genarated by the tool WSDL2Ws
* InteropTestPortType.h: interface for the InteropTestPortTypeclass.
*
*/
#if !defined(__INTEROPTESTPORTTYPE_CLIENTSTUB_H__INCLUDED_)
#define __INTEROPTESTPORTTYPE_CLIENTSTUB_H__INCLUDED_
#include <axis/client/Stub.h>
/*include Exception header files here*/
#include "SOAPStruct_Array.h"
#include "SOAPStruct.h"
class InteropTestPortType :public Stub
{
public:
InteropTestPortType(const char* pchEndpointUri);
public:
virtual ~InteropTestPortType();
public:
xsd__string echoString(xsd__string Value0);
xsd__string_Array echoStringArray(xsd__string_Array Value0);
int echoInteger(int Value0);
xsd__int_Array echoIntegerArray(xsd__int_Array Value0);
float echoFloat(float Value0);
xsd__float_Array echoFloatArray(xsd__float_Array Value0);
SOAPStruct* echoStruct(SOAPStruct* Value0);
SOAPStruct_Array echoStructArray(SOAPStruct_Array Value0);
void echoVoid();
xsd__base64Binary echoBase64(xsd__base64Binary Value0);
xsd__dateTime echoDate(xsd__dateTime Value0);
xsd__hexBinary echoHexBinary(xsd__hexBinary Value0);
xsd__decimal echoDecimal(xsd__decimal Value0);
xsd__boolean echoBoolean(xsd__boolean Value0);
int getStatus();
int getFaultDetail(char** ppcDetail);
};
#endif /* !defined(__INTEROPTESTPORTTYPE_CLIENTSTUB_H__INCLUDED_)*/
1.1 ws-axis/c/tests/client/threadSafe/gen_src/SOAPStruct.cpp
Index: SOAPStruct.cpp
===================================================================
/*
*This file is automatically generated by the Axis C++ Wrapper Class Generator
*Web service wrapper class's implementation generated by Axis WCG
*Parameters and wrapper methos to manipulate SOAPStruct
*/
#include <malloc.h>
#include "SOAPStruct.h"
#include <axis/server/AxisWrapperAPI.h>
/*
* This static method serialize a SOAPStruct type of object
*/
int Axis_Serialize_SOAPStruct(SOAPStruct* param, IWrapperSoapSerializer* pSZ, bool bArray = false)
{
if (bArray)
{
pSZ->serialize("<", Axis_TypeName_SOAPStruct, ">", NULL);
}
else
{
const AxisChar* sPrefix = pSZ->getNamespacePrefix(Axis_URI_SOAPStruct);
pSZ->serialize("<", Axis_TypeName_SOAPStruct, " xsi:type=\"", sPrefix, ":",
Axis_TypeName_SOAPStruct, "\" xmlns:", sPrefix, "=\"",
Axis_URI_SOAPStruct, "\">", NULL);
}
pSZ->serializeAsElement("varString", (void*)&(param->varString), XSD_STRING);
pSZ->serializeAsElement("varInt", (void*)&(param->varInt), XSD_INT);
pSZ->serializeAsElement("varFloat", (void*)&(param->varFloat), XSD_FLOAT);
pSZ->serialize("</", Axis_TypeName_SOAPStruct, ">", NULL);
return AXIS_SUCCESS;
}
/*
* This static method deserialize a SOAPStruct type of object
*/
int Axis_DeSerialize_SOAPStruct(SOAPStruct* param, IWrapperSoapDeSerializer *pIWSDZ)
{
param->varString = pIWSDZ->getElementAsString("varString",0);
param->varInt = pIWSDZ->getElementAsInt("varInt",0);
param->varFloat = pIWSDZ->getElementAsFloat("varFloat",0);
return pIWSDZ->getStatus();
}
void* Axis_Create_SOAPStruct(SOAPStruct* pObj, bool bArray = false, int nSize=0)
{
if (bArray && (nSize > 0))
{
if (pObj)
{
SOAPStruct* pNew = new SOAPStruct[nSize];
memcpy(pNew, pObj, sizeof(SOAPStruct)*nSize/2);
memset(pObj, 0, sizeof(SOAPStruct)*nSize/2);
delete [] pObj;
return pNew;
}
else
{
return new SOAPStruct[nSize];
}
}
else
return new SOAPStruct;
}
/*
* This static method delete a SOAPStruct type of object
*/
void Axis_Delete_SOAPStruct(SOAPStruct* param, bool bArray = false, int nSize=0)
{
if (bArray)
{
delete [] param;
}
else
{
delete param;
}
}
/*
* This static method gives the size of SOAPStruct type of object
*/
int Axis_GetSize_SOAPStruct()
{
return sizeof(SOAPStruct);
}
SOAPStruct::SOAPStruct()
{
/*do not allocate memory to any pointer members here
because deserializer will allocate memory anyway. */
}
SOAPStruct::~SOAPStruct()
{
/*delete any pointer and array members here*/
}
1.1 ws-axis/c/tests/client/threadSafe/gen_src/SOAPStruct.h
Index: SOAPStruct.h
===================================================================
/*
*This file is automatically generated by the Axis C++ Wrapper Class Generator
*Web service wrapper class's implementation generated by Axis WCG
*Parameters and wrapper methos to manipulate SOAPStruct
*/
#if !defined(__SOAPSTRUCT_PARAM_H__INCLUDED_)
#define __SOAPSTRUCT_PARAM_H__INCLUDED_
#include <axis/server/AxisUserAPI.h>
/*Local name and the URI for the type*/
static const char* Axis_URI_SOAPStruct = "http://soapinterop.org/xsd";
static const char* Axis_TypeName_SOAPStruct = "SOAPStruct";
class SOAPStruct
{
public:
xsd__string varString;
int varInt;
float varFloat;
SOAPStruct();
virtual ~SOAPStruct();
};
#endif /* !defined(__SOAPSTRUCT_PARAM_H__INCLUDED_)*/
1.1 ws-axis/c/tests/client/threadSafe/gen_src/SOAPStruct_Array.h
Index: SOAPStruct_Array.h
===================================================================
/*
*This file is automatically generated by the Axis C++ Wrapper Class Generator
*Web service wrapper class's implementation generated by Axis WCG
*Parameters and wrapper methos to manipulate SOAPStruct_Array
*/
#if !defined(__SOAPSTRUCT_ARRAY_ARRAY_H__INCLUDED_)
#define __SOAPSTRUCT_ARRAY_ARRAY_H__INCLUDED_
class SOAPStruct;
typedef struct SOAPStruct_ArrayTag
{
SOAPStruct* m_Array;
int m_Size;
} SOAPStruct_Array;
#endif /* !defined(__SOAPSTRUCT_ARRAY_ARRAY_H__INCLUDED_)*/