Author: ajborley
Date: Tue Sep 26 08:04:35 2006
New Revision: 450074
URL: http://svn.apache.org/viewvc?view=rev&rev=450074
Log:
Added checks for NULL/missing data and for initialisation problems
Modified:
incubator/tuscany/cpp/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2Service.cpp
incubator/tuscany/cpp/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSServiceProxy.cpp
Modified:
incubator/tuscany/cpp/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2Service.cpp
URL:
http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2Service.cpp?view=diff&rev=450074&r1=450073&r2=450074
==============================================================================
---
incubator/tuscany/cpp/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2Service.cpp
(original)
+++
incubator/tuscany/cpp/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2Service.cpp
Tue Sep 26 08:04:35 2006
@@ -252,7 +252,11 @@
initTuscanyRuntime(env, rootParam, "",
service.c_str());
}
-
//Utils::printTypes(compositeServiceProxy->getDataFactory());
+ if(!compositeService)
+ {
+ AXIS2_LOG_ERROR((env)->log, AXIS2_LOG_SI,
"Axis2Service_invoke: Tuscany initialisation failed");
+ return 0;
+ }
DataFactoryPtr dataFactory =
compositeService->getComposite()->getDataFactory();
if (dataFactory == 0)
@@ -330,7 +334,6 @@
if (wsdlNamespace == "")
{
-
// Create a default document literal wrapped WSDL
operation
wsdlNamespace = compositeService->getName();
wsdlOperation = WSDLOperation();
@@ -356,8 +359,16 @@
// Convert the SOAP body to an SDO DataObject
AxiomHelper* axiomHelper = AxiomHelper::getHelper();
-
- DataObjectPtr inputBodyDataObject =
axiomHelper->toSdo(body, dataFactory);
+ DataObjectPtr inputBodyDataObject = NULL;
+
+ try
+ {
+ inputBodyDataObject = axiomHelper->toSdo(body,
dataFactory);
+ }
+ catch(SDORuntimeException &ex)
+ {
+ AXIS2_LOG_ERROR((env)->log, AXIS2_LOG_SI,
"Axis2Service_invoke: SDORuntimeException thrown: %s", ex.getMessageText());
+ }
if(!inputBodyDataObject)
{
@@ -389,6 +400,7 @@
// Dispatch to the WS proxy
WSServiceProxy* proxy =
(WSServiceProxy*)binding->getServiceProxy();
+
DataObjectPtr outputDataObject =
proxy->invoke(wsdlOperation, inputDataObject);
if(!outputDataObject)
Modified:
incubator/tuscany/cpp/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSServiceProxy.cpp
URL:
http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSServiceProxy.cpp?view=diff&rev=450074&r1=450073&r2=450074
==============================================================================
---
incubator/tuscany/cpp/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSServiceProxy.cpp
(original)
+++
incubator/tuscany/cpp/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSServiceProxy.cpp
Tue Sep 26 08:04:35 2006
@@ -216,7 +216,16 @@
break;
case Type::StringType:
{
- string* stringData = new
string(inputDataObject->getCString(pl[i]));
+ string* stringData;
+ if(inputDataObject->isSet(pl[i]))
+ {
+ stringData = new
string(inputDataObject->getCString(pl[i]));
+ }
+ else
+ {
+ // The data is not set, so pass an
empty string as the parameter
+ stringData = new string();
+ }
operation.addParameter(stringData);
}
break;
@@ -523,17 +532,33 @@
}
case Operation::CHARS:
{
- outputDataObject->setCString(pl[i],
*(char**)operation.getReturnValue());
+ if(*(char**)operation.getReturnValue() != NULL)
+ {
+ outputDataObject->setCString(pl[i],
*(char**)operation.getReturnValue());
+ }
+ else
+ {
+ LOGINFO_1(4, "Return value is NULL, so
leaving property %s unset", pl[i].getName());
+ }
break;
}
case Operation::STRING:
{
- outputDataObject->setCString(pl[i],
(*(string*)operation.getReturnValue()).c_str());
+ outputDataObject->setCString(pl[i],
(*(string*)operation.getReturnValue()).c_str());
break;
}
case Operation::DATAOBJECT:
{
- outputDataObject->setDataObject(pl[i],
*(DataObjectPtr*)operation.getReturnValue());
+
+ if(*(DataObjectPtr*)operation.getReturnValue()
!= NULL)
+ {
+ outputDataObject->setDataObject(pl[i],
*(DataObjectPtr*)operation.getReturnValue());
+ }
+ else
+ {
+ LOGINFO_1(4, "Return value is NULL, so
leaving property %s unset", pl[i].getName());
+ }
+
break;
}
default:
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]