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