You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by ja...@apache.org on 2005/12/21 12:02:18 UTC

svn commit: r358263 - in /webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp: getBindingDetail_v2Test1Client.cpp getServiceDetail_v2Test1Client.cpp getTModelDetail_v2Test1Client.cpp

Author: jamejose
Date: Wed Dec 21 03:01:57 2005
New Revision: 358263

URL: http://svn.apache.org/viewcvs?rev=358263&view=rev
Log:
Test cases for inquire APIs

Added:
    webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/getBindingDetail_v2Test1Client.cpp
    webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/getServiceDetail_v2Test1Client.cpp
    webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/getTModelDetail_v2Test1Client.cpp

Added: webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/getBindingDetail_v2Test1Client.cpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/getBindingDetail_v2Test1Client.cpp?rev=358263&view=auto
==============================================================================
--- webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/getBindingDetail_v2Test1Client.cpp (added)
+++ webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/getBindingDetail_v2Test1Client.cpp Wed Dec 21 03:01:57 2005
@@ -0,0 +1,234 @@
+/*
+ *   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.
+ */
+
+/*
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+#include <string>
+#include <iostream>
+#include <stdlib.h>
+#include <axis/AxisException.hpp>
+using namespace std;
+
+#include "Inquire.hpp"
+
+#define ARRAYSIZE 1 
+
+char endpoint[256];
+
+int
+main(int argc, char *argv[])
+{
+    if( argc < 2 )
+    {
+        printf( "Usage: %s [endpoint] ", argv[0]);
+        exit(0);
+    }
+
+    sprintf(endpoint, argv[1]); 
+	char* cpname = "2.0";
+	int outputSize=0;
+    Inquire *ws = new Inquire(endpoint);   
+
+		bool bSuccess = false;
+		int	iRetryIterationCount = 3;
+
+	do
+	{
+		try 
+		{
+			char buffer[100];
+			// Storing Binding Key to Buffer 
+			sprintf(buffer, "585e9258-c7b7-4701-986e-1646f7166ed1");	
+             
+			 /* Case1 :
+			    In this we pass one binding key and get back one binding Template and then displays the details*/
+			bindingKey_Array arrBindingKeys;
+			bindingKey * arrayBinding = new bindingKey[ARRAYSIZE];  
+			int i;
+			for (i = 0; i < ARRAYSIZE; i++)
+			 {
+				 arrayBinding[i] = new char[100];
+				 strcpy(arrayBinding[i],buffer);
+			 }
+			arrBindingKeys.set(arrayBinding,ARRAYSIZE);
+			cout << "invoking get_bindingDetail ...\n";			
+			bindingTemplate_Array* bindingTemplates = ws->get_bindingDetail(&arrBindingKeys, cpname);
+			outputSize = 0;
+			bindingTemplate ** arrayOutBinding = bindingTemplates->get(outputSize);			
+			cout << "bindingTemplate_Array size = " <<  outputSize << endl;
+			for( i = 0; i < outputSize; i++ ) 
+			{
+				cout << "Binding Template " <<  i + 1 << endl;
+				cout << "\t Binding Key Ref = " << arrayOutBinding[i]->bindingKey_Ref<<endl;
+				cout << "\t Service Key Ref = " << arrayOutBinding[i]->serviceKey_Ref<<endl;	
+				//Display Description
+				int outputSizeDesc=0;
+				description ** arrayDesc = arrayOutBinding[i]->description_Ref->get(outputSizeDesc);
+				cout << "\t Description ... " << endl;
+				for( int j = 0; j < outputSizeDesc; j++)
+				{
+					cout << "\t\t Description " << j+1 << " = " << arrayDesc[j]->description_value<< endl;
+				}
+				/*if( arrayOutBinding[i]->accessPoint_Ref)
+				{
+					cout << "\t Access Point " << endl;						
+					cout << "\t\t Point = " << arrayOutBinding[i]->accessPoint_Ref->accessPoint_value << endl;
+					cout <<  "\t\t URL Type = " << arrayOutBinding[i]->accessPoint_Ref->URLType_Ref << endl;					
+				}*/
+				if(arrayOutBinding[i]->tModelInstanceDetails_Ref){
+						int tModelInstanceInfoSize=0;
+						tModelInstanceInfo ** arrtModelInstInfo = arrayOutBinding[i]->tModelInstanceDetails_Ref->tModelInstanceInfo_Ref->get(tModelInstanceInfoSize);
+						cout << "\ttModelInstanceInfo..." << endl;
+						for(int k=0;k<tModelInstanceInfoSize;k++){
+							cout<<"\t\ttModelKey Value = " << arrtModelInstInfo[k]<< endl;
+						}
+				}  
+			}
+
+
+			/* Case2:
+			   In this we pass 2 bindingKeys and get back two business Services */
+			
+			arrayBinding = new bindingKey[2];        
+			for (i = 0; i < 2; i++)
+			 {
+				 arrayBinding[i] = new char[100];				 
+			 } 
+			 strcpy(arrayBinding[0],buffer);
+			 strcpy(arrayBinding[1],"2ebf3e2e-58c0-4022-83a6-eed8b1eea6e8");
+			arrBindingKeys.set(arrayBinding,2);
+			cout << "\n\ninvoking get_bindingDetail ...\n";			
+			//Inquire *ws1 = new Inquire(endpoint); 
+			bindingTemplates = ws->get_bindingDetail(&arrBindingKeys, cpname);
+			outputSize = 0;
+			arrayOutBinding = bindingTemplates->get(outputSize);			
+			cout << "bindingTemplate_Array size = " <<  outputSize << endl;
+			for( i = 0; i < outputSize; i++ ) 
+			{
+				cout << "Binding Template " <<  i + 1 << endl;
+				cout << "\t Binding Key Ref = " << arrayOutBinding[i]->bindingKey_Ref<<endl;
+				cout << "\t Service Key Ref = " << arrayOutBinding[i]->serviceKey_Ref<<endl;	
+				//Display Description
+				int outputSizeDesc=0;
+				description ** arrayDesc = arrayOutBinding[i]->description_Ref->get(outputSizeDesc);
+				cout << "\t Description ... " << endl;
+				for( int j = 0; j < outputSizeDesc; j++)
+				{
+					cout << "\t\t Description " << j+1 << " = " << arrayDesc[j]->description_value<< endl;
+				}				
+				
+				/*if( arrayOutBinding[i]->accessPoint_Ref)
+				{
+					cout << "\t Access Point " << endl;						
+					cout << "\t\t Point = " << arrayOutBinding[i]->accessPoint_Ref->accessPoint_value << endl;
+					cout <<  "\t\t URL Type = " << arrayOutBinding[i]->accessPoint_Ref->URLType_Ref << endl;					
+				}*/
+				if(arrayOutBinding[i]->tModelInstanceDetails_Ref){
+						int tModelInstanceInfoSize=0;
+						tModelInstanceInfo ** arrtModelInstInfo = arrayOutBinding[i]->tModelInstanceDetails_Ref->tModelInstanceInfo_Ref->get(tModelInstanceInfoSize);
+						cout << "\ttModelInstanceInfo..." << endl;
+						for(int k=0;k<tModelInstanceInfoSize;k++){
+							cout<<"\t\ttModelKey Value = " << arrtModelInstInfo[k]<< endl;
+						}
+				}  
+
+			}
+
+			/* Case 3:
+			   In this we pass a non existing Binding Key */
+
+			
+			arrayBinding = new bindingKey[2];        
+			for (i = 0; i < 1; i++)
+			 {
+				 arrayBinding[i] = new char[100];	
+				 strcpy(arrayBinding[0],"05e39405-6216-46bd-8f4c-dad67cda4c15");
+			 } 
+			 
+			
+			arrBindingKeys.set(arrayBinding,1);			
+			//Inquire *ws2 = new Inquire(endpoint); 
+			cout << "\n\ninvoking get_bindingDetail ...\n";
+			bindingTemplates = ws->get_bindingDetail(&arrBindingKeys, cpname);
+			outputSize = 0;
+			arrayOutBinding = bindingTemplates->get(outputSize);			
+			cout << "bindingTemplate_Array size = " << outputSize << endl;
+			for( i = 0; i < outputSize; i++ ) 
+			{
+				cout << "Binding Template " <<  i + 1 << endl;
+				cout << "\t Binding Key Ref = " << arrayOutBinding[i]->bindingKey_Ref<<endl;
+				cout << "\t Service Key Ref = " << arrayOutBinding[i]->serviceKey_Ref<<endl;	
+				//Display Description
+				int outputSizeDesc=0;
+				description ** arrayDesc = arrayOutBinding[i]->description_Ref->get(outputSizeDesc);
+				cout << "\t Description ... " << endl;
+				for( int j = 0; j < outputSizeDesc; j++)
+				{
+					cout << "\t\t Description " << j+1 << " = " << arrayDesc[j]->description_value<< endl;
+				}				
+				
+
+				/*if( arrayOutBinding[i]->accessPoint_Ref)
+				{
+					cout << "\t Access Point " << endl;						
+					cout << "\t\t Point = " << arrayOutBinding[i]->accessPoint_Ref->accessPoint_value << endl;
+					cout <<  "\t\t URL Type = " << arrayOutBinding[i]->accessPoint_Ref->URLType_Ref << endl;					
+				}*/
+				
+				if(arrayOutBinding[i]->tModelInstanceDetails_Ref){
+						int tModelInstanceInfoSize=0;
+						tModelInstanceInfo ** arrtModelInstInfo = arrayOutBinding[i]->tModelInstanceDetails_Ref->tModelInstanceInfo_Ref->get(tModelInstanceInfoSize);
+						cout << "\ttModelInstanceInfo..." << endl;
+						for(int k=0;k<tModelInstanceInfoSize;k++){
+							cout<<"\t\ttModelKey Value = " << arrtModelInstInfo[k]<< endl;
+						}
+				}  
+			}
+			bSuccess = true;
+		} 
+		catch(AxisException& e)
+		{
+			bool bSilent = false;
+
+			if( e.getExceptionCode() == CLIENT_TRANSPORT_OPEN_CONNECTION_FAILED)
+			{
+				if( iRetryIterationCount > 0)
+				{
+					bSilent = true;
+				}
+			}
+			else
+			{
+				iRetryIterationCount = 0;
+			}
+
+            if( !bSilent)
+			{
+        printf("Exception caught : %s\n", e.what());
+			}
+    }
+		iRetryIterationCount--;
+		} while( iRetryIterationCount > 0 && !bSuccess);
+
+    return 0;
+}

Added: webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/getServiceDetail_v2Test1Client.cpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/getServiceDetail_v2Test1Client.cpp?rev=358263&view=auto
==============================================================================
--- webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/getServiceDetail_v2Test1Client.cpp (added)
+++ webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/getServiceDetail_v2Test1Client.cpp Wed Dec 21 03:01:57 2005
@@ -0,0 +1,256 @@
+/*
+ *   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.
+ */
+
+/*
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+#include <string>
+#include <iostream>
+#include <stdlib.h>
+#include <axis/AxisException.hpp>
+using namespace std;
+
+#include "Inquire.hpp"
+
+#define ARRAYSIZE 1 
+
+char endpoint[256];
+
+int
+main(int argc, char *argv[])
+{
+    if( argc < 2 )
+    {
+        printf( "Usage: %s [endpoint] ", argv[0]);
+        exit(0);
+    }
+
+    sprintf(endpoint, argv[1]); 
+	char* cpname = "2.0";
+	int outputSize=0;
+    Inquire *ws = new Inquire(endpoint);   
+
+		bool bSuccess = false;
+		int	iRetryIterationCount = 3;
+
+	do
+	{
+		try 
+		{
+			char buffer[100];
+			// Storing service Key to Buffer 
+			sprintf(buffer, "f0aa27f0-88e7-4750-808a-a4d038a48ae7");			
+             
+			 /* Case1 :
+			    In this we pass one service key and get back one business service and then displays the details*/
+			serviceKey_Array arrServiceKeys;
+			serviceKey * arrayService = new serviceKey[ARRAYSIZE];  
+			int i;
+			for (i = 0; i < ARRAYSIZE; i++)
+			 {
+				 arrayService[i] = new char[100];
+				 strcpy(arrayService[i],buffer);
+			 }
+			arrServiceKeys.set(arrayService,ARRAYSIZE);
+			cout << "invoking get_serviceDetail ...\n";			
+			businessService_Array* businessServices = ws->get_serviceDetail(&arrServiceKeys, cpname);
+			outputSize = 0;
+			businessService ** arrayOutService = businessServices->get(outputSize);			
+			cout << "businessService_Array size = " <<  outputSize << endl;
+			for( i = 0; i < outputSize; i++ ) 
+			{
+				cout << "Business Service " <<  i + 1 << endl;
+				cout << "\t Business Key Ref = " << arrayOutService[i]->businessKey_Ref<<endl;
+				cout << "\t Service Key Ref = " << arrayOutService[i]->serviceKey_Ref<<endl;							
+				cout << "\t Names... \n" ;
+				int outputSizeName = 0;
+
+				//Display name of the business Service
+
+				name** arrayName = arrayOutService[i]->name_Ref->get(outputSizeName);
+				for( int j = 0; j < outputSizeName; j++)
+				{
+					cout << "\t\t Name " << j + 1 << " = " <<  arrayName[j]->name_value <<endl;
+				} 
+
+				//Display Description
+				int outputSizeDesc=0;
+				description ** arrayDesc = arrayOutService[i]->description_Ref->get(outputSizeDesc);
+				cout << "\t Description ... " << endl;
+				for( int j = 0; j < outputSizeDesc; j++)
+				{
+					cout << "\t\t Description " << j+1 << " = " << arrayDesc[j]->description_value<< endl;
+				} 	
+				if( arrayOutService[i]->bindingTemplates_Ref )
+				{
+					cout << "\t\t\t Binding Templates...\n" ;
+					int outputSizeBT=0;
+					bindingTemplate ** arrayOutServiceT = arrayOutService[j]->bindingTemplates_Ref->bindingTemplate_Ref->get(outputSizeBT);
+					for( int k = 0; k < outputSizeBT; k++ )
+					{
+						cout << "\t\t\t\t Access Point " <<  k + 1 << endl;
+						if( arrayOutServiceT[k]->accessPoint_Ref )
+						{
+							cout << "\t\t\t\t\t Point = " << arrayOutServiceT[k]->accessPoint_Ref->accessPoint_value << endl;
+							cout <<  "\t\t\t\t\t URL Type = " << arrayOutServiceT[k]->accessPoint_Ref->URLType_Ref << endl;
+						}
+					}
+				}
+				
+				if(arrayOutService[i]->categoryBag_Ref){
+						int KRArraySize = 0;
+						keyedReference ** KRArray = arrayOutService[i]->categoryBag_Ref->keyedReference_Ref->get(KRArraySize);
+						cout << "\t\t\t Category Bag Array Size .. " << KRArraySize << endl;
+						for(int k=0;k<KRArraySize;k++){
+							cout << "\t\t\t Category Bag "<< k+1 << endl;
+						cout << "\t\t\t\ttModelKey_Ref = " << KRArray[k]->tModelKey_Ref << endl;
+						cout << "\t\t\t\ttKeyName = " <<KRArray[k]->keyName << endl;
+						cout << "\t\t\t\ttKeyValue = " << KRArray[k]->keyValue << endl;                		
+						}
+				}
+           
+			}
+
+
+			/* Case2:
+			   In this we pass 2 serviceKeys and get back two business Services */
+			
+			arrayService = new serviceKey[2];        
+			for (i = 0; i < 2; i++)
+			 {
+				 arrayService[i] = new char[100];				 
+			 } 
+			 strcpy(arrayService[0],buffer);
+			 strcpy(arrayService[1],"90757090-956e-4e13-82c0-4e85904ec076");
+			arrServiceKeys.set(arrayService,2);
+			cout << "\n\ninvoking get_serviceDetail ...\n";			
+			//Inquire *ws1 = new Inquire(endpoint); 
+			businessServices = ws->get_serviceDetail(&arrServiceKeys, cpname);
+			outputSize = 0;
+			arrayOutService = businessServices->get(outputSize);			
+			cout << "businessService_Array size = " <<  outputSize << endl;
+			for( i = 0; i < outputSize; i++ ) 
+			{
+				cout << "Business Service " << i + 1 <<endl;
+				cout << "\t Business Key Ref = " << arrayOutService[i]->businessKey_Ref << endl;
+				cout << "\t Service Key Ref = " << arrayOutService[i]->serviceKey_Ref<<endl;				
+				cout << "\t Names... \n";
+				int outputSizeName = 0;
+				name** arrayName = arrayOutService[i]->name_Ref->get(outputSizeName);
+				for( int j = 0; j < outputSizeName; j++)
+				{
+					cout << "\t\t Name " << j + 1 << " = " << arrayName[j]->name_value << endl;
+				}           
+				if( arrayOutService[i]->bindingTemplates_Ref )
+				{
+					cout << "\t\t\t Binding Templates...\n" ;
+					int outputSizeBT=0;
+					bindingTemplate ** arrayOutServiceT = arrayOutService[j]->bindingTemplates_Ref->bindingTemplate_Ref->get(outputSizeBT);
+					for( int k = 0; k < outputSizeBT; k++ )
+					{
+						cout << "\t\t\t\t Access Point " << k + 1;
+						if( arrayOutServiceT[k]->accessPoint_Ref )
+						{
+							cout << "\t\t\t\t\t Point = " << arrayOutServiceT[k]->accessPoint_Ref->accessPoint_value << endl;
+							cout << "\t\t\t\t\t URL Type = " << arrayOutServiceT[k]->accessPoint_Ref->URLType_Ref << endl;
+						}
+					}
+				}			
+           
+			}
+
+			/* Case 3:
+			   In this we pass a non existing Service Key */
+
+			
+			arrayService = new serviceKey[2];        
+			for (i = 0; i < 1; i++)
+			 {
+				 arrayService[i] = new char[100];	
+				 strcpy(arrayService[0],"05e39405-6216-46bd-8f4c-dad67cda4c15");
+			 } 
+			 
+			
+			arrServiceKeys.set(arrayService,1);			
+			//Inquire *ws2 = new Inquire(endpoint); 
+			cout << "\n\ninvoking get_serviceDetail ...\n";
+			businessServices = ws->get_serviceDetail(&arrServiceKeys, cpname);
+			outputSize = 0;
+			arrayOutService = businessServices->get(outputSize);			
+			cout << "businessService_Array size = " << outputSize << endl;
+			for( i = 0; i < outputSize; i++ ) 
+			{
+				cout << "Business Entity " << i + 1 << endl;
+				cout << "\t Business Key Ref = " << arrayOutService[i]->businessKey_Ref << endl;
+				cout << "\t Service Key Ref = " << arrayOutService[i]->serviceKey_Ref << endl;
+				cout << "\t Names... \n";
+				int outputSizeName = 0;
+				name** arrayName = arrayOutService[i]->name_Ref->get(outputSizeName);
+				for( int j = 0; j < outputSizeName; j++)
+				{
+					cout << "\t\t Name  " << j + 1 << " = " << arrayName[j]->name_value;
+				}           
+				
+				if( arrayOutService[i]->bindingTemplates_Ref )
+				{
+					cout << "\t\t\t Binding Templates...\n" ;
+					int outputSizeBT=0;
+					bindingTemplate ** arrayOutServiceT = arrayOutService[j]->bindingTemplates_Ref->bindingTemplate_Ref->get(outputSizeBT);
+					for( int k = 0; k < outputSizeBT; k++ )
+					{
+						cout << "\t\t\t\t Access Point " << k + 1 << endl;
+						if( arrayOutServiceT[k]->accessPoint_Ref )
+						{
+							cout << "\t\t\t\t\t Point = " << arrayOutServiceT[k]->accessPoint_Ref->accessPoint_value << endl;
+							cout << "\t\t\t\t\t URL Type = " << arrayOutServiceT[k]->accessPoint_Ref->URLType_Ref << endl;
+						}
+					}
+				}           
+			}
+			bSuccess = true;
+		} 
+		catch(AxisException& e)
+		{
+			bool bSilent = false;
+
+			if( e.getExceptionCode() == CLIENT_TRANSPORT_OPEN_CONNECTION_FAILED)
+			{
+				if( iRetryIterationCount > 0)
+				{
+					bSilent = true;
+				}
+			}
+			else
+			{
+				iRetryIterationCount = 0;
+			}
+
+            if( !bSilent)
+			{
+        printf("Exception caught : %s\n", e.what());
+			}
+    }
+		iRetryIterationCount--;
+		} while( iRetryIterationCount > 0 && !bSuccess);
+
+    return 0;
+}

Added: webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/getTModelDetail_v2Test1Client.cpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/getTModelDetail_v2Test1Client.cpp?rev=358263&view=auto
==============================================================================
--- webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/getTModelDetail_v2Test1Client.cpp (added)
+++ webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/getTModelDetail_v2Test1Client.cpp Wed Dec 21 03:01:57 2005
@@ -0,0 +1,263 @@
+/*
+ *   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.
+ */
+
+/*
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+#include <string>
+#include <iostream>
+#include <stdlib.h>
+#include <axis/AxisException.hpp>
+using namespace std;
+
+#include "Inquire.hpp"
+
+#define ARRAYSIZE 1 
+
+char endpoint[256];
+
+int
+main(int argc, char *argv[])
+{
+    if( argc < 2 )
+    {
+        printf( "Usage: %s [endpoint] ", argv[0]);
+        exit(0);
+    }
+
+    sprintf(endpoint, argv[1]); 
+	char* cpname = "2.0";
+	int outputSize=0;
+    Inquire *ws = new Inquire(endpoint);   
+
+		bool bSuccess = false;
+		int	iRetryIterationCount = 3;
+
+	do
+	{
+		try 
+		{
+			char buffer[100];
+			// Storing Binding Key to Buffer 
+			sprintf(buffer, "uuid:2524c425-656e-4eb2-8b13-080cfb081382");	
+             
+			 /* Case1 :
+			    In this we pass one tModel key and get back one tModel and then displays the details*/
+			tModelKey_Array arrTModelKeys;
+			tModelKey * arrayTModel = new tModelKey[ARRAYSIZE];  
+			int i;
+			for (i = 0; i < ARRAYSIZE; i++)
+			 {
+				 arrayTModel[i] = new char[100];
+				 strcpy(arrayTModel[i],buffer);
+			 }
+			arrTModelKeys.set(arrayTModel,ARRAYSIZE);
+			cout << "invoking get_tModelDetail ...\n";			
+			tModel_Array* tModels = ws->get_tModelDetail(&arrTModelKeys, cpname);
+			outputSize = 0;
+			tModel ** arrayOutTModel = tModels->get(outputSize);			
+			cout << "tModel_Array size = " <<  outputSize << endl;
+			for( i = 0; i < outputSize; i++ ) 
+			{
+				cout << "tModel " <<  i + 1 << endl;
+				cout << "\t tModel Key Ref = " << arrayOutTModel[i]->tModelKey_Ref<<endl;
+				cout << "\t Authorized Name = " << arrayOutTModel[i]->authorizedName << endl;
+				//Display name of tModel				
+				cout << "\t Name = " << arrayOutTModel[i]->name_Ref->name_value <<endl;			
+
+				//Display Description
+				int outputSizeDesc=0;
+				description ** arrayDesc = arrayOutTModel[i]->description_Ref->get(outputSizeDesc);
+				cout << "\t Description ... " << endl;
+				for( int j = 0; j < outputSizeDesc; j++)
+				{
+					cout << "\t\t Description " << j+1 << " = " << arrayDesc[j]->description_value<< endl;
+				}
+				
+				if(arrayOutTModel[i]->overviewDoc_Ref){
+					cout << "\tOverviewDoc ... " << endl;
+					int OVDescSize=0;
+					description ** overviewDesc = arrayOutTModel[i]->overviewDoc_Ref->description_Ref->get(OVDescSize);
+					for(int k=0;k<OVDescSize;k++){
+						cout << "\t\t Description "<< k+1 << overviewDesc[k]->description_value << endl;
+					}
+					cout << "\t\toverviewURL = " << arrayOutTModel[i]->overviewDoc_Ref->overviewURL << endl;
+				}
+
+				if(arrayOutTModel[i]->categoryBag_Ref){
+						int KRArraySize = 0;
+						keyedReference ** KRArray = arrayOutTModel[i]->categoryBag_Ref->keyedReference_Ref->get(KRArraySize);
+						cout << "\t Category Bag Array Size = " << KRArraySize << endl;
+						for(int k=0;k<KRArraySize;k++){
+							cout << "\t\t Category Bag "<< k+1 << endl;
+							cout << "\t\t\ttModelKey_Ref = " << KRArray[k]->tModelKey_Ref << endl;
+							cout << "\t\t\ttKeyName = " <<KRArray[k]->keyName << endl;
+							cout << "\t\t\ttKeyValue = " << KRArray[k]->keyValue << endl;                		
+						}
+				}
+
+			}
+
+
+			/* Case2:
+			   In this we pass 2 tModelKeys and get back two tModels */
+			
+			arrayTModel = new tModelKey[2];        
+			for (i = 0; i < 2; i++)
+			 {
+				 arrayTModel[i] = new char[100];				 
+			 } 
+			 strcpy(arrayTModel[0],buffer);
+			 strcpy(arrayTModel[1],"uuid:52ed8652-e2f8-4816-bc71-f48748f471bf");
+			arrTModelKeys.set(arrayTModel,2);
+			cout << "\n\ninvoking get_tModelDetail ...\n";			
+			//Inquire *ws1 = new Inquire(endpoint); 
+			tModels = ws->get_tModelDetail(&arrTModelKeys, cpname);
+			outputSize = 0;
+			arrayOutTModel = tModels->get(outputSize);			
+			cout << "tModel_Array size = " <<  outputSize << endl;
+			for( i = 0; i < outputSize; i++ ) 
+			{
+				cout << "tModel " <<  i + 1 << endl;
+				cout << "\t tModel Key Ref = " << arrayOutTModel[i]->tModelKey_Ref<<endl;
+				cout << "\t Authorized Name = " << arrayOutTModel[i]->authorizedName << endl;
+				//Display name of tModel				
+				cout << "\t Name = " << arrayOutTModel[i]->name_Ref->name_value <<endl;			
+
+				//Display Description
+				int outputSizeDesc=0;
+				description ** arrayDesc = arrayOutTModel[i]->description_Ref->get(outputSizeDesc);
+				cout << "\t Description ... " << endl;
+				for( int j = 0; j < outputSizeDesc; j++)
+				{
+					cout << "\t\t Description " << j+1 << " = " << arrayDesc[j]->description_value<< endl;
+				}
+				
+				if(arrayOutTModel[i]->overviewDoc_Ref){
+					cout << "\tOverviewDoc ... " << endl;
+					int OVDescSize=0;
+					description ** overviewDesc = arrayOutTModel[i]->overviewDoc_Ref->description_Ref->get(OVDescSize);
+					for(int k=0;k<OVDescSize;k++){
+						cout << "\t\t Description "<< k+1 << overviewDesc[k]->description_value << endl;
+					}
+					cout << "\t\toverviewURL = " << arrayOutTModel[i]->overviewDoc_Ref->overviewURL << endl;
+				}
+
+				if(arrayOutTModel[i]->categoryBag_Ref){
+						int KRArraySize = 0;
+						keyedReference ** KRArray = arrayOutTModel[i]->categoryBag_Ref->keyedReference_Ref->get(KRArraySize);
+						cout << "\t Category Bag Array Size .. " << KRArraySize << endl;
+						for(int k=0;k<KRArraySize;k++){
+							cout << "\t Category Bag "<< k+1 << endl;
+							cout << "\t\ttModelKey_Ref = " << KRArray[k]->tModelKey_Ref << endl;
+							cout << "\t\ttKeyName = " <<KRArray[k]->keyName << endl;
+							cout << "\t\ttKeyValue = " << KRArray[k]->keyValue << endl;                		
+						}
+				}
+			}
+			/* Case 3:
+			   In this we pass a non existing tModel Key */
+
+			
+			arrayTModel = new tModelKey[1];        
+			for (i = 0; i < 1; i++)
+			 {
+				 arrayTModel[i] = new char[100];	
+				 strcpy(arrayTModel[0],"05e39405-6216-46bd-8f4c-dad67cda4c15");
+			 } 
+			 
+			
+			arrTModelKeys.set(arrayTModel,1);			
+			//Inquire *ws2 = new Inquire(endpoint); 
+			cout << "\n\ninvoking get_tModelDetail ...\n";
+			tModels = ws->get_tModelDetail(&arrTModelKeys, cpname);
+			outputSize = 0;
+			arrayOutTModel = tModels->get(outputSize);			
+			cout << "tModel_Array size = " << outputSize << endl;
+			for( i = 0; i < outputSize; i++ ) 
+			{
+				cout << "tModel " <<  i + 1 << endl;
+				cout << "\t tModel Key Ref = " << arrayOutTModel[i]->tModelKey_Ref<<endl;
+				cout << "\t Authorized Name = " << arrayOutTModel[i]->authorizedName << endl;
+				//Display name of tModel				
+				cout << "\t Name = " << arrayOutTModel[i]->name_Ref->name_value <<endl;			
+
+				//Display Description
+				int outputSizeDesc=0;
+				description ** arrayDesc = arrayOutTModel[i]->description_Ref->get(outputSizeDesc);
+				cout << "\t Description ... " << endl;
+				for( int j = 0; j < outputSizeDesc; j++)
+				{
+					cout << "\t\t Description " << j+1 << " = " << arrayDesc[j]->description_value<< endl;
+				}
+				
+				if(arrayOutTModel[i]->overviewDoc_Ref){
+					cout << "\tOverviewDoc ... " << endl;
+					int OVDescSize=0;
+					description ** overviewDesc = arrayOutTModel[i]->overviewDoc_Ref->description_Ref->get(OVDescSize);
+					for(int k=0;k<OVDescSize;k++){
+						cout << "\t\t Description "<< k+1 << overviewDesc[k]->description_value << endl;
+					}
+					cout << "\t\toverviewURL = " << arrayOutTModel[i]->overviewDoc_Ref->overviewURL << endl;
+				}
+
+				if(arrayOutTModel[i]->categoryBag_Ref){
+						int KRArraySize = 0;
+						keyedReference ** KRArray = arrayOutTModel[i]->categoryBag_Ref->keyedReference_Ref->get(KRArraySize);
+						cout << "\t Category Bag Array Size .. " << KRArraySize << endl;
+						for(int k=0;k<KRArraySize;k++){
+							cout << "\t Category Bag "<< k+1 << endl;
+							cout << "\t\ttModelKey_Ref = " << KRArray[k]->tModelKey_Ref << endl;
+							cout << "\t\ttKeyName = " <<KRArray[k]->keyName << endl;
+							cout << "\t\ttKeyValue = " << KRArray[k]->keyValue << endl;                		
+						}
+				}
+
+			}
+			bSuccess = true;
+		} 
+		catch(AxisException& e)
+		{
+			bool bSilent = false;
+
+			if( e.getExceptionCode() == CLIENT_TRANSPORT_OPEN_CONNECTION_FAILED)
+			{
+				if( iRetryIterationCount > 0)
+				{
+					bSilent = true;
+				}
+			}
+			else
+			{
+				iRetryIterationCount = 0;
+			}
+
+            if( !bSilent)
+			{
+        printf("Exception caught : %s\n", e.what());
+			}
+    }
+		iRetryIterationCount--;
+		} while( iRetryIterationCount > 0 && !bSuccess);
+
+    return 0;
+}