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/09/06 11:18:23 UTC
cvs commit: ws-axis/c/samples/client/interoptests/base InteropBaseClient.cpp
samisa 2004/09/06 02:18:23
Modified: c/samples/client/interoptests/base InteropBaseClient.cpp
Log:
Cleaned all definite memory leaks with the help of valgrind.
Also changed the usage semantics to pass the service URL directly, instead of host and port.
Revision Changes Path
1.22 +245 -131 ws-axis/c/samples/client/interoptests/base/InteropBaseClient.cpp
Index: InteropBaseClient.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/samples/client/interoptests/base/InteropBaseClient.cpp,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- InteropBaseClient.cpp 16 Aug 2004 06:15:08 -0000 1.21
+++ InteropBaseClient.cpp 6 Sep 2004 09:18:22 -0000 1.22
@@ -1,197 +1,311 @@
-// InteropBaseClient.cpp : Defines the entry point for the console application.
-//
+/*
+ * Copyright 2003-2004 The Apache Software Foundation.
+ *
+ * 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.
+ *
+ *
+ * @author Sanjaya Singharage (sanjayas@opensource.lk)
+ * @author Susantha Kumara (susantha@opensource.lk, skumara@virtusa.com)
+ * @author Samisa Abeysinghe (sabeysinghe@virtusa.com)
+ *
+ */
+
#include <string>
-using namespace std;
+#include <iostream>
-#include "InteropTestPortType.h"
#include <axis/AxisGenException.h>
+#include "InteropTestPortType.h"
+
+using namespace std;
#define ARRAYSIZE 2
-int main(int argc, char* argv[])
+static void
+usage (char *programName, char *defaultURL)
{
- int x;
- char buffer1[100];
- char endpoint[256];
- const char* server="localhost";
- const char* port="80";
- try
- {
- if (argc == 3)
+ cout << "\nUsage:\n"
+ << programName << " [-? | service_url] " << endl
+ << " -? Show this help.\n"
+ << " service_url URL of the service.\n"
+ << " Default service URL is assumed to be " << defaultURL
+ <<
+ "\n Could use http://localhost:8080/axis/services/echo to test with Axis Java."
+ << endl;
+}
+
+
+int
+main (int argc, char *argv[])
+{
+ int x;
+ char buffer1[100];
+ char endpoint[256];
+
+ // Set default service URL
+ sprintf (endpoint, "http://localhost/axis/base");
+ // Could use http://localhost:8080/axis/services/echo to test with Axis Java
+
+ try
+ {
+
+ if (argc > 1)
{
- server = argv[1];
- port = argv[2];
+ // Watch for special case help request
+ if (!strncmp (argv[1], "-", 1)) // Check for - only so that it works for
+ //-?, -h or --help; -anything
+ {
+ usage (argv[0], endpoint);
+ return 2;
+ }
+ sprintf (endpoint, argv[1]);
}
- 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(endpoint);
- printf("invoking echoString...\n");
+
+ cout << endl << " Using service at " << endpoint << endl << endl;
+
+ InteropTestPortType ws (endpoint);
+
//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");
+ printf ("invoking echoString...\n");
+ char* echoStringResult = ws.echoString ("hello world");
+ if (0 == strcmp (echoStringResult, "hello world"))
+ printf ("successful\n");
else
- printf("failed\n");
+ printf ("failed\n");
+
+ // Clean memory
+ if (echoStringResult)
+ free(echoStringResult);
+
// testing echoStringArray
xsd__string_Array arrstr;
- arrstr.m_Array = new char*[ARRAYSIZE];
+ 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");
+ sprintf (buffer1, "%dth element of string array", 0);
+ for (int i = 0; i < ARRAYSIZE; i++)
+ {
+ arrstr.m_Array[i] = buffer1;
+ }
+ printf ("invoking echoStringArray...\n");
+ xsd__string_Array arrstrResult = ws.echoStringArray (arrstr);
+ if (arrstrResult.m_Array != NULL)
+ {
+ printf ("successful\n");
+ // Do stuff and clean memory
+ for( int i = 0; i < arrstrResult.m_Size; i++ )
+ free (arrstrResult.m_Array[i]);
+ delete [] arrstrResult.m_Array;
+ }
else
- printf("failed\n");
+ printf ("failed\n");
+
+ // Clean memory
+ delete [] arrstr.m_Array;
+
// testing echoInteger
- printf("invoking echoInteger...\n");
- if (ws.echoInteger(56) == 56)
- printf("successful\n");
+ printf ("invoking echoInteger...\n");
+ if (ws.echoInteger (56) == 56)
+ printf ("successful\n");
else
- printf("failed\n");
+ 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++)
+ for (x = 0; x < ARRAYSIZE; x++)
{
- arrint.m_Array[x] = x;
+ arrint.m_Array[x] = x;
}
- printf("invoking echoIntegerArray...\n");
- if (ws.echoIntegerArray(arrint).m_Array != NULL)
- printf("successful\n");
- else
- printf("failed\n");
+ printf ("invoking echoIntegerArray...\n");
+ xsd__int_Array arrintResult = ws.echoIntegerArray (arrint);
+ if (arrintResult.m_Array != NULL)
+ {
+ printf ("successful\n");
+ // Do stuff and clean memory
+ delete [] arrintResult.m_Array;
+ }
+ else
+ printf ("failed\n");
+
+ // Clean memory
+ delete [] arrint.m_Array;
+
// testing echoFloat
- printf("invoking echoFloat...\n");
+ printf ("invoking echoFloat...\n");
float fvalue = 1.4214;
- if (ws.echoFloat(fvalue) > 1.42)
- printf("successful\n");
+ if (ws.echoFloat (fvalue) > 1.42)
+ printf ("successful\n");
else
- printf("failed\n");
+ 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++)
+ for (x = 0; x < ARRAYSIZE; x++)
{
- arrfloat.m_Array[x] = 1.1111*x;
+ arrfloat.m_Array[x] = 1.1111 * x;
}
- printf("invoking echoFloatArray...\n");
- if (ws.echoFloatArray(arrfloat).m_Array != NULL)
- printf("successful\n");
+ printf ("invoking echoFloatArray...\n");
+ xsd__float_Array arrfloatResult = ws.echoFloatArray (arrfloat);
+ if (arrfloatResult.m_Array != NULL)
+ {
+ printf ("successful\n");
+ // Do stuff & clean memory
+ // It is our responsibility to deallocate deserializer allocated memory
+ delete [] arrfloatResult.m_Array;
+ }
else
- printf("failed\n");
+ printf ("failed\n");
+
+ // Clean memory
+ delete [] arrfloat.m_Array;
+
// 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");
+ stct.varString = strdup ("This is string in SOAPStruct");
+ printf ("invoking echoStruct...\n");
+ SOAPStruct* stctResult = ws.echoStruct (&stct);
+ if (stctResult != NULL)
+ {
+ printf ("successful\n");
+ // Do stuff and clean memory
+ free(stctResult->varString);
+ delete stctResult;
+ }
else
- printf("failed\n");
+ printf ("failed\n");
+
+ // Clean memory
+ free(stct.varString);
+
//testing echo Array of Struct
SOAPStruct_Array arrstct;
arrstct.m_Array = new SOAPStruct[ARRAYSIZE];
arrstct.m_Size = ARRAYSIZE;
- for (x=0;x<ARRAYSIZE;x++)
+ 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");
+ 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;
+ }
+
+ printf ("invoking echoStructArray...\n");
+ SOAPStruct_Array arrstctResult = ws.echoStructArray (arrstct);
+ if (arrstctResult.m_Array != NULL)
+ {
+ printf ("successful\n");
+ // Do stuff and clean memory
+ for( int i = 0; i < arrstctResult.m_Size; i++ )
+ free (arrstctResult.m_Array[i].varString);
+ delete [] arrstctResult.m_Array;
+ }
else
- printf("failed\n");
+ printf ("failed\n");
+
+ // Clean memory
+ delete [] arrstct.m_Array;
+
//testing echo void
- printf("invoking echoVoid...\n");
- ws.echoVoid();
- printf("successful\n");
+ 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";
+ const char *bstr =
+ "some string that is sent encoded to either base64Binary or hexBinary";
- printf("invoking echoBase64...\n");
+ printf ("invoking echoBase64...\n");
xsd__base64Binary bb;
- bb.__ptr = (unsigned char*)strdup(bstr);
- bb.__size = strlen(bstr);
- if (bb.__size == ws.echoBase64(bb).__size)
+ bb.__ptr = (unsigned char *) strdup (bstr);
+ bb.__size = strlen (bstr);
+ xsd__base64Binary bbResult = ws.echoBase64 (bb);
+ if (bb.__size == bbResult.__size)
{
- printf("successful\n");
- printf("Returned String :\n%s\n", bb.__ptr);
+ printf ("successful\n");
+ // Do stuff
+ printf ("Returned String :\n%s\n", bbResult.__ptr);
+ // Clean memory
+ free(bbResult.__ptr);
}
else
- printf("failed\n");
+ printf ("failed\n");
+
+ // Clean memory
+ free(bb.__ptr);
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");
+ 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");
+ printf ("failed\n");
+
//testing echo hex binary
- printf("invoking echoHexBinary...\n");
+ printf ("invoking echoHexBinary...\n");
xsd__hexBinary hb;
- hb.__ptr = (unsigned char*)strdup(bstr);
- hb.__size = strlen(bstr);
- if (hb.__size == ws.echoHexBinary(hb).__size)
+ hb.__ptr = (unsigned char *) strdup (bstr);
+ hb.__size = strlen (bstr);
+ xsd__hexBinary hbResult = ws.echoHexBinary (hb);
+ if (hb.__size == hbResult.__size)
{
- printf("successful\n");
- printf("Returned String :\n%s\n", hb.__ptr);
+ printf ("successful\n");
+ // Do stuff
+ printf ("Returned String :\n%s\n", hbResult.__ptr);
+ // Clean memory
+ free(hbResult.__ptr);
}
else
- printf("failed\n");
+ printf ("failed\n");
+
+ // Clean memory
+ free(hb.__ptr);
+
//testing echo decimal
- printf("invoking echoDecimal...\n");
- if (ws.echoDecimal(1234.567890) > 1234.56)
- printf("successful\n");
+ printf ("invoking echoDecimal...\n");
+ if (ws.echoDecimal (1234.567890) > 1234.56)
+ printf ("successful\n");
else
- printf("failed\n");
+ printf ("failed\n");
+
//testing echo boolean
- printf("invoking echoBoolean...\n");
- if (ws.echoBoolean(true_) == true_)
- printf("successful\n");
- else
- printf("failed\n");
-
- /*getchar();*/
- }
- catch(AxisException& e)
- {
- printf("Exception : %s\n", e.what());
- }
- catch(exception& e)
- {
- printf("Unknown exception has occured\n");
- }
- catch(...)
- {
- printf("Unknown exception has occured\n");
- }
- return 0;
+ printf ("invoking echoBoolean...\n");
+ if (ws.echoBoolean (true_) == true_)
+ printf ("successful\n");
+ else
+ printf ("failed\n");
+
+ }
+ catch (AxisException & e)
+ {
+ printf ("Exception : %s\n", e.what ());
+ }
+ catch (exception & e)
+ {
+ printf ("Unknown exception has occured\n");
+ }
+ catch (...)
+ {
+ printf ("Unknown exception has occured\n");
+ }
+ return 0;
}