You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by aj...@apache.org on 2006/09/26 17:04:36 UTC
svn commit: r450074 - in
/incubator/tuscany/cpp/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws:
Axis2Service.cpp WSServiceProxy.cpp
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: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org