blob: 999668f9f6612ac13328cf5067b825b2ed6b1c4a [file] [log] [blame]
#include "SimpleTypeArrayWS.hpp"
#include <iostream>
#define WSDL_DEFAULT_ENDPOINT "http://localhost:80/axis/array"
static void usage( char * programName, char * defaultURL)
{
cout << endl << "Usage:" << endl
<< programName << " [-? | service_url] " << endl
<< " -? Show this help." << endl
<< " service_url URL of the service." << endl
<< " Default service URL is assumed to be " << defaultURL << endl;
}
int main( int argc, char *argv[])
{
SimpleTypeArrayWS * ws;
char endpoint[256];
int returnValue = 1; // Assume Failure
bool bSuccess = false;
int iRetryIterationCount = 3;
sprintf( endpoint, "%s", WSDL_DEFAULT_ENDPOINT);
if( argc > 1)
{
// Watch for special case help request
// Check for - only so that it works for
//-?, -h or --help; -anything
if( !strncmp( argv[1], "-", 1))
{
usage( argv[0], endpoint);
return 2;
}
sprintf( endpoint, argv[1]);
}
do
{
ws = new SimpleTypeArrayWS( endpoint, APTHTTP1_1);
try
{
Type * input;
Type * output;
xsd__int_Array array_input;
int iIntArraySize = 100;
xsd__int ** ppIntArray = new xsd__int *[iIntArraySize];
for( int i = 0; i < 100; i++)
{
(*ppIntArray)[i] = i;
}
array_input.set( ppIntArray, iIntArraySize);
input = new Type ();
input->item = &array_input;
ws->setTransportProperty( "SOAPAction", "array#getInput");
output = ws->getInput( input);
xsd__int_Array * array_output = output->getitem();
int iSize;
const xsd__int ** ppArray = array_output->get( iSize);
for( int i = 0; i < iSize; i++)
{
cout << "item [" << i << "] = " << *ppArray[i] << endl;
}
returnValue = 0; // Success
bSuccess = true;
}
catch( AxisException & e)
{
bool bSilent = false;
if( e.getExceptionCode() == CLIENT_TRANSPORT_OPEN_CONNECTION_FAILED)
{
if( iRetryIterationCount > 1)
{
bSilent = true;
}
}
else
{
iRetryIterationCount = 0;
}
if( !bSilent)
{
cerr << e.what() << endl;
}
free( endpoint);
}
catch( ...)
{
cerr << "Unknown Exception occured." << endl;
}
// clean up
try
{
delete ws;
}
catch( exception & exception)
{
cerr << "Exception on clean up of ws : " << exception.what() << endl;
}
catch( ...)
{
cerr << "Unknown exception on clean up of ws : " << endl;
}
iRetryIterationCount--;
} while( iRetryIterationCount > 0 && !bSuccess);
cout << "---------------------- TEST COMPLETE -----------------------------" << endl;
return returnValue;
}