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 pr...@apache.org on 2006/04/21 12:15:10 UTC

svn commit: r395832 - in /webservices/axis/trunk/c/tests/auto_build/testcases: dynamic/DynamicCheckFaultTest/Calculator.cpp dynamic/DynamicGetAnyObjectSOAPFaultTest/Calculator.cpp server/cpp/Calculator.cpp

Author: prestonf
Date: Fri Apr 21 03:15:06 2006
New Revision: 395832

URL: http://svn.apache.org/viewcvs?rev=395832&view=rev
Log:
Changes made to client and server. Server so that it emulates the Java web server.  Client to handle output from different servers more generically.

Modified:
    webservices/axis/trunk/c/tests/auto_build/testcases/dynamic/DynamicCheckFaultTest/Calculator.cpp
    webservices/axis/trunk/c/tests/auto_build/testcases/dynamic/DynamicGetAnyObjectSOAPFaultTest/Calculator.cpp
    webservices/axis/trunk/c/tests/auto_build/testcases/server/cpp/Calculator.cpp

Modified: webservices/axis/trunk/c/tests/auto_build/testcases/dynamic/DynamicCheckFaultTest/Calculator.cpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/tests/auto_build/testcases/dynamic/DynamicCheckFaultTest/Calculator.cpp?rev=395832&r1=395831&r2=395832&view=diff
==============================================================================
--- webservices/axis/trunk/c/tests/auto_build/testcases/dynamic/DynamicCheckFaultTest/Calculator.cpp (original)
+++ webservices/axis/trunk/c/tests/auto_build/testcases/dynamic/DynamicCheckFaultTest/Calculator.cpp Fri Apr 21 03:15:06 2006
@@ -82,7 +82,15 @@
 			ISoapFault * sf=(ISoapFault *)m_pCall->checkFault("Fault","");
 			string s=sf->getFaultcode();
 			string str=sf->getFaultstring();
-			cout << "Fault Code = " << s.c_str() << endl;
+			
+			if( strchr( s.c_str(), '.') == NULL)
+			{
+				cout << "Fault Code = " << s.c_str() << ".generalException" << endl;
+			}
+			else
+			{
+				cout << "Fault Code = " << s.c_str() << endl;
+			}
 			cout << "Fault String = " << str.c_str()<< endl;	  
 		}catch(exception &e){
 			cout << e.what();

Modified: webservices/axis/trunk/c/tests/auto_build/testcases/dynamic/DynamicGetAnyObjectSOAPFaultTest/Calculator.cpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/tests/auto_build/testcases/dynamic/DynamicGetAnyObjectSOAPFaultTest/Calculator.cpp?rev=395832&r1=395831&r2=395832&view=diff
==============================================================================
--- webservices/axis/trunk/c/tests/auto_build/testcases/dynamic/DynamicGetAnyObjectSOAPFaultTest/Calculator.cpp (original)
+++ webservices/axis/trunk/c/tests/auto_build/testcases/dynamic/DynamicGetAnyObjectSOAPFaultTest/Calculator.cpp Fri Apr 21 03:15:06 2006
@@ -101,9 +101,114 @@
 	catch(AxisException& e)
 	{
 		any = (AnyType*)m_pCall->getAnyObject();
-		if(any!=NULL){
-				cout << any->_size<<endl;
+
+		if(any!=NULL)
+		{
+			cout << any->_size<<endl;
+
+// Check here for a particular syntax as different servers produce different output.
+			if( strstr( any->_array[0], "SOAP-ENV:Fault") != NULL)
+			{
+				cout << "<soapenv:Fault>";
+
+// faultcode
+				char *	pszToken = "<faultcode";
+				char *	pcToken = strstr( any->_array[0], pszToken);
+
+				if( pcToken != NULL)
+				{
+					pcToken += strlen( pszToken);
+
+					char *	pcValue = strchr( pcToken, '>');
+
+					if( pcValue != NULL)
+					{
+						pcValue++;
+
+						char *	pcValueFrom = pcValue;
+
+						while( *pcValue != '\0' && *pcValue != '<')
+						{
+							pcValue++;
+						}
+
+						if( *pcValue != '\0')
+						{
+							*pcValue = '\0';
+
+							cout << pszToken << " xmlns=\"\">";
+
+							if( strchr( pcValueFrom, '.') != NULL)
+							{
+								cout << pcValueFrom;
+							}
+							else
+							{
+								cout << pcValueFrom << ".generalException";
+							}
+
+							cout << "</" << (pszToken + 1) << ">";
+
+							*pcValue = '<';
+						}
+					}
+				}
+
+// faultstring
+				pszToken = "<faultstring";
+				pcToken = strstr( any->_array[0], pszToken);
+
+				if( pcToken != NULL)
+				{
+					pcToken += strlen( pszToken);
+
+					char *	pcValue = strchr( pcToken, '>');
+
+					if( pcValue != NULL)
+					{
+						pcValue++;
+
+						char *	pcValueFrom = pcValue;
+
+						while( *pcValue != '\0' && *pcValue != '<')
+						{
+							pcValue++;
+						}
+
+						if( *pcValue != '\0')
+						{
+							*pcValue = '\0';
+
+							cout << pszToken 
+								 << " xmlns=\"\">"
+								 << pcValueFrom
+								 << "</"
+								 << (pszToken + 1)
+								 << ">";
+
+							*pcValue = '<';
+						}
+						else
+						{
+							cout << "Couldn't find opening '</' after message for " << (pszToken + 1) << endl;
+						}
+					}
+					else
+					{
+						cout << "Couldn't find closing '>' for " << (pszToken + 1) << endl;
+					}
+				}
+				else
+				{
+					cout << "Couldn't find " << (pszToken + 1) << endl;
+				}
+
+				cout << "<detail xmlns=\"\"/></soapenv:Fault>" << endl;
+			}
+			else
+			{
 				cout << any->_array[0]<<endl;
+			}
 		}
 		//throw;
 	}
@@ -141,11 +246,11 @@
 	}
 	catch(exception& e)
 	{
-	    cout << "Unknown exception has occured" << endl;
+	    cout << "Unknown exception has occurred : " << e.what() << endl;
 	}
 	catch(...)
 	{
-		cout << "Unspecified exception has occured" << endl;
+		cout << "Unspecified exception has occurred" << endl;
 	}
 	cout << "----------------------------TEST COMPLETE------------------------------------" << endl;
 	return 0;

Modified: webservices/axis/trunk/c/tests/auto_build/testcases/server/cpp/Calculator.cpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/tests/auto_build/testcases/server/cpp/Calculator.cpp?rev=395832&r1=395831&r2=395832&view=diff
==============================================================================
--- webservices/axis/trunk/c/tests/auto_build/testcases/server/cpp/Calculator.cpp (original)
+++ webservices/axis/trunk/c/tests/auto_build/testcases/server/cpp/Calculator.cpp Fri Apr 21 03:15:06 2006
@@ -44,6 +44,10 @@
 int Calculator::div(int Value0, int Value1)
 {
 	if (Value1 == 0)
-        throw exception("Division by zero error");
-	return Value0/Value1;
+	{
+// This has been done to fit the existing JAVA implementations!
+		throw exception( "java.lang.ArithmeticException: / by zero");
+	}
+
+	return Value0 / Value1;
 }