You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2006/09/12 12:06:31 UTC
svn commit: r442549 - in /incubator/tuscany/cpp/sca:
runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/
samples/Calculator/sample.calculator/
samples/PythonCalculator/sample.calculator/
samples/RubyCalculator/sample.calculator/
Author: jsdelfino
Date: Tue Sep 12 03:06:30 2006
New Revision: 442549
URL: http://svn.apache.org/viewvc?view=rev&rev=442549
Log:
Changed WSServiceProxy to use the actual type of the data returned by a service invocation, instead of the type specified in the WSDL. This will allow a service to return a long for example and let SDO convert it to an int if the WSDL/XSD specified an int.
Modified:
incubator/tuscany/cpp/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSServiceProxy.cpp
incubator/tuscany/cpp/sca/samples/Calculator/sample.calculator/sample.calculator.composite
incubator/tuscany/cpp/sca/samples/PythonCalculator/sample.calculator/sample.calculator.composite
incubator/tuscany/cpp/sca/samples/RubyCalculator/sample.calculator/sample.calculator.composite
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=442549&r1=442548&r2=442549
==============================================================================
--- 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 12 03:06:30 2006
@@ -471,103 +471,72 @@
for(int i=0; i<pl.size(); i++)
{
const char* name = pl[i].getName();
-
- switch (pl[i].getTypeEnum())
+
+ Operation::ParameterType resultType = operation.getReturnType();
+ switch(resultType)
{
- case Type::BooleanType:
+ case Operation::BOOL:
{
- bool* boolData = (bool*)operation.getReturnValue();
- //printf("outputDataObject has BooleanType named %s with value %d\n", name, *boolData);
- outputDataObject->setBoolean(pl[i], *boolData);
- }
- break;
- case Type::ByteType:
- {
- char* byteData = (char*) operation.getReturnValue();
- //printf("outputDataObject has ByteType named %s with value %c (#%d)\n", name, *byteData, *byteData);
- outputDataObject->setByte(pl[i], *byteData);
- }
- break;
- case Type::BytesType:
- {
- const char** bytesData = (const char**) operation.getReturnValue();
- // TODO This looks for the first NULL byte - this may not be the full length of the data...
- int len = 0;
- while((*bytesData)[len] != 0)
- {
- len++;
- }
- //printf("outputDataObject has BytesType named %s with value %s and length %d\n", name, *bytesData, len);
- outputDataObject->setBytes(pl[i], *bytesData, len);
- }
- break;
- case Type::CharacterType:
- {
- wchar_t* charData = (wchar_t*) operation.getReturnValue();
- //printf("outputDataObject has CharacterType named %s with value %s\n", name, charData);
- outputDataObject->setCharacter(pl[i], *charData);
- }
- break;
- case Type::DoubleType:
- {
- long double* doubleData = (long double*) operation.getReturnValue();
- //printf("outputDataObject has DoubleType named %s with value %f\n", name, *doubleData);
- outputDataObject->setDouble(pl[i], *doubleData);
- }
- break;
- case Type::FloatType:
- {
- float* floatData = (float*) operation.getReturnValue();
- //printf("outputDataObject has FloatType named %s with value %f \n", name, *floatData);
- outputDataObject->setFloat(pl[i], *floatData);
- }
- break;
- case Type::IntegerType:
- {
- long* intData = (long*) operation.getReturnValue();
- //printf("outputDataObject has IntegerType named %s with value %d\n", name, *intData);
- outputDataObject->setInteger(pl[i], *intData);
- }
- break;
- case Type::ShortType:
- {
- short* shortData = (short*) operation.getReturnValue();
- //printf("outputDataObject has ShortType named %s with value %d\n", name, *shortData);
- outputDataObject->setShort(pl[i], *shortData);
- }
- break;
- case Type::StringType:
- {
- const char** stringData = (const char**) operation.getReturnValue();
- //printf("outputDataObject has StringType named %s with value %s\n", name, *stringData);
- outputDataObject->setCString(pl[i], *stringData);
- }
- break;
- case Type::DataObjectType:
- {
- DataObjectPtr* dataObjectData = (DataObjectPtr*) operation.getReturnValue();
- //printf("outputDataObject has DataObjectType named %s with value (%d)\n", name, (*dataObjectData));
- outputDataObject->setDataObject(pl[i], *dataObjectData);
- }
- break;
- case Type::DateType:
- LOGERROR_1(0, "SDO DateType return values are not yet supported (%s)", name);
- break;
- case Type::LongType:
- LOGERROR_1(0, "SDO LongType (int64_t) return values are not yet supported (%s)", name);
- break;
- case Type::UriType:
- LOGERROR_1(0, "SDO UriType return values are not yet supported (%s)", name);
- break;
- case Type::BigDecimalType:
- LOGERROR_1(0, "SDO BigDecimalType return values are not yet supported (%s)", name);
- break;
- case Type::BigIntegerType:
- LOGERROR_1(0, "SDO BigIntegerType return values are not yet supported (%s)", name);
- break;
+ outputDataObject->setBoolean(pl[i], *(bool*)operation.getReturnValue());
+ break;
+ }
+ case Operation::SHORT:
+ {
+ outputDataObject->setShort(pl[i], *(short*)operation.getReturnValue());
+ break;
+ }
+ case Operation::LONG:
+ {
+ outputDataObject->setLong(pl[i], *(long*)operation.getReturnValue());
+ break;
+ }
+ case Operation::USHORT:
+ {
+ outputDataObject->setInteger(pl[i], *(unsigned short*)operation.getReturnValue());
+ break;
+ }
+ case Operation::ULONG:
+ {
+ outputDataObject->setInteger(pl[i], *(unsigned long*)operation.getReturnValue());
+ break;
+ }
+ case Operation::FLOAT:
+ {
+ outputDataObject->setFloat(pl[i], *(float*)operation.getReturnValue());
+ break;
+ }
+ case Operation::DOUBLE:
+ {
+ outputDataObject->setDouble(pl[i], *(double*)operation.getReturnValue());
+ break;
+ }
+ case Operation::LONGDOUBLE:
+ {
+ outputDataObject->setDouble(pl[i], *(long double*)operation.getReturnValue());
+ break;
+ }
+ case Operation::CHARS:
+ {
+ outputDataObject->setCString(pl[i], *(char**)operation.getReturnValue());
+ break;
+ }
+ case Operation::STRING:
+ {
+ outputDataObject->setCString(pl[i], (*(string*)operation.getReturnValue()).c_str());
+ break;
+ }
+ case Operation::DATAOBJECT:
+ {
+ outputDataObject->setDataObject(pl[i], *(DataObjectPtr*)operation.getReturnValue());
+ break;
+ }
default:
- LOGERROR_1(0, "Unknown SDO type return value named %s has been found. Unknown types are not yet supported", name);
- }
+ {
+ string msg = "Unsupported parameter type";
+ msg += resultType;
+ throw msg.c_str();
+ }
+ }
}
}
Modified: incubator/tuscany/cpp/sca/samples/Calculator/sample.calculator/sample.calculator.composite
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/samples/Calculator/sample.calculator/sample.calculator.composite?view=diff&rev=442549&r1=442548&r2=442549
==============================================================================
--- incubator/tuscany/cpp/sca/samples/Calculator/sample.calculator/sample.calculator.composite (original)
+++ incubator/tuscany/cpp/sca/samples/Calculator/sample.calculator/sample.calculator.composite Tue Sep 12 03:06:30 2006
@@ -19,8 +19,8 @@
name="sample.calculator">
<service name="CalculatorService">
- <interface.wsdl interface="http://sample/calculator#wsdl.interface(CalculatorPortType)"/>
- <binding.ws port="http://sample/calculator#wsdl.endpoint(CalculatorService/CalculatorPort)"/>
+ <interface.wsdl interface="http://sample/calculator#wsdl.interface(Calculator)"/>
+ <binding.ws/>
<reference>CalculatorComponent/CalculatorService</reference>
</service>
Modified: incubator/tuscany/cpp/sca/samples/PythonCalculator/sample.calculator/sample.calculator.composite
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/samples/PythonCalculator/sample.calculator/sample.calculator.composite?view=diff&rev=442549&r1=442548&r2=442549
==============================================================================
--- incubator/tuscany/cpp/sca/samples/PythonCalculator/sample.calculator/sample.calculator.composite (original)
+++ incubator/tuscany/cpp/sca/samples/PythonCalculator/sample.calculator/sample.calculator.composite Tue Sep 12 03:06:30 2006
@@ -19,8 +19,8 @@
name="sample.calculator">
<service name="CalculatorService">
- <interface.wsdl interface="http://sample/calculator#wsdl.interface(CalculatorPortType)"/>
- <binding.ws port="http://sample/calculator#wsdl.endpoint(CalculatorService/CalculatorPort)"/>
+ <interface.wsdl interface="http://sample/calculator#wsdl.interface(Calculator)"/>
+ <binding.ws/>
<reference>CalculatorComponent/CalculatorService</reference>
</service>
Modified: incubator/tuscany/cpp/sca/samples/RubyCalculator/sample.calculator/sample.calculator.composite
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/samples/RubyCalculator/sample.calculator/sample.calculator.composite?view=diff&rev=442549&r1=442548&r2=442549
==============================================================================
--- incubator/tuscany/cpp/sca/samples/RubyCalculator/sample.calculator/sample.calculator.composite (original)
+++ incubator/tuscany/cpp/sca/samples/RubyCalculator/sample.calculator/sample.calculator.composite Tue Sep 12 03:06:30 2006
@@ -19,8 +19,8 @@
name="sample.calculator">
<service name="CalculatorService">
- <interface.wsdl interface="http://sample/calculator#wsdl.interface(CalculatorPortType)"/>
- <binding.ws port="http://sample/calculator#wsdl.endpoint(CalculatorService/CalculatorPort)"/>
+ <interface.wsdl interface="http://sample/calculator#wsdl.interface(Calculator)"/>
+ <binding.ws/>
<reference>CalculatorComponent/CalculatorService</reference>
</service>
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org