blob: cbbb3837808ba88b5ffe862eeccc3851d6a2993a [file] [log] [blame]
// 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.
// InteropBaseClient.cpp : Defines the entry point for the console application.
//
#include <string>
//#include <iostream>
using namespace std;
#include "InteropTestPortType.hpp"
#define ARRAYSIZE 2
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[])
{
int x = 0;
int i = 0;
char buffer1[100];
char endpoint[256];
const char * server = "localhost";
const char * port = "80";
sprintf( endpoint, "http://%s:%s/axis/base", server, port);
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]);
}
bool bSuccess = false;
int iRetryIterationCount = 3;
do
{
try
{
InteropTestPortType ws( endpoint, APTHTTP1_1);
//testing echoString
cout << "invoking echoString..." << endl;
ws.setTransportProperty( "SOAPAction", "InteropBase#echoString");
string bigstring;
for( int ii = 0; ii < 2; ii++)
{
bigstring += "hello world ";
}
strcpy( buffer1, bigstring.c_str());
char * cpResult = ws.echoString( "hello world");
if( 0 == strcmp( cpResult, "hello world"))
{
cout << "successful" << endl;
}
else
{
cout << "failed" << endl;
}
delete [] cpResult;
// testing echoStringArray
cout << "invoking echoStringArray..." << endl;
ws.setTransportProperty( "SOAPAction", "InteropBase#echoStringArray");
xsd__string * pStringArray = new char *[ARRAYSIZE];
xsd__string_Array arrstr;
sprintf( buffer1, "%dth element of string array", 0);
for( i = 0; i < ARRAYSIZE; i++)
{
pStringArray[i] = buffer1;
}
arrstr.set( pStringArray, ARRAYSIZE);
xsd__string_Array * arrstrResult = ws.echoStringArray( &arrstr);
if( arrstrResult != NULL)
{
cout << "successful" << endl;
}
else
{
cout << "failed" << endl;
}
delete [] arrstrResult;
// testing echoInteger
cout << "invoking echoInteger..." << endl;
ws.setTransportProperty( "SOAPAction", "InteropBase#echoInteger");
if( ws.echoInteger( 56) == 56)
{
cout << "successful" << endl;
}
else
{
cout << "failed" << endl;
}
// testing echoIntegerArray
cout << "invoking echoIntegerArray..." << endl;
ws.setTransportProperty( "SOAPAction", "InteropBase#echoIntegerArray");
xsd__int ** ppIntArray = new xsd__int *[ARRAYSIZE];
xsd__int_Array arrint;
int iToSend[ARRAYSIZE];
for( x = 0; x < ARRAYSIZE; x++)
{
iToSend[x] = x;
ppIntArray[x] = (xsd__int *) &iToSend[x];
}
arrint.set( ppIntArray, ARRAYSIZE);
xsd__int_Array * arrintResult = ws.echoIntegerArray( &arrint);
int iSize;
const xsd__int ** ppIntOutputArray = arrintResult->get( iSize);
if( ppIntOutputArray != NULL)
{
cout << "successful" << endl;
}
else
{
cout << "failed" << endl;
}
// Free memory for result
delete [] arrintResult;
// testing echoFloat
cout << "invoking echoFloat..." << endl;
ws.setTransportProperty( "SOAPAction", "InteropBase#echoFloat");
xsd__float fvalue = (xsd__float) 1.4214;
if (ws.echoFloat (fvalue) > (xsd__float) 1.42)
{
cout << "successful" << endl;
}
else
{
cout << "failed" << endl;
}
// testing echoFloat
cout << "invoking echoFloatArray..." << endl;
ws.setTransportProperty ( "SOAPAction", "InteropBase#echoFloatArray");
xsd__float_Array arrfloat;
xsd__float ** ppFloatArray = new xsd__float *[ARRAYSIZE];
xsd__float fToSend[ARRAYSIZE];
for( x = 0; x < ARRAYSIZE; x++)
{
fToSend[x] = (xsd__float) 1.1111 * x;
ppFloatArray[x] = &fToSend[x];
}
arrfloat.set( ppFloatArray, ARRAYSIZE);
xsd__float_Array * arrfloatResult = ws.echoFloatArray( &arrfloat);
if( arrfloatResult != NULL)
{
cout << "successful" << endl;
}
else
{
cout << "failed" << endl;
}
delete [] ppFloatArray;
delete [] arrfloatResult;
// testing echo Struct
cout << "invoking echoStruct..." << endl;
ws.setTransportProperty( "SOAPAction", "InteropBase#echoStruct");
SOAPStruct stct;
xsd__int integer = 5000;
xsd__float floatVal = (xsd__float) 12345.7346345;
stct.varFloat = &floatVal;
stct.varInt = &integer;
stct.varString = strdup( "This is string in SOAPStruct");
SOAPStruct *stctResult = ws.echoStruct( &stct);
if (stctResult != NULL)
{
cout << "successful" << endl;
}
else
{
cout << "failed" << endl;
}
// Free result memory
delete stctResult;
//testing echo Array of Struct
SOAPStruct_Array arrstct;
SOAPStruct ** ppSOAPStruct = new SOAPStruct* [ARRAYSIZE];
for( x = 0; x < ARRAYSIZE; x++)
{
integer = x;
floatVal = (xsd__float) 1.1111 * x;
sprintf( buffer1, "varString of %dth element of SOAPStruct array", x);
ppSOAPStruct[x]->setvarFloat( &floatVal);
ppSOAPStruct[x]->setvarInt( &integer);
ppSOAPStruct[x]->setvarString( buffer1);
}
arrstct.set( ppSOAPStruct, ARRAYSIZE);
//testing echo Struct Array
cout << "invoking echoStructArray..." << endl;
ws.setTransportProperty( "SOAPAction", "InteropBase#echoStructArray");
SOAPStruct_Array * arrstctResult = ws.echoStructArray( &arrstct);
if( arrstctResult != NULL)
{
cout << "successful" << endl;
}
else
{
cout << "failed" << endl;
}
delete ppSOAPStruct;
delete [] arrstctResult;
//testing echo void
cout << "invoking echoVoid..." << endl;
ws.setTransportProperty( "SOAPAction", "InteropBase#echoVoid");
ws.echoVoid();
cout << "successful" << endl;
//testing echo base 64 binary
cout << "invoking echoBase64..." << endl;
ws.setTransportProperty ("SOAPAction", "InteropBase#echoBase64");
const char * bstr = "some string that is sent encoded to either base64Binary or hexBinary";
xsd__base64Binary bb;
bb.set( (xsd__unsignedByte *) strdup( bstr), (xsd__int) strlen( bstr));
xsd__base64Binary bbResult = ws.echoBase64( bb);
if( (xsd__int) strlen( bstr) == bbResult.getSize())
{
xsd__int iSize;
cout << "successful" << endl
<< "Returned String :" << endl
<< bbResult.get( iSize) << endl;
}
else
{
printf ("failed\n");
}
cout << "invoking echoDate..." << endl;
ws.setTransportProperty( "SOAPAction", "InteropBase#echoDate");
time_t tim;
time( &tim);
tm * lt = gmtime( &tim);
if( memcmp( &ws.echoDate( *lt), lt, sizeof( tm)) == 0)
{
cout << "successful" << endl;
}
else
{
cout << "failed" << endl;
}
//testing echo hex binary
cout << "invoking echoHexBinary..." << endl;
ws.setTransportProperty( "SOAPAction", "InteropBase#echoHexBinary");
xsd__hexBinary hb;
iSize = (xsd__int) strlen( bstr);
hb.set( (xsd__unsignedByte *) strdup( bstr), iSize);
xsd__hexBinary hbReturn = ws.echoHexBinary( hb);
if( iSize == hbReturn.getSize())
{
cout << "successful" << endl
<< "Returned String :" << endl
<< hbReturn.get( iSize) << endl;
}
else
{
cout << "failed" << endl;
}
//testing echo decimal
cout << "invoking echoDecimal..." << endl;
ws.setTransportProperty( "SOAPAction", "InteropBase#echoDecimal");
if( ws.echoDecimal( 1234.567890) > 1234.56)
{
cout << "successful" << endl;
}
else
{
cout << "failed" << endl;
}
//testing echo boolean
cout << "invoking echoBoolean..." << endl;
ws.setTransportProperty( "SOAPAction", "InteropBase#echoBoolean");
if( ws.echoBoolean (true_) == true_)
{
cout << "successful" << endl;
}
else
{
cout << "failed" << endl;
}
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)
{
cout << e.what() << endl;
}
}
catch( exception & e)
{
cout << e.what() << endl;
}
catch( ...)
{
cout << "Unknown exception has occured" << endl;
}
iRetryIterationCount--;
} while( iRetryIterationCount > 0 && !bSuccess);
//getchar();
return 0;
}