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 da...@apache.org on 2004/05/31 05:47:49 UTC
cvs commit: ws-axis/c/src/soap SoapDeSerializer.cpp SoapSerializer.cpp
damitha 2004/05/30 20:47:49
Modified: c/samples/client/doclitfault MathOps.cpp
c/samples/client/rpcfault MathOps.cpp
c/samples/server/doclitfault DivByZeroFault.cpp
MathOpsWrapper.cpp
c/src/soap SoapDeSerializer.cpp SoapSerializer.cpp
Log:
In the process of exception handling and fault mapping
Revision Changes Path
1.4 +21 -18 ws-axis/c/samples/client/doclitfault/MathOps.cpp
Index: MathOps.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/samples/client/doclitfault/MathOps.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- MathOps.cpp 28 May 2004 03:20:40 -0000 1.3
+++ MathOps.cpp 31 May 2004 03:47:49 -0000 1.4
@@ -53,7 +53,7 @@
{
if(AXIS_SUCCESS == m_pCall->checkMessage("divResponse", "http://soapinterop.org/wsdl"))
{
- Ret = m_pCall->getElementAsInt("addReturn", 0);
+ Ret = m_pCall->getElementAsInt("divReturn", 0);
}
}
}
@@ -65,29 +65,32 @@
cFaultcode = m_pCall->getElementAsString("faultcode", 0);
cFaultstring = m_pCall->getElementAsString("faultstring", 0);
cFaultactor = m_pCall->getElementAsString("faultactor", 0);
- if(AXIS_SUCCESS == m_pCall->checkFault("faultdetail",
- "http://localhost/axis/MathOps/types"))
+ if(0 != strcmp("service_exception", cFaultstring))
{
- m_pCall->getFaultDetail(&cFaultdetail);
+ cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
throw AxisException(cFaultdetail);
}
else
{
- DivByZeroFault* pFaultDetail = NULL;
- pFaultDetail = (DivByZeroFault*)m_pCall->
- getCmplxObject((void*) Axis_DeSerialize_DivByZeroFault,
- (void*) Axis_Create_DivByZeroFault,
- (void*) Axis_Delete_DivByZeroFault,"faultstruct", 0);
+ if(AXIS_SUCCESS == m_pCall->checkFault("faultdetail",
+ "http://localhost/axis/MathOps/types"))
+ {
+ DivByZeroFault* pFaultDetail = NULL;
+ pFaultDetail = (DivByZeroFault*)m_pCall->
+ getCmplxObject((void*) Axis_DeSerialize_DivByZeroFault,
+ (void*) Axis_Create_DivByZeroFault,
+ (void*) Axis_Delete_DivByZeroFault,"DivByZeroException", 0);
- char* temp = pFaultDetail->varString;
- printf("%s\n", temp);
- /*start user code*/
- printf("faultcode:%s\n", cFaultcode);
- printf("faultstring:%s\n", cFaultstring);
- printf("faultactor:%s\n", cFaultactor);
- /*end user code*/
- m_pCall->unInitialize();
- throw AxisDivByZeroException(pFaultDetail);
+ char* temp = pFaultDetail->varString;
+ printf("%s\n", temp);
+ /*start user code*/
+ printf("faultcode:%s\n", cFaultcode);
+ printf("faultstring:%s\n", cFaultstring);
+ printf("faultactor:%s\n", cFaultactor);
+ /*end user code*/
+ m_pCall->unInitialize();
+ throw AxisDivByZeroException(pFaultDetail);
+ }
}
}
else throw;
1.8 +19 -16 ws-axis/c/samples/client/rpcfault/MathOps.cpp
Index: MathOps.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/samples/client/rpcfault/MathOps.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- MathOps.cpp 26 May 2004 06:27:16 -0000 1.7
+++ MathOps.cpp 31 May 2004 03:47:49 -0000 1.8
@@ -74,29 +74,32 @@
cFaultcode = m_pCall->getElementAsString("faultcode", 0);
cFaultstring = m_pCall->getElementAsString("faultstring", 0);
cFaultactor = m_pCall->getElementAsString("faultactor", 0);
- if(AXIS_SUCCESS == m_pCall->checkFault("faultdetail",
- "http://localhost/axis/MathOps"))
+ if(0 != strcmp("service_exception", cFaultstring))
{
- m_pCall->getFaultDetail(&cFaultdetail);
+ cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
throw AxisException(cFaultdetail);
}
else
{
- SOAPStructFault* pFaultDetail = NULL;
- pFaultDetail = (SOAPStructFault*)m_pCall->
+ if(AXIS_SUCCESS == m_pCall->checkFault("faultdetail",
+ "http://localhost/axis/MathOps"))
+ {
+ SOAPStructFault* pFaultDetail = NULL;
+ pFaultDetail = (SOAPStructFault*)m_pCall->
getCmplxObject((void*) Axis_DeSerialize_SOAPStructFault,
- (void*) Axis_Create_SOAPStructFault,
- (void*) Axis_Delete_SOAPStructFault,"faultstruct", 0);
+ (void*) Axis_Create_SOAPStructFault,
+ (void*) Axis_Delete_SOAPStructFault,"faultstruct", 0);
- char* temp = pFaultDetail->varString;
- printf("%s\n", temp);
- /*start user code*/
- printf("faultcode:%s\n", cFaultcode);
- printf("faultstring:%s\n", cFaultstring);
- printf("faultactor:%s\n", cFaultactor);
- /*end user code*/
- m_pCall->unInitialize();
- throw AxisDivByZeroException(pFaultDetail);
+ char* temp = pFaultDetail->varString;
+ printf("%s\n", temp);
+ /*start user code*/
+ printf("faultcode:%s\n", cFaultcode);
+ printf("faultstring:%s\n", cFaultstring);
+ printf("faultactor:%s\n", cFaultactor);
+ /*end user code*/
+ m_pCall->unInitialize();
+ throw AxisDivByZeroException(pFaultDetail);
+ }
}
}
else throw;
1.3 +3 -13 ws-axis/c/samples/server/doclitfault/DivByZeroFault.cpp
Index: DivByZeroFault.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/samples/server/doclitfault/DivByZeroFault.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DivByZeroFault.cpp 27 May 2004 11:50:41 -0000 1.2
+++ DivByZeroFault.cpp 31 May 2004 03:47:49 -0000 1.3
@@ -13,23 +13,13 @@
*/
int Axis_Serialize_DivByZeroFault(DivByZeroFault* param, IWrapperSoapSerializer* pSZ, bool bArray = false)
{
- if (bArray)
- {
- pSZ->serialize("<", Axis_TypeName_DivByZeroFault, ">", NULL);
- }
- else
- {
- const AxisChar* sPrefix = pSZ->getNamespacePrefix(Axis_URI_DivByZeroFault);
- pSZ->serialize("<", Axis_TypeName_DivByZeroFault, " xsi:type=\"", sPrefix, ":",
- Axis_TypeName_DivByZeroFault, "\" xmlns:", sPrefix, "=\"",
- Axis_URI_DivByZeroFault, "\">", NULL);
- }
-
+ /* first serialize attributes if any*/
+ pSZ->serialize(">", 0);
+ /* then serialize elements if any*/
pSZ->serializeAsElement("varString", (void*)&(param->varString), XSD_STRING);
pSZ->serializeAsElement("varInt", (void*)&(param->varInt), XSD_INT);
pSZ->serializeAsElement("varFloat", (void*)&(param->varFloat), XSD_FLOAT);
- pSZ->serialize("</", Axis_TypeName_DivByZeroFault, ">", NULL);
return AXIS_SUCCESS;
}
1.4 +1 -2 ws-axis/c/samples/server/doclitfault/MathOpsWrapper.cpp
Index: MathOpsWrapper.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/samples/server/doclitfault/MathOpsWrapper.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- MathOpsWrapper.cpp 28 May 2004 03:19:35 -0000 1.3
+++ MathOpsWrapper.cpp 31 May 2004 03:47:49 -0000 1.4
@@ -87,8 +87,7 @@
if(pObjFault)
pIWSSZ->addFaultDetail(pObjFault, (void*)Axis_Serialize_DivByZeroFault,
- (void*)Axis_Delete_DivByZeroFault, "DivByZeroException",
- Axis_URI_DivByZeroFault);
+ (void*)Axis_Delete_DivByZeroFault, "DivByZeroException", "");
throw;
}
1.54 +13 -11 ws-axis/c/src/soap/SoapDeSerializer.cpp
Index: SoapDeSerializer.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/SoapDeSerializer.cpp,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -r1.53 -r1.54
--- SoapDeSerializer.cpp 26 May 2004 07:23:49 -0000 1.53
+++ SoapDeSerializer.cpp 31 May 2004 03:47:49 -0000 1.54
@@ -321,17 +321,10 @@
}
else
{
- char* tempChar = getElementAsString("faultdetail", 0);
- if(0 == tempChar)
- {
- m_nStatus = AXIS_SUCCESS;
- return AXIS_FAIL;
- }
- else
- {
- m_pcFaultDetail = tempChar;
- return AXIS_SUCCESS;
- }
+ //skip faultdetail
+ m_pParser->next();
+ m_nStatus = AXIS_SUCCESS;
+ return AXIS_SUCCESS;
}
@@ -1380,18 +1373,25 @@
}
else
{
+ AXISTRACE1("came1", INFO);
if (!m_pNode)
+ AXISTRACE1("came1", INFO);
/* if there is an unprocessed node that may be one left from last
* array deserialization
*/
m_pNode = m_pParser->next();
/* wrapper node without type info Ex: <i> */
if (!m_pNode) return ret;
+ AXISTRACE1("came2", INFO);
+ AXISTRACE2("pName", pName,INFO);
+ AXISTRACE2("pName", m_pNode->m_pchNameOrValue,INFO);
if (0 == strcmp(pName, m_pNode->m_pchNameOrValue))
{
+ AXISTRACE1("came3", INFO);
m_pNode = m_pParser->next(true); /* charactor node */
if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
{
+ AXISTRACE1("came4", INFO);
ret = strtol(m_pNode->m_pchNameOrValue, &m_pEndptr, 10);
m_pNode = m_pParser->next(); /* skip end element node too */
m_pNode = NULL;
@@ -1403,6 +1403,7 @@
}
else
{
+ AXISTRACE1("came5", INFO);
/* simpleType may have xsi:nill="true" */
m_pNode = NULL;
/* this is important in doc/lit style when deserializing
@@ -1413,6 +1414,7 @@
}
else
{
+ AXISTRACE1("came6", INFO);
return ret;
/* Not a must : m_nStatus = AXIS_FAIL; unexpected SOAP stream */
}
1.50 +1 -1 ws-axis/c/src/soap/SoapSerializer.cpp
Index: SoapSerializer.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/SoapSerializer.cpp,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -r1.49 -r1.50
--- SoapSerializer.cpp 26 May 2004 06:27:16 -0000 1.49
+++ SoapSerializer.cpp 31 May 2004 03:47:49 -0000 1.50
@@ -451,7 +451,7 @@
pSoapFault->setPrefix(getNamespacePrefix(sURI));
pSoapFault->setUri(sURI);
pSoapFault->setFaultcode("Server");
- pSoapFault->setFaultstring("Service thrown exception");
+ pSoapFault->setFaultstring("service_exception");
pSoapFault->setFaultactor("http://endpoint/url");
return AXIS_SUCCESS;