You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by ro...@apache.org on 2007/07/06 17:19:24 UTC
svn commit: r553922 - in /incubator/tuscany/cpp/sca: VSExpress/tuscany_sca/
VSExpress/tuscany_sca/tuscany_sca/ runtime/core/src/
runtime/core/src/tuscany/sca/model/
runtime/extensions/rest/service/httpd/src/tuscany/sca/rest/
runtime/extensions/ws/refer...
Author: robbinspg
Date: Fri Jul 6 08:19:23 2007
New Revision: 553922
URL: http://svn.apache.org/viewvc?view=rev&rev=553922
Log:
TUSCANY-1402 Apply Brady Johnson's patch + update to VSExpress project to include new files
Modified:
incubator/tuscany/cpp/sca/VSExpress/tuscany_sca/tuscany_sca.sln
incubator/tuscany/cpp/sca/VSExpress/tuscany_sca/tuscany_sca/tuscany_sca.vcproj
incubator/tuscany/cpp/sca/runtime/core/src/Makefile.am
incubator/tuscany/cpp/sca/runtime/core/src/tuscany/sca/model/WSDLDefinition.cpp
incubator/tuscany/cpp/sca/runtime/core/src/tuscany/sca/model/WSDLOperation.cpp
incubator/tuscany/cpp/sca/runtime/core/src/tuscany/sca/model/WSDLOperation.h
incubator/tuscany/cpp/sca/runtime/extensions/rest/service/httpd/src/tuscany/sca/rest/ModREST.cpp
incubator/tuscany/cpp/sca/runtime/extensions/rest/service/httpd/src/tuscany/sca/rest/RESTServiceProxy.cpp
incubator/tuscany/cpp/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/Axis2Client.cpp
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/VSExpress/tuscany_sca/tuscany_sca.sln
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/VSExpress/tuscany_sca/tuscany_sca.sln?view=diff&rev=553922&r1=553921&r2=553922
==============================================================================
--- incubator/tuscany/cpp/sca/VSExpress/tuscany_sca/tuscany_sca.sln (original)
+++ incubator/tuscany/cpp/sca/VSExpress/tuscany_sca/tuscany_sca.sln Fri Jul 6 08:19:23 2007
@@ -109,8 +109,10 @@
{AF06B4A8-F3F4-41BE-B12E-AE7D421BF0A2}.Release|Win32.ActiveCfg = Release|Win32
{AF06B4A8-F3F4-41BE-B12E-AE7D421BF0A2}.Release|Win32.Build.0 = Release|Win32
{E35EC8A6-A7CA-49EC-8C23-AC186F9D27C2}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E35EC8A6-A7CA-49EC-8C23-AC186F9D27C2}.Debug|Win32.Build.0 = Debug|Win32
{E35EC8A6-A7CA-49EC-8C23-AC186F9D27C2}.Release|Win32.ActiveCfg = Release|Win32
{B5630E91-D747-4520-8089-0EAAB76BE600}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B5630E91-D747-4520-8089-0EAAB76BE600}.Debug|Win32.Build.0 = Debug|Win32
{B5630E91-D747-4520-8089-0EAAB76BE600}.Release|Win32.ActiveCfg = Release|Win32
{4E16D015-6578-4D78-8DF0-82A98DB56CC3}.Debug|Win32.ActiveCfg = Debug|Win32
{4E16D015-6578-4D78-8DF0-82A98DB56CC3}.Debug|Win32.Build.0 = Debug|Win32
@@ -125,6 +127,7 @@
{13E1E4E1-0891-44C2-A9BF-1F6B5F2D81BF}.Release|Win32.ActiveCfg = Release|Win32
{13E1E4E1-0891-44C2-A9BF-1F6B5F2D81BF}.Release|Win32.Build.0 = Release|Win32
{C255EE00-A218-4A7F-8767-C3B2F24E60B1}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C255EE00-A218-4A7F-8767-C3B2F24E60B1}.Debug|Win32.Build.0 = Debug|Win32
{C255EE00-A218-4A7F-8767-C3B2F24E60B1}.Release|Win32.ActiveCfg = Release|Win32
{6D7429AA-A268-4F21-B93B-A61776C9C96F}.Debug|Win32.ActiveCfg = Debug|Win32
{6D7429AA-A268-4F21-B93B-A61776C9C96F}.Debug|Win32.Build.0 = Debug|Win32
Modified: incubator/tuscany/cpp/sca/VSExpress/tuscany_sca/tuscany_sca/tuscany_sca.vcproj
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/VSExpress/tuscany_sca/tuscany_sca/tuscany_sca.vcproj?view=diff&rev=553922&r1=553921&r2=553922
==============================================================================
--- incubator/tuscany/cpp/sca/VSExpress/tuscany_sca/tuscany_sca/tuscany_sca.vcproj (original)
+++ incubator/tuscany/cpp/sca/VSExpress/tuscany_sca/tuscany_sca/tuscany_sca.vcproj Fri Jul 6 08:19:23 2007
@@ -816,6 +816,14 @@
>
</File>
<File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\WSDLMessagePart.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\WSDLMessagePart.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\WSDLOperation.cpp"
>
<FileConfiguration
Modified: incubator/tuscany/cpp/sca/runtime/core/src/Makefile.am
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/runtime/core/src/Makefile.am?view=diff&rev=553922&r1=553921&r2=553922
==============================================================================
--- incubator/tuscany/cpp/sca/runtime/core/src/Makefile.am (original)
+++ incubator/tuscany/cpp/sca/runtime/core/src/Makefile.am Fri Jul 6 08:19:23 2007
@@ -56,6 +56,7 @@
tuscany/sca/model/Wire.cpp \
tuscany/sca/model/WSDLDefinition.cpp \
tuscany/sca/model/WSDLInterface.cpp \
+tuscany/sca/model/WSDLMessagePart.cpp \
tuscany/sca/model/WSDLOperation.cpp \
tuscany/sca/util/DefaultLogWriter.cpp \
tuscany/sca/util/File.cpp \
Modified: incubator/tuscany/cpp/sca/runtime/core/src/tuscany/sca/model/WSDLDefinition.cpp
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/runtime/core/src/tuscany/sca/model/WSDLDefinition.cpp?view=diff&rev=553922&r1=553921&r2=553922
==============================================================================
--- incubator/tuscany/cpp/sca/runtime/core/src/tuscany/sca/model/WSDLDefinition.cpp (original)
+++ incubator/tuscany/cpp/sca/runtime/core/src/tuscany/sca/model/WSDLDefinition.cpp Fri Jul 6 08:19:23 2007
@@ -413,8 +413,8 @@
string soapAction = "";
bool documentStyle = true;
bool wrappedStyle = true;
- // TODO there should be a useEncoded for input AND output
- bool useEncoded = false;
+ bool useEncodedInput = false;
+ bool useEncodedOutput = false;
WSDLOperation::soapVersion soapVer = WSDLOperation::SOAP11;
string opType = bindingOp->getType().getURI();
@@ -442,40 +442,53 @@
string use = bindingOp->getCString("input/body/use");
if (use == "encoded")
{
- useEncoded = true;
+ useEncodedInput = true;
}
- // Get the request message type from the PortType
- string inputMessageType( portTypeOp->getCString("input/message") );
+ use = bindingOp->getCString("output/body/use");
+ if (use == "encoded")
+ {
+ useEncodedOutput = true;
+ }
- DataObjectPtr wsMessageIn = findMessage(inputMessageType);
+ // Get the request message type from the PortType
+ DataObjectPtr wsMessageIn =
+ findMessage(portTypeOp->getCString("input/message"));
if (!wsMessageIn)
{
stringstream errMessage;
errMessage
- << "unable to find input message "
- << inputMessageType
+ << "unable to find PortType input message "
+ << portTypeOp->getCString("input/message")
<< " in the wsdl definition";
throwException(SystemConfigurationException, errMessage.str().c_str());
}
-
- string requestType(wsMessageIn->getList("part")[0]->getCString("element"));
+ string inputMessageType( wsMessageIn->getCString("name") );
+ // If it doesnt have a namespace prefix, add the target namespace
+ if (inputMessageType.find("#") == string::npos)
+ {
+ inputMessageType.insert(0, (getNamespace() + "#") );
+ }
// Get the response message type from the PortType
- string outputMessageType( portTypeOp->getCString("output/message") );
-
- DataObjectPtr wsMessageOut = findMessage(outputMessageType);
+ DataObjectPtr wsMessageOut =
+ findMessage(portTypeOp->getCString("output/message"));
if (!wsMessageOut)
{
+ // TODO this is ok for one way operations, right?
stringstream errMessage;
errMessage
- << "unable to find output message "
- << outputMessageType
+ << "unable to find PortType output message "
+ << portTypeOp->getCString("output/message")
<< " in the wsdl definition";
throwException(SystemConfigurationException, errMessage.str().c_str());
}
-
- string responseType(wsMessageOut->getList("part")[0]->getCString("element"));
+ string outputMessageType( wsMessageOut->getCString("name") );
+ // If it doesnt have a namespace prefix, add the target namespace
+ if (outputMessageType.find("#") == string::npos)
+ {
+ outputMessageType.insert(0, (getNamespace() + "#") );
+ }
WSDLOperation wsdlOp;
wsdlOp.setOperationName(operationName);
@@ -484,9 +497,12 @@
wsdlOp.setSoapVersion(soapVer);
wsdlOp.setDocumentStyle(documentStyle);
wsdlOp.setWrappedStyle(wrappedStyle);
- wsdlOp.setEncoded(useEncoded);
- wsdlOp.setInputType(requestType);
- wsdlOp.setOutputType(responseType);
+ wsdlOp.setInputEncoded(useEncodedInput);
+ wsdlOp.setOutputEncoded(useEncodedOutput);
+ wsdlOp.setInputMessageType(inputMessageType);
+ wsdlOp.setOutputMessageType(outputMessageType);
+ wsdlOp.setInputMessage(wsMessageIn);
+ wsdlOp.setOutputMessage(wsMessageOut);
operationMap[ operationName ] = wsdlOp;
Modified: incubator/tuscany/cpp/sca/runtime/core/src/tuscany/sca/model/WSDLOperation.cpp
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/runtime/core/src/tuscany/sca/model/WSDLOperation.cpp?view=diff&rev=553922&r1=553921&r2=553922
==============================================================================
--- incubator/tuscany/cpp/sca/runtime/core/src/tuscany/sca/model/WSDLOperation.cpp (original)
+++ incubator/tuscany/cpp/sca/runtime/core/src/tuscany/sca/model/WSDLOperation.cpp Fri Jul 6 08:19:23 2007
@@ -19,11 +19,19 @@
/* $Rev$ $Date$ */
+#include <map>
+#include <list>
+#include <string>
+#include <sstream>
+
#include "tuscany/sca/model/WSDLOperation.h"
+#include "tuscany/sca/model/WSDLMessagePart.h"
#include "tuscany/sca/util/Logging.h"
#include "tuscany/sca/util/Utils.h"
+#include "tuscany/sca/core/Exceptions.h"
using namespace std;
+using namespace commonj::sdo;
using namespace tuscany::sca::util;
namespace tuscany
@@ -46,16 +54,138 @@
}
- void WSDLOperation::setInputType(const string& inputType)
+ void WSDLOperation::setInputMessageType(const string& inputType)
{
logentry();
- Utils::tokeniseQName(inputType, inputTypeUri, inputTypeName);
+ Utils::tokeniseQName(inputType, inputMessageUri, inputMessageName);
}
- void WSDLOperation::setOutputType(const string& outputType)
+ void WSDLOperation::setOutputMessageType(const string& outputType)
{
logentry();
- Utils::tokeniseQName(outputType, outputTypeUri, outputTypeName);
+ Utils::tokeniseQName(outputType, outputMessageUri, outputMessageName);
+ }
+
+ void WSDLOperation::setInputMessage( commonj::sdo::DataObjectPtr inputMsg )
+ {
+ logentry();
+
+ DataObjectList &partList = inputMsg->getList("part");
+ for( unsigned int i=0; i < partList.size(); i++)
+ {
+ string partUri;
+ string partType;
+ string partName = partList[0]->getCString("name");
+
+ Utils::tokeniseQName(partList[0]->getCString("element"), partUri, partType);
+ WSDLMessagePart part(partName, partType, partUri);
+
+ inputPartMap[partName] = part;
+ }
+ }
+
+ void WSDLOperation::setOutputMessage( commonj::sdo::DataObjectPtr outputMsg )
+ {
+ logentry();
+
+ DataObjectList &partList = outputMsg->getList("part");
+ for( unsigned int i=0; i < partList.size(); i++)
+ {
+ string partUri;
+ string partType;
+ string partName = partList[0]->getCString("name");
+
+ Utils::tokeniseQName(partList[0]->getCString("element"), partUri, partType);
+ WSDLMessagePart part(partName, partType, partUri);
+
+ outputPartMap[partName] = part;
+ }
+ }
+
+ const std::list<std::string> WSDLOperation::getInputMessagePartNames() const
+ {
+ logentry();
+
+ std::list<std::string> inputPartNames;
+
+ PART_MAP::const_iterator iter = inputPartMap.begin();
+ PART_MAP::const_iterator iterEnd = inputPartMap.end();
+
+ for( ; iter != iterEnd; ++iter )
+ {
+ inputPartNames.push_back( iter->first );
+ }
+
+ return inputPartNames;
+ }
+
+ const std::list<std::string> WSDLOperation::getOutputMessagePartNames() const
+ {
+ logentry();
+
+ std::list<std::string> outputPartNames;
+
+ PART_MAP::const_iterator iter = outputPartMap.begin();
+ PART_MAP::const_iterator iterEnd = outputPartMap.end();
+
+ for( ; iter != iterEnd; ++iter )
+ {
+ outputPartNames.push_back( iter->first );
+ }
+
+ return outputPartNames;
+ }
+
+ const WSDLMessagePart&
+ WSDLOperation::getInputMessagePart( const std::string &name ) const
+ {
+ logentry();
+
+ PART_MAP::const_iterator iter = inputPartMap.find( name );
+ if( iter == inputPartMap.end() )
+ {
+ stringstream errMessage;
+ errMessage
+ << "Unable to find input WSDLMessagePart for partName: " << name;
+
+ throwException(SystemConfigurationException, errMessage.str().c_str());
+ }
+
+ return iter->second;
+ }
+
+ const WSDLMessagePart&
+ WSDLOperation::getOutputMessagePart( const std::string &name ) const
+ {
+ logentry();
+
+ PART_MAP::const_iterator iter = outputPartMap.find( name );
+ if( iter == outputPartMap.end() )
+ {
+ stringstream errMessage;
+ errMessage
+ << "Unable to find output WSDLMessagePart for partName: " << name;
+
+ throwException(SystemConfigurationException, errMessage.str().c_str());
+ }
+
+ return iter->second;
+ }
+
+ void WSDLOperation::setInputMessagePart( const std::string &partName,
+ WSDLMessagePart part )
+ {
+ logentry();
+
+ inputPartMap[partName] = part;
+ }
+
+ void WSDLOperation::setOutputMessagePart( const std::string &partName,
+ WSDLMessagePart part )
+ {
+ logentry();
+
+ outputPartMap[partName] = part;
}
} // End namespace model
Modified: incubator/tuscany/cpp/sca/runtime/core/src/tuscany/sca/model/WSDLOperation.h
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/runtime/core/src/tuscany/sca/model/WSDLOperation.h?view=diff&rev=553922&r1=553921&r2=553922
==============================================================================
--- incubator/tuscany/cpp/sca/runtime/core/src/tuscany/sca/model/WSDLOperation.h (original)
+++ incubator/tuscany/cpp/sca/runtime/core/src/tuscany/sca/model/WSDLOperation.h Fri Jul 6 08:19:23 2007
@@ -22,11 +22,14 @@
#ifndef tuscany_sca_model_wsdloperation_h
#define tuscany_sca_model_wsdloperation_h
+#include <map>
+#include <list>
#include <string>
#include "commonj/sdo/SDO.h"
#include "tuscany/sca/export.h"
+#include "tuscany/sca/model/WSDLMessagePart.h"
namespace tuscany
@@ -46,11 +49,6 @@
public:
/**
* Constructor.
- * @param operation The name of the operation.
- * @param soapAction The soapAction associated with this operation
- * in the SOAP binding of the operation.
- * @param endpoint The endpoint address of the operation.
- * @param responseName The name of the response message.
*/
SCA_API WSDLOperation();
@@ -96,17 +94,66 @@
SCA_API void setWrappedStyle(bool wrapStyle) {wrappedStyle = wrapStyle;}
SCA_API bool isWrappedStyle() const {return wrappedStyle;}
- SCA_API void setEncoded(bool enc) {encoded = enc;}
- SCA_API bool isEncoded() const {return encoded;}
+ SCA_API void setInputEncoded(bool enc) {inputEncoded = enc;}
+ SCA_API bool isInputEncoded() const {return inputEncoded;}
+ SCA_API void setOutputEncoded(bool enc) {outputEncoded = enc;}
+ SCA_API bool isOutputEncoded() const {return outputEncoded;}
- SCA_API void setInputType(const std::string& inputType);
- SCA_API const std::string& getInputTypeUri() const {return inputTypeUri;}
- SCA_API const std::string& getInputTypeName() const {return inputTypeName;}
- SCA_API void setOutputType(const std::string& outputType);
- SCA_API const std::string& getOutputTypeUri() const {return outputTypeUri;}
- SCA_API const std::string& getOutputTypeName() const {return outputTypeName;}
-
+ /**
+ * Input Message URI and Name. To get the message part URI and name, you
+ * will have to get the WSDLMessagePart by calling getInputMessagePart()
+ */
+ SCA_API void setInputMessageType(const std::string& inputMessageType);
+ SCA_API const std::string& getInputMessageUri() const {return inputMessageUri;}
+ SCA_API const std::string& getInputMessageName() const {return inputMessageName;}
+
+ /**
+ * Output Message URI and Name. To get the message part URI and name, you
+ * will have to get the WSDLMessagePart by calling getOutputMessagePart()
+ */
+ SCA_API void setOutputMessageType(const std::string& outputMessageType);
+ SCA_API const std::string& getOutputMessageUri() const {return outputMessageUri;}
+ SCA_API const std::string& getOutputMessageName() const {return outputMessageName;}
+
+ // TODO We should add an enum for REQUEST_ONLY, RESPONSE_ONLY, REQUEST_RESPONSE
+ // and a setter/getter. The enum would be checked by getOutputXXX
+
+ /**
+ * Parse a WSDL message represented by an SDO into the input/outputPartMap
+ * @param inputMsg a data object which contains the WSDL message
+ * ie. <wsdl:message name="getAccountReportResponse">
+ * <wsdl:part element="tns:getAccountReportResponse"
+ * name="getAccountReportResponse" />
+ * </wsdl:message>
+ */
+ SCA_API void setInputMessage( commonj::sdo::DataObjectPtr inputMsg );
+ SCA_API void setOutputMessage( commonj::sdo::DataObjectPtr outputMsg );
+
+ /**
+ * Manually set the input/outputPartMap, as opposed to passing in an SDO WSDL message.
+ * Populates the input/outputPartMap, setInput/OutputMessageType must still be called.
+ * @param partName the name of the message part
+ * @param part the message part
+ */
+ SCA_API void setInputMessagePart( const std::string &partName, WSDLMessagePart part );
+ SCA_API void setOutputMessagePart( const std::string &partName, WSDLMessagePart part );
+
+ /**
+ * Return a message part keyed off of the message part name
+ * @param name the message part name
+ * @return the message part in a WSDLMessagePart object
+ */
+ SCA_API const WSDLMessagePart &getInputMessagePart( const std::string &name ) const;
+ SCA_API const WSDLMessagePart &getOutputMessagePart( const std::string &name ) const;
+
+ /**
+ * Get all of the message part names
+ * @return a list of strings, each being a different message part name
+ */
+ SCA_API const std::list<std::string> getInputMessagePartNames() const;
+ SCA_API const std::list<std::string> getOutputMessagePartNames() const;
+
private:
/**
* The name of the operation for use when serializing an
@@ -124,19 +171,21 @@
*/
std::string endpoint;
- bool documentStyle;
+ bool documentStyle;
bool wrappedStyle;
- bool encoded;
- soapVersion soapVer;
-
- std::string inputTypeUri;
- std::string inputTypeName;
-
- std::string outputTypeUri;
- std::string outputTypeName;
-
- commonj::sdo::DataObjectPtr inputMessage;
- commonj::sdo::DataObjectPtr outputMessage;
+ bool inputEncoded;
+ bool outputEncoded;
+ soapVersion soapVer;
+
+ std::string inputMessageUri;
+ std::string inputMessageName;
+
+ std::string outputMessageUri;
+ std::string outputMessageName;
+
+ typedef std::map<std::string, WSDLMessagePart> PART_MAP;
+ PART_MAP inputPartMap;
+ PART_MAP outputPartMap;
};
} // End namespace model
Modified: incubator/tuscany/cpp/sca/runtime/extensions/rest/service/httpd/src/tuscany/sca/rest/ModREST.cpp
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/runtime/extensions/rest/service/httpd/src/tuscany/sca/rest/ModREST.cpp?view=diff&rev=553922&r1=553921&r2=553922
==============================================================================
--- incubator/tuscany/cpp/sca/runtime/extensions/rest/service/httpd/src/tuscany/sca/rest/ModREST.cpp (original)
+++ incubator/tuscany/cpp/sca/runtime/extensions/rest/service/httpd/src/tuscany/sca/rest/ModREST.cpp Fri Jul 6 08:19:23 2007
@@ -58,6 +58,7 @@
#include "tuscany/sca/model/ReferenceType.h"
#include "tuscany/sca/model/WSDLDefinition.h"
#include "tuscany/sca/model/WSDLOperation.h"
+#include "tuscany/sca/model/WSDLMessagePart.h"
#include "tuscany/sca/model/WSDLInterface.h"
#include "tuscany/sca/model/Interface.h"
#include "tuscany/sca/core/SCARuntime.h"
@@ -437,6 +438,8 @@
// Create a default document literal wrapped WSDL operation
if (wsdlNamespace == "")
{
+ WSDLMessagePart inPart(op_name, "", "http://tempuri.org");
+ WSDLMessagePart outPart((op_name+"Response"), "", "http://tempuri.org");
wsdlNamespace = compositeService->getName();
wsdlOperation = WSDLOperation();
wsdlOperation.setOperationName(op_name.c_str());
@@ -445,9 +448,10 @@
wsdlOperation.setSoapVersion(WSDLOperation::SOAP11);
wsdlOperation.setDocumentStyle(true);
wsdlOperation.setWrappedStyle(true);
- wsdlOperation.setEncoded(false);
- wsdlOperation.setInputType(string("http://tempuri.org") + "#" + op_name);
- wsdlOperation.setOutputType(string("http://tempuri.org") + "#" + op_name + "Response");
+ wsdlOperation.setInputEncoded(false);
+ wsdlOperation.setOutputEncoded(false);
+ wsdlOperation.setInputMessagePart(op_name, inPart);
+ wsdlOperation.setOutputMessagePart((op_name+"Response"), outPart);
}
// Create the input DataObject
@@ -646,6 +650,8 @@
// Create a default document literal wrapped WSDL operation
if (wsdlNamespace == "")
{
+ WSDLMessagePart inPart(op_name, "", "http://tempuri.org");
+ WSDLMessagePart outPart((op_name+"Response"), "", "http://tempuri.org");
wsdlNamespace = compositeService->getName();
wsdlOperation = WSDLOperation();
wsdlOperation.setOperationName(op_name.c_str());
@@ -654,9 +660,10 @@
wsdlOperation.setSoapVersion(WSDLOperation::SOAP11);
wsdlOperation.setDocumentStyle(true);
wsdlOperation.setWrappedStyle(true);
- wsdlOperation.setEncoded(false);
- wsdlOperation.setInputType(string("http://tempuri.org") + "#" + op_name);
- wsdlOperation.setOutputType(string("http://tempuri.org") + "#" + op_name + "Response");
+ wsdlOperation.setInputEncoded(false);
+ wsdlOperation.setOutputEncoded(false);
+ wsdlOperation.setInputMessagePart(op_name, inPart);
+ wsdlOperation.setOutputMessagePart((op_name+"Response"), outPart);
}
// Create the input DataObject
@@ -896,6 +903,8 @@
string uriArgs = uri;
// Create a default document literal wrapped WSDL operation
+ WSDLMessagePart inputPart(op_name, "", "http://tempuri.org");
+ WSDLMessagePart outputPart((op_name+"Response"), "", "http://tempuri.org");
wsdlNamespace = compositeService->getName();
wsdlOperation = WSDLOperation();
wsdlOperation.setOperationName(op_name.c_str());
@@ -904,9 +913,10 @@
wsdlOperation.setSoapVersion(WSDLOperation::SOAP11);
wsdlOperation.setDocumentStyle(true);
wsdlOperation.setWrappedStyle(true);
- wsdlOperation.setEncoded(false);
- wsdlOperation.setInputType(string("http://tempuri.org") + "#" + op_name);
- wsdlOperation.setOutputType(string("http://tempuri.org") + "#" + op_name + "Response");
+ wsdlOperation.setInputEncoded(false);
+ wsdlOperation.setOutputEncoded(false);
+ wsdlOperation.setInputMessagePart(op_name, inputPart);
+ wsdlOperation.setOutputMessagePart((op_name+"Response"), outputPart);
// Create the input DataObject
Operation operation(op_name.c_str());
@@ -992,6 +1002,8 @@
string uriArgs = uri;
// Create a default document literal wrapped WSDL operation
+ WSDLMessagePart inPart(op_name, "", "http://tempuri.org");
+ WSDLMessagePart outPart((op_name+"Response"), "", "http://tempuri.org");
wsdlNamespace = compositeService->getName();
wsdlOperation = WSDLOperation();
wsdlOperation.setOperationName(op_name.c_str());
@@ -1000,9 +1012,10 @@
wsdlOperation.setSoapVersion(WSDLOperation::SOAP11);
wsdlOperation.setDocumentStyle(true);
wsdlOperation.setWrappedStyle(true);
- wsdlOperation.setEncoded(false);
- wsdlOperation.setInputType(string("http://tempuri.org") + "#" + op_name);
- wsdlOperation.setOutputType(string("http://tempuri.org") + "#" + op_name + "Response");
+ wsdlOperation.setInputEncoded(false);
+ wsdlOperation.setOutputEncoded(false);
+ wsdlOperation.setInputMessagePart(op_name, inPart);
+ wsdlOperation.setOutputMessagePart((op_name+"Response"), outPart);
// Create the input DataObject
Operation operation(op_name.c_str());
@@ -1082,12 +1095,20 @@
logentry();
DataObjectPtr inputDataObject;
+ string inputTypeUri;
+ string inputTypeName;
try
{
+ // Since its Document wrapped, there will only be one part
+ std::list<std::string> partList = wsdlOperation.getInputMessagePartNames();
+ const WSDLMessagePart &inputMessage =
+ wsdlOperation.getInputMessagePart(partList.front());
+ inputTypeName = inputMessage.getPartType();
+ inputTypeUri = inputMessage.getPartUri();
// Create the input wrapper
- const Type& rootType = dataFactory->getType(wsdlOperation.getInputTypeUri().c_str(), "RootType");
- const Property& prop = rootType.getProperty(wsdlOperation.getInputTypeName().c_str());
+ const Type& rootType = dataFactory->getType(inputTypeUri.c_str(), "RootType");
+ const Property& prop = rootType.getProperty(inputTypeName.c_str());
const Type& inputType = prop.getType();
inputDataObject = dataFactory->create(inputType);
}
@@ -1096,8 +1117,8 @@
try
{
// Create the input wrapper
- const Type& inputType = dataFactory->getType(wsdlOperation.getInputTypeUri().c_str(),
- wsdlOperation.getInputTypeName().c_str());
+ const Type& inputType =
+ dataFactory->getType(inputTypeUri.c_str(), inputTypeName.c_str());
inputDataObject = dataFactory->create(inputType);
}
catch (SDORuntimeException&)
Modified: incubator/tuscany/cpp/sca/runtime/extensions/rest/service/httpd/src/tuscany/sca/rest/RESTServiceProxy.cpp
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/runtime/extensions/rest/service/httpd/src/tuscany/sca/rest/RESTServiceProxy.cpp?view=diff&rev=553922&r1=553921&r2=553922
==============================================================================
--- incubator/tuscany/cpp/sca/runtime/extensions/rest/service/httpd/src/tuscany/sca/rest/RESTServiceProxy.cpp (original)
+++ incubator/tuscany/cpp/sca/runtime/extensions/rest/service/httpd/src/tuscany/sca/rest/RESTServiceProxy.cpp Fri Jul 6 08:19:23 2007
@@ -40,6 +40,7 @@
#include "tuscany/sca/model/WSDLDefinition.h"
#include "tuscany/sca/model/WSDLInterface.h"
#include "tuscany/sca/model/WSDLOperation.h"
+#include "tuscany/sca/model/WSDLMessagePart.h"
#include "model/RESTReferenceBinding.h"
using namespace std;
@@ -108,13 +109,16 @@
RESTReferenceBinding* referenceBinding = (RESTReferenceBinding*)reference->getBinding();
DataFactoryPtr dataFactoryPtr = reference->getComponent()->getComposite()->getDataFactory();
- const char* outputTypeURI = wsdlOperation.getOutputTypeUri().c_str();
- const char* outputTypeName = wsdlOperation.getOutputTypeName().c_str();
+ // Since its Document wrapped, there will only be one message part
+ std::list<std::string> partList = wsdlOperation.getOutputMessagePartNames();
+ const WSDLMessagePart &part = wsdlOperation.getOutputMessagePart(partList.front());
+ const char* outputTypeURI = part.getPartUri().c_str();
+ const char* outputTypeName = part.getPartName().c_str();
- loginfo("WSDLOperation inputType: %s#%s",
- wsdlOperation.getInputTypeUri().c_str(),
- wsdlOperation.getInputTypeName().c_str());
- loginfo("WSDLOperation outputType: %s#%s",
+ loginfo("WSDLOperation input message Type: %s#%s",
+ wsdlOperation.getInputMessageUri().c_str(),
+ wsdlOperation.getInputMessageName().c_str());
+ loginfo("WSDLOperation output part Type: %s#%s",
outputTypeURI,
outputTypeName);
Modified: incubator/tuscany/cpp/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/Axis2Client.cpp
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/Axis2Client.cpp?view=diff&rev=553922&r1=553921&r2=553922
==============================================================================
--- incubator/tuscany/cpp/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/Axis2Client.cpp (original)
+++ incubator/tuscany/cpp/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/Axis2Client.cpp Fri Jul 6 08:19:23 2007
@@ -50,6 +50,7 @@
#include "tuscany/sca/model/WSDLDefinition.h"
#include "tuscany/sca/model/WSDLInterface.h"
#include "tuscany/sca/model/WSDLOperation.h"
+#include "tuscany/sca/model/WSDLMessagePart.h"
using namespace std;
using namespace commonj::sdo;
@@ -152,6 +153,8 @@
{
// Create a default document literal wrapped WSDL operation
+ WSDLMessagePart inputPart(operationName, "", "http://tempuri.org");
+ WSDLMessagePart outputPart((operationName+"Response"), "", "http://tempuri.org");
wsdlNamespace = compositeReference->getName();
wsdlOperation = WSDLOperation();
wsdlOperation.setOperationName(operationName);
@@ -160,9 +163,10 @@
wsdlOperation.setSoapVersion(WSDLOperation::SOAP11);
wsdlOperation.setDocumentStyle(true);
wsdlOperation.setWrappedStyle(true);
- wsdlOperation.setEncoded(false);
- wsdlOperation.setInputType(string("http://tempuri.org") + "#" + operationName);
- wsdlOperation.setOutputType(string("http://tempuri.org") + "#" + operationName + "Response");
+ wsdlOperation.setInputEncoded(false);
+ wsdlOperation.setOutputEncoded(false);
+ wsdlOperation.setInputMessagePart(operationName, inputPart);
+ wsdlOperation.setOutputMessagePart((operationName+"Response"), outputPart);
}
else if (!wsdlOperation.isDocumentStyle() || !wsdlOperation.isWrappedStyle())
{
@@ -328,12 +332,21 @@
DataFactoryPtr dataFactory = compositeReference->getComposite()->getDataFactory();
DataObjectPtr inputDataObject;
+ string inputTypeUri;
+ string inputTypeName;
+
try
{
-
+ // Since its Document wrapped, there will only be one part
+ std::list<std::string> partList = wsdlOperation.getInputMessagePartNames();
+ const WSDLMessagePart &inputMessage =
+ wsdlOperation.getInputMessagePart(partList.front());
+ inputTypeName = inputMessage.getPartType();
+ inputTypeUri = inputMessage.getPartUri();
+
// Create the input wrapper
- const Type& rootType = dataFactory->getType(wsdlOperation.getInputTypeUri().c_str(), "RootType");
- const Property& prop = rootType.getProperty(wsdlOperation.getInputTypeName().c_str());
+ const Type& rootType = dataFactory->getType(inputTypeUri.c_str(), "RootType");
+ const Property& prop = rootType.getProperty(inputTypeName.c_str());
const Type& inputType = prop.getType();
inputDataObject = dataFactory->create(inputType);
}
@@ -342,8 +355,8 @@
try
{
// Create the input wrapper
- const Type& inputType = dataFactory->getType(wsdlOperation.getInputTypeUri().c_str(),
- wsdlOperation.getInputTypeName().c_str());
+ const Type& inputType =
+ dataFactory->getType(inputTypeUri.c_str(), inputTypeName.c_str());
inputDataObject = dataFactory->create(inputType);
}
catch (SDORuntimeException&)
@@ -533,7 +546,7 @@
// Create the Axiom object from the request dataobject
AxiomHelper* axiomHelper = AxiomHelper::getHelper();
request_node = axiomHelper->toAxiomNode(inputDataObject,
- wsdlOperation.getInputTypeUri().c_str(), wsdlOperation.getInputTypeName().c_str());
+ inputTypeUri.c_str(), inputTypeName.c_str());
AxiomHelper::releaseHelper(axiomHelper);
char* str = AXIOM_NODE_TO_STRING(request_node, env);
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=553922&r1=553921&r2=553922
==============================================================================
--- 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 Fri Jul 6 08:19:23 2007
@@ -45,6 +45,7 @@
#include "tuscany/sca/model/ReferenceType.h"
#include "tuscany/sca/model/WSDLDefinition.h"
#include "tuscany/sca/model/WSDLOperation.h"
+#include "tuscany/sca/model/WSDLMessagePart.h"
#include "tuscany/sca/model/WSDLInterface.h"
#include "tuscany/sca/model/Interface.h"
#include "tuscany/sca/core/SCARuntime.h"
@@ -386,6 +387,8 @@
// Create a default document literal wrapped WSDL operation
if (wsdlNamespace == "")
{
+ WSDLMessagePart inPart(op_name, "", "http://tempuri.org");
+ WSDLMessagePart outPart((op_name+"Response"), "", "http://tempuri.org");
wsdlNamespace = compositeService->getName();
wsdlOperation = WSDLOperation();
wsdlOperation.setOperationName(op_name.c_str());
@@ -394,9 +397,10 @@
wsdlOperation.setSoapVersion(WSDLOperation::SOAP11);
wsdlOperation.setDocumentStyle(true);
wsdlOperation.setWrappedStyle(true);
- wsdlOperation.setEncoded(false);
- wsdlOperation.setInputType(string("http://tempuri.org") + "#" + op_name);
- wsdlOperation.setOutputType(string("http://tempuri.org") + "#" + op_name + "Response");
+ wsdlOperation.setInputEncoded(false);
+ wsdlOperation.setOutputEncoded(false);
+ wsdlOperation.setInputMessagePart(op_name, inPart);
+ wsdlOperation.setOutputMessagePart((op_name+"Response"), outPart);
}
else if (!wsdlOperation.isDocumentStyle() || !wsdlOperation.isWrappedStyle())
{
@@ -471,9 +475,15 @@
try
{
+ std::list<std::string> partList =
+ wsdlOperation.getOutputMessagePartNames();
+ const WSDLMessagePart &outPart =
+ wsdlOperation.getOutputMessagePart(partList.front());
// Convert the output DataObject to an Axiom node
- axiom_node_t* outputNode = axiomHelper->toAxiomNode(outputDataObject,
- wsdlOperation.getOutputTypeUri().c_str(), wsdlOperation.getOutputTypeName().c_str());
+ axiom_node_t* outputNode =
+ axiomHelper->toAxiomNode(outputDataObject,
+ outPart.getPartUri().c_str(),
+ outPart.getPartName().c_str());
AxiomHelper::releaseHelper(axiomHelper);
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=553922&r1=553921&r2=553922
==============================================================================
--- 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 Fri Jul 6 08:19:23 2007
@@ -133,13 +133,16 @@
WSReferenceBinding* referenceBinding = (WSReferenceBinding*)reference->getBinding();
DataFactoryPtr dataFactoryPtr = reference->getComponent()->getComposite()->getDataFactory();
-
- const char* outputTypeURI = wsdlOperation.getOutputTypeUri().c_str();
- const char* outputTypeName = wsdlOperation.getOutputTypeName().c_str();
- loginfo("WSDLOperation inputType: %s#%s",
- wsdlOperation.getInputTypeUri().c_str(),
- wsdlOperation.getInputTypeName().c_str());
+ // Since its Document wrapped, there will only be one message part
+ std::list<std::string> partList = wsdlOperation.getOutputMessagePartNames();
+ const WSDLMessagePart &part = wsdlOperation.getOutputMessagePart(partList.front());
+ const char* outputTypeURI = part.getPartUri().c_str();
+ const char* outputTypeName = part.getPartName().c_str();
+
+ loginfo("WSDLOperation input message Type: %s#%s",
+ wsdlOperation.getInputMessageUri().c_str(),
+ wsdlOperation.getInputMessageName().c_str());
loginfo("WSDLOperation outputType: %s#%s",
outputTypeURI,
outputTypeName);
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org